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

Форум: MS ACCESS

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

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

 
 

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

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

тема: синтаксис SQL!!
 
 автор: П.Полиграфович   (03.03.2009 в 18:18)   личное сообщение
 
 

Нашёл ошибку в SQL- запросе, который при этом работал как надо:

strSQL = "INSERT INTO [table]([field]) " & _
                "VALUES ('" & "text " & var & " (text2" & var2 & ")');"

Вот "правильный" синтаксис

strSQL = "INSERT INTO [table]([field]) " & _
               "VALUES ('" & "text " & var & " (text2" & var2 & ")" & "');"

Результат в обоих случаях: text var (text2 var2)
Т.е. почему: ")" & "') = ")') ??? А может и не баг вовсе..

PS. Захожу на этот замечательный форум, начинаю вникать в свежие темы и забываю, что вообще хотел

  Ответить  
 
 автор: Анатолий (Киев)   (03.03.2009 в 18:34)   личное сообщение
 
 

А что вас смущает?
Конкатенация двух строковых констант ")" & "');" возвращает ")');". Первый вариант у вас был правильней, т.к. - короче.

  Ответить  
 
 автор: П.Полиграфович   (03.03.2009 в 18:45)   личное сообщение
 
 

Но почему принимает такой синтаксис, ведь я мог подразумевать именно текст вида
")');"
(мало ли какие у меня виды на эту скобку ) а потом уже закрывать запрос посредством ;" ??

  Ответить  
 
 автор: FORMAT   (04.03.2009 в 10:43)   личное сообщение
 
 

А можно было написать еще и так
"VALUES ('" & "text " & var & " (text2" & var2 & ")" & " & "' & "" & "');" ну и т.д.
Или же так
"VALUES ('" & "text " & var & " (t'" & "'e '" & "'x '" & "'t2" & var2 & ")" & "');"
В общем, идея ,я думаю, понятна

  Ответить  
 
 автор: Анатолий (Киев)   (04.03.2009 в 10:54)   личное сообщение
 
 

Хочу дать совет.
Запрос INSERT INTO ...VALUES... добавляет одну запись. При этом надо напрягаться с форматом дат, дробных чисел, а также с необходимостью обрамления строк кавычками или апострофами, и дублирования этих символов внутри текста.
Гораздо проще открыть пустой Recordset и добавить запись туда, особенно если нужно добавить несколько записей.

  Ответить  
 
 автор: П.Полиграфович   (04.03.2009 в 20:46)   личное сообщение
 
 

..открыть пустой Recordset..
- это с заведомо невыполнимым условием WHERE False или как?

  Ответить  
 
 автор: Анатолий (Киев)   (05.03.2009 в 10:09)   личное сообщение
 
 


- это с заведомо невыполнимым условием WHERE False или как?


Именно так - WHERE False. В DAO, кроме того, методу OpenRecordset можно передать 3-й аргумент dbAppendOnly.
Собственно, это рекомендуется для ускорения процесса. Можно открывать и весь набор (или отфильтрованный).

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