Простои вопрос по VB
-
- Новичок
- Posts: 99
- Joined: 21 May 2002 03:12
- Location: Rostov -> Northbrook,IL
Простои вопрос по VB
У меня несложнии вопрос, но как говорится заклинило.
Почему след. код не работает? Всем заранее спасибо.
With adoRS
db.Execute "DELETE from MyTable WHERE format(ID," & Chr(34) & "mm/dd/yyyy HH:MM:SS" & Chr(34) & ")=" & varD
.MoveNext
If .EOF Then .MoveLast
End With
varD - DateTime variable
Я пробовала без форматирования:
db.Execute "DELETE from tcustomerdocuments WHERE ID =" & varD
Но разници никакои,не работает.
Почему след. код не работает? Всем заранее спасибо.
With adoRS
db.Execute "DELETE from MyTable WHERE format(ID," & Chr(34) & "mm/dd/yyyy HH:MM:SS" & Chr(34) & ")=" & varD
.MoveNext
If .EOF Then .MoveLast
End With
varD - DateTime variable
Я пробовала без форматирования:
db.Execute "DELETE from tcustomerdocuments WHERE ID =" & varD
Но разници никакои,не работает.
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
Re: Простои вопрос по VB
Tala wrote:У меня несложнии вопрос, но как говорится заклинило.
Почему след. код не работает? Всем заранее спасибо.
With adoRS
db.Execute "DELETE from MyTable WHERE format(ID," & Chr(34) & "mm/dd/yyyy HH:MM:SS" & Chr(34) & ")=" & varD
.MoveNext
If .EOF Then .MoveLast
End With
varD - DateTime variable
Я пробовала без форматирования:
db.Execute "DELETE from tcustomerdocuments WHERE ID =" & varD
Но разници никакои,не работает.
Какой-то очень загадочный код... с очень загадочным циклом...
Может опишете что делать надо?
-
- Новичок
- Posts: 99
- Joined: 21 May 2002 03:12
- Location: Rostov -> Northbrook,IL
Re: Простои вопрос по VB
katit wrote:Tala wrote:У меня несложнии вопрос, но как говорится заклинило.
Почему след. код не работает? Всем заранее спасибо.
With adoRS
db.Execute "DELETE from MyTable WHERE format(ID," & Chr(34) & "mm/dd/yyyy HH:MM:SS" & Chr(34) & ")=" & varD
.MoveNext
If .EOF Then .MoveLast
End With
varD - DateTime variable
Я пробовала без форматирования:
db.Execute "DELETE from tcustomerdocuments WHERE ID =" & varD
Но разници никакои,не работает.
Какой-то очень загадочный код... с очень загадочным циклом...
Может опишете что делать надо?
Процедура удаляет вибранную запись:
Sub Delete_Record()
If adoRS.RecordCount > 0 Then
If MsgBox("Are you absolutely sure you want to delete this record?", vbYesNo) = vbYes Then
With adoRS
Dim varD As Date
varD = .Fields("ID")
db.Execute "Delete from MyTable WHERE ID=#" & varD & "#"
.MoveNext
If .EOF Then .MoveLast
End With
Else
MsgBox "Delete operation canceled!", vbInformation
End If
Else
MsgBox "There is no record to delete.", vbInformation
End If
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
Re: Простои вопрос по VB
Tala wrote:Процедура удаляет вибранную запись:
Sub Delete_Record()
If adoRS.RecordCount > 0 Then
If MsgBox("Are you absolutely sure you want to delete this record?", vbYesNo) = vbYes Then
With adoRS
Dim varD As Date
varD = .Fields("ID")
db.Execute "Delete from MyTable WHERE ID=#" & varD & "#"
.MoveNext
If .EOF Then .MoveLast
End With
Else
MsgBox "Delete operation canceled!", vbInformation
End If
Else
MsgBox "There is no record to delete.", vbInformation
End If
Нда... А что за база такая? (В SQL Сервере кавычками выделяется)
И почему надо этот рекордсет использовать ? А не ту-же таблицу рекордсет держит?
-
- Новичок
- Posts: 99
- Joined: 21 May 2002 03:12
- Location: Rostov -> Northbrook,IL
Re: Простои вопрос по VB
katit wrote:Нда... А что за база такая? (В SQL Сервере кавычками выделяется)
И почему надо этот рекордсет использовать ? А не ту-же таблицу рекордсет держит?
Что в SQL кавичками виделяется? DateTime Variable?
Мне нужно удалить строку по ключу, ключ -ето DateTime переменная.
Рекордсет не содержит всю таблицу.
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
Re: Простои вопрос по VB
Tala wrote:Что в SQL кавичками виделяется? DateTime Variable?
Мне нужно удалить строку по ключу, ключ -ето DateTime переменная.
Рекордсет не содержит всю таблицу.
Да, в SQL Сервер дата выделяется кавычками.
Еще надо привести к одинаковому типу.
DELETE FROM A WHERE MyDate = CAST('asasd' AS DateTime)
or better
DELETE FROM A WHERE CAST(MyDate.... ) = 'asasas'
(check CAST for dates in Books online)
Но это не все. Если знаете КАК рекордсет был открыт то лучше делать удаление единичной командой.
-
- Уже с Приветом
- Posts: 183
- Joined: 03 Sep 2003 21:58
- Location: Buenos Aires
Я думаю, что рекордсет открыт таким образом, что независимое удаление row из таблицы, удаляет его и из рекордсета тоже. И после этого уже никаких .MoveNext или .MoveLast не получается. Можно, прежде чем удалять row, переложить нужные данные из рекордсета в массив или локальные переменные. А если уж очень хочется хранить всё в рекордсете, используйте disconnected recordset, который нечувствителен к изменениям в датабазе.
-
- Новичок
- Posts: 99
- Joined: 21 May 2002 03:12
- Location: Rostov -> Northbrook,IL
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
-
- Уже с Приветом
- Posts: 1152
- Joined: 03 Jan 2002 10:01
- Location: NJ --> MA
-
- Новичок
- Posts: 99
- Joined: 21 May 2002 03:12
- Location: Rostov -> Northbrook,IL
GlebZ wrote:Вообще-то в SQLServer дата в таком формате идёт: yyyy-mm-dd hh:mm:ss.000
А что это за FORMAT в SQLServer? Там, вообще-то CONVERT или CAST.
Я сразу не сказала, что данние не на SQL Server, а на Visual Foxpro.
With db
.ConnectionString = "Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB=Documents.dbc;SourceType=DBC;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"
.CursorLocation = adUseClient
.Open
End With
.
.
.
.
adoRS.Open "SELECT * FROM MyTable WHERE customer_number = " & txtCustFields(0).Text & " ORDER BY " & docOrder, db, adOpenKeyset, adLockBatchOptimistic
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
Tala wrote:adoRS.Open "SELECT * FROM MyTable WHERE customer_number = " & txtCustFields(0).Text & " ORDER BY " & docOrder, db, adOpenKeyset, adLockBatchOptimistic
А почему не написать что-то типа:
Connection.Execute "DELETE FROM MyTable WHERE customer_number="....
Оно и удалит то что вы циклом пытаетесь удалить.
Если проблема в локинге то можно закрыть рекордсет и потом открыть обратно.
А с синтаксис для FoxPro не помогу..
-
- Уже с Приветом
- Posts: 13014
- Joined: 10 Jul 2001 09:01
- Location: VA
-
- Уже с Приветом
- Posts: 1152
- Joined: 03 Jan 2002 10:01
- Location: NJ --> MA
-
- Новичок
- Posts: 99
- Joined: 21 May 2002 03:12
- Location: Rostov -> Northbrook,IL
katit wrote:
А почему не написать что-то типа:
Connection.Execute "DELETE FROM MyTable WHERE customer_number="....
Оно и удалит то что вы циклом пытаетесь удалить.
Если проблема в локинге то можно закрыть рекордсет и потом открыть обратно.
А с синтаксис для FoxPro не помогу..
Ето не поможет, потому что customer_number не уникален. Вместо однои записи удалятся все записи для клиента.
-
- Уже с Приветом
- Posts: 23804
- Joined: 05 Jul 2003 22:34
- Location: Брест -> St. Louis, MO
-
- Уже с Приветом
- Posts: 12158
- Joined: 02 Oct 2000 09:01
- Location: Одесса, Укр -> Belmont, CA
Tala wrote:katit wrote:
А почему не написать что-то типа:
Connection.Execute "DELETE FROM MyTable WHERE customer_number="....
Оно и удалит то что вы циклом пытаетесь удалить.
Если проблема в локинге то можно закрыть рекордсет и потом открыть обратно.
А с синтаксис для FoxPro не помогу..
Ето не поможет, потому что customer_number не уникален. Вместо однои записи удалятся все записи для клиента.
Тогда
Dim smth as Long
Dim smth1 as Date
Connection.Execute "DELETE FROM MyTable WHERE customer_number="smth & "AND MyDate = " smth1
My God!... I'm Gorgeous!
-
- Новичок
- Posts: 99
- Joined: 21 May 2002 03:12
- Location: Rostov -> Northbrook,IL
Alex_L wrote:Тогда
Dim smth as Long
Dim smth1 as Date
Connection.Execute "DELETE FROM MyTable WHERE customer_number="smth & "AND MyDate = " smth1
Я не могу понять, где в запросе ошибка в синтаксисе. При запуске я получаю либо Missing operand либо Syntax error.
db.Execute "Delete from MyTable WHERE ID= " & varD
-
- Уже с Приветом
- Posts: 12158
- Joined: 02 Oct 2000 09:01
- Location: Одесса, Укр -> Belmont, CA
Tala wrote:Alex_L wrote:Тогда
Dim smth as Long
Dim smth1 as Date
Connection.Execute "DELETE FROM MyTable WHERE customer_number="smth & "AND MyDate = " smth1
Я не могу понять, где в запросе ошибка в синтаксисе. При запуске я получаю либо Missing operand либо Syntax error.
db.Execute "Delete from MyTable WHERE ID= " & varD
Dim DbCommand as String
DbCommand="Delete from MyTable WHERE ID= " & varD
db.Execute DbCommand
Посмотрите в Debug Mode какое значение имеет DbCommand
Выполните команду в самой базе.
My God!... I'm Gorgeous!
-
- Новичок
- Posts: 99
- Joined: 21 May 2002 03:12
- Location: Rostov -> Northbrook,IL