Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: стринг в стринге SQL-я. как чередовать кавычки и амперсенды? (A2000)
 
 автор: Loser   (20.06.2008 в 05:53)   личное сообщение
 
 

Вверху было:
Dim Name As String
Dim N As Integer
в эти переменные засунуты какие-то данные, потом идет такая строка:

CurrentDb.Execute "INSERT INTO Temp ( Name, N) SELECT **********, " & N & ";"
где ******** - это:

1. " & Name & " (вроде бы по правилам? рядом стоит другая переменная - с ней все по кайфу)
текст SQL-я разрывается кавычками, вставляемая переменная окружается &-ми.
фиг там был, выдает ошибку:
Syntax error (missing operator) in query expression 'тот текст, что лежит в Name'

2. & Name & (убрал кавычки)
выдает ошибку:
Syntax error (missing operator) in query expression '& Name &'

3. " Name " (убрал &&)
вообще не компилирует, строка красная, выдает Syntax error просто, чему я совершенно не удивляюсь, ибо и не должно.

4. "" & Name & "" (добавил кавычки)
компилирует, выполняет, но в таблицу пишет не 'тот текст, что лежит в Name' а просто
' & Name & '

5. Name (убрал вообще все)
компилирует, но не выполняет, во время выполнения затыкается: "To few parameters. Expected 1."

Ну чем отличается текстовая переменная от числовой, что число не вызывает никаких проблем, а как запихнуть в запрос текстовую - я никак не могу понять? :(
Ну чего эта скотина хочет??

  Ответить  
 
 автор: Scorpi   (20.06.2008 в 06:13)   личное сообщение
 
 

если правильно поняла смысл проблемы, то может стоит окружить текстовую переменную "..." & Chr(34) & тескт.перем & Chr(34) & "..." ?

  Ответить  
 
 автор: osmor   (20.06.2008 в 08:44)   личное сообщение
 
 

один из вариантов уже предложили. см. выше
второй:
строка должна быть заключена в кавычки (двойные или одинарные для sql значения не имеет), но поскольку VBA воспринимает одинарную кавычку как начало комментария, то выбора нет и придется заключать в одинарную.
т.е.
"INSERT INTO Temp ( Name, N) SELECT '" & Name & "', " & N & ";"

Вариант Scorpi, немного лучше, поскольку если в строке которая содержится в переменной Name будет срока содержащая одинарную кавычку при выполнении запроса, в моем варианте, произойдет ошибка.
Самое правильное еще и поверять строку на наличие кавычек
http://hiprog.com/index.php?option=com_content&task=view&id=448

PS. Никогда не называйте свои переменные или объекты зарезервированными словами, ОСОБЕННО NAME
http://hiprog.com/index.php?option=com_content&task=view&id=381

  Ответить  
 
 автор: Loser   (20.06.2008 в 18:43)   личное сообщение
 
 

Scorpi, Osmor:
благодарствую, оба варианта прекрасно отработали. за ссылку на функцию тоже спасибо.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList