Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Проблемы с синтаксисом запроса  [new]
Xpanitel
Member

Откуда:
Сообщений: 17
Доброго времени суток
Подскажите, что у меня не так? В данном коде ругается на строку с запросом на обновление последней записи в таблице Temp:
Private Sub Êíîïêà0_Click()
Dim rcs As DAO.Recordset
Dim dbs As DAO.Database
Dim vName As DAO.Recordset
Dim LRec As Currency
Dim strName As String
Dim strId1 As String
Dim strId2 As String
Dim f As Boolean
    Set dbs = CurrentDb
    Set vName = dbs.OpenRecordset("select T2.Text2 from T2 group by T2.text2")
    Do While Not vName.EOF
    f = True
    strName = vName.Fields("Text2").Value
    
    'CurrentProject.Connection.Execute "Create Table Temp (Name text,  Id1 text, Id2 text)"
    
    Set rcs = dbs.OpenRecordset("select ID from T2 where  text2='" & strName & "';")
    
    Do While Not rcs.EOF
          
          strId1 = 0
          strId2 = 0
          
          If f = True Then
          strId1 = rcs.Fields("ID").Value
          MsgBox (strId1)
          f = False
          CurrentDb.Execute "INSERT INTO Temp ( Name, Id1 ) Values ( '" & strName & "', '" & strId1 & "');"
          Else
          strId2 = rcs.Fields("ID").Value
          MsgBox (strId2)
          CurrentDb.Execute "UPDATE Temp SET Temp.Id2 = '" & strId2 & "' WHERE Temp.Id2 = DLast('" & [id2] & "', '" & Temp & "');"
          f = True
          End If
          rcs.MoveNext
          
    Loop
    vName.MoveNext
    Loop
    Set dbs = Nothing
    Set rcs = Nothing
End Sub
11 дек 06, 11:27    [3517419]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с синтаксисом запроса  [new]
Deminik
Member

Откуда: Новосибирск
Сообщений: 695
Если id в таблице имеет числовой тип, то ковычек в запросе не надо

"UPDATE Temp SET Temp.Id2 = " & strId2 & " WHERE..."
11 дек 06, 11:32    [3517454]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с синтаксисом запроса  [new]
Vsevolod V
Member

Откуда: Россия. Санкт-Петербург
Сообщений: 3194
1. Не забываем про dbFailOnError
2. Что значит "ругается"??
____________________
Памагаю чем магу! -)
11 дек 06, 11:33    [3517459]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с синтаксисом запроса  [new]
Xpanitel
Member

Откуда:
Сообщений: 17
Поле strId2 имеет числовой тип, пробовал убрать кавычки - резльтат тот же.
Ругается дословно: "Приложению 'Microsoft Access' не удается найти поле '|', указанное в выражении."
11 дек 06, 11:40    [3517512]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с синтаксисом запроса  [new]
Vsevolod V
Member

Откуда: Россия. Санкт-Петербург
Сообщений: 3194
1. Посмотреть как запрос отработает в конструкторе запросов
2. Посмотреть как выглядит строка в окне дебаггера
ну и сделать выводы -)
____________________
Памагаю чем магу! -)
11 дек 06, 11:44    [3517557]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с синтаксисом запроса  [new]
Xpanitel
Member

Откуда:
Сообщений: 17
Vsevolod V
1. Посмотреть как запрос отработает в конструкторе запросов
2. Посмотреть как выглядит строка в окне дебаггера
ну и сделать выводы -)
____________________
Памагаю чем магу! -)

1.В конструкторе запросов запрос работает в таком виде:
UPDATE Temp SET Temp.Id2 = "1" WHERE ((Temp.Id2)=DLast("[Id2]","Temp"));
2.Каким образом отследить строку в дебаггере (простите за ламерский вопрос)?
11 дек 06, 11:54    [3517673]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с синтаксисом запроса  [new]
Deminik
Member

Откуда: Новосибирск
Сообщений: 695
Temp.Id2 - какой тип данных ?
11 дек 06, 12:03    [3517754]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с синтаксисом запроса  [new]
Xpanitel
Member

Откуда:
Сообщений: 17
Deminik
Temp.Id2 - какой тип данных ?

Тип данных числовой
11 дек 06, 12:04    [3517764]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с синтаксисом запроса  [new]
Deminik
Member

Откуда: Новосибирск
Сообщений: 695
тады

UPDATE Temp SET Temp.Id2 = 1 WHERE ((Temp.Id2)=DLast("[Id2]","Temp"));
11 дек 06, 12:06    [3517776]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с синтаксисом запроса  [new]
Xpanitel
Member

Откуда:
Сообщений: 17
Deminik
тады

UPDATE Temp SET Temp.Id2 = 1 WHERE ((Temp.Id2)=DLast("[Id2]","Temp"));

Temp.Id2 = 1 взято для примера в построителе запроса, т.к. нужное значение вычисляется при обработке нажатия кнопки.
Строка в коде кнопки иммеет такой вид:
CurrentDb.Execute "UPDATE Temp SET Temp.Id2 = " & strId2 & " WHERE Temp.Id2 = DLast(" & [id2] & ", '" & Temp & "');"
11 дек 06, 12:09    [3517802]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с синтаксисом запроса  [new]
Deminik
Member

Откуда: Новосибирск
Сообщений: 695
и на эту строку
CurrentDb.Execute "UPDATE Temp SET Temp.Id2 = " & strId2 & " WHERE Temp.Id2 = DLast(" & [id2] & ", '" & Temp & "');"

акцесс ругается вот так
"Приложению 'Microsoft Access' не удается найти поле '|', указанное в выражении."

?

а это DLast(" & [id2] & ", '" & Temp & "') надо переписать так DLast("id2","Temp")
11 дек 06, 12:20    [3517902]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с синтаксисом запроса  [new]
Xpanitel
Member

Откуда:
Сообщений: 17
Deminik
и на эту строку
CurrentDb.Execute "UPDATE Temp SET Temp.Id2 = " & strId2 & " WHERE Temp.Id2 = DLast(" & [id2] & ", '" & Temp & "');"

акцесс ругается вот так
"Приложению 'Microsoft Access' не удается найти поле '|', указанное в выражении."

?

а это DLast(" & [id2] & ", '" & Temp & "') надо переписать так DLast("id2","Temp")


Да, все верно, но при записи строки в таком виде:
CurrentDb.Execute "UPDATE Temp SET Temp.Id2 = " & strId2 & " WHERE Temp.Id2 = DLast("Id2","Temp");"
ругается уже компилятор
11 дек 06, 12:26    [3517942]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с синтаксисом запроса  [new]
Deminik
Member

Откуда: Новосибирск
Сообщений: 695
очень странно

а так
CurrentDb.Execute "UPDATE Temp SET Id2 = " & strId2 & " WHERE Id2 = " & DLast("Id2","Temp")

?
11 дек 06, 12:29    [3517967]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с синтаксисом запроса  [new]
Deminik
Member

Откуда: Новосибирск
Сообщений: 695
автор
ругается уже компилятор


а номер ошибки ?
11 дек 06, 12:30    [3517976]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с синтаксисом запроса  [new]
Xpanitel
Member

Откуда:
Сообщений: 17
Deminik
очень странно

а так
CurrentDb.Execute "UPDATE Temp SET Id2 = " & strId2 & " WHERE Id2 = " & DLast("Id2","Temp")

?


Огромное спасибо, вариант
CurrentDb.Execute "UPDATE Temp SET Id2 = " & strId2 & " WHERE Id2 = " & DLast("Id2","Temp")
заработал как надо!
11 дек 06, 12:32    [3517996]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить