Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.11;
Скачать: CL | DM;

Вниз

Кавычки в текстовых полях SQL-запросов   Найти похожие ветки 

 
Егоров А.Н.   (2007-01-25 10:41) [0]

Подскажите, пожалуйста, как написать кавычки в текстовом поле таблицы (Delphi 7, ADO, провайдер VFPOLEDB v.8, базы FoxPro 3.x). Запрос на изменение записи:

with ADOQuery.SQL do
 begin
  Clear;
  Add("Update "C:\table_1.dbf"");
  Add(" set name="ООО ""Предприятие"""");
  Add(" where code="000001"");
 end;
ADOQuery.ExecSQL;

выдает ошибку "Command contains unrecognized phrase/keyword", которая связана с
" set name="ООО ""Предприятие"""".


 
stone ©   (2007-01-25 10:46) [1]


> Егоров А.Н.   (25.01.07 10:41)  

Сколько раз уже обсуждалось - пользуйся параметрами.


 
ЮЮ ©   (2007-01-25 10:54) [2]

Надеюсь твоя прога поддерживает весь известный перечень предприятий? :) Или пользователю тяжело "ООО" набрать? Зачем это в коде программы?

ADOQuery.SQL.Text := "Update "C:\table_1.dbf" set name= :name where code = :code";

ADOQuery.Parameters[0].Value := NameEdit.Text;
ADOQuery.Parameters[1].Value := ...

P.S. Update запрос и само ADO может сформировать и выполнить. Достаточно в TDBEdite исправить значение поля name.


 
zdm ©   (2007-01-25 17:47) [3]


> Егоров А.Н.   (25.01.07 10:41) 

Параметры это лучшее решение. Но если нравятся кавычки поюзай QuotedStr("dddddd")


 
Makcim ©   (2007-01-25 17:48) [4]

Если хочеш что б SQL не видел кавычек используй #39, это таже самая кавычка, только SQL не определит её как конец запроса !


 
Johnmen ©   (2007-01-25 17:51) [5]


> Makcim ©   (25.01.07 17:48) [4]
> Если хочеш что б SQL не видел кавычек используй #39, это
> таже самая кавычка, только SQL не определит её как конец
> запроса !


А какую определит?


 
Makcim ©   (2007-01-25 18:32) [6]

Johnmen ©

""


 
Johnmen ©   (2007-01-25 18:42) [7]


> Makcim ©   (25.01.07 18:32) [6]
> ""


Какую из них?


 
Makcim ©   (2007-01-25 19:40) [8]

Johnmen ©

Используй " .... Всё что находится в рамках кавычек "...." SQL воспринимает как запрос и обрабатывает его сообтветственно. Если же тебе надо вставить в текс запроса значение допустим лейбела выделяется с помощью #39 что б SQL не прореагировал на кавычки.
Приведу текс примера написания запроса в делфе:

      Query1.SQL.Append("SELECT  *"+
     " FROM Query1WHERE ("+"""+"DATE"+"""+
     " BETWEEN "+#39+Data_Qvery1 +#39+" and  "+#39+Data_Qvery2+#39+
     ")");

В этом примере расмотрено использование и #39, и "


 
Makcim ©   (2007-01-25 19:47) [9]

Data_Qvery1
Data_Qvery2

Это переменные типа string


 
Johnmen ©   (2007-01-25 19:52) [10]


> Makcim ©   (25.01.07 19:40) [8]


Спасибо за разъяснение.
От только не могу вспомнить, что за символ #39. Ты не помнишь?


 
Makcim ©   (2007-01-25 20:04) [11]

Johnmen ©  

#39 - "


 
sniknik ©   (2007-01-25 20:54) [12]

Makcim ©   (25.01.07 20:04) [11]
зажми Alt и начинай набирать на доп. раскладке (цифровой квадрат справа у клавиатуры) 3 9 и отпусти Alt, получилось? а что получилось?... ;)


 
Плохиш ©   (2007-01-26 14:17) [13]


> Makcim ©   (25.01.07 19:40) [8]

А теперь внеси в свои Data_Qvery1 или Data_Qvery2 строку Д"Артаньян и удивись, куда тебя твой пример пошлёт.


 
zdm ©   (2007-01-26 14:28) [14]

Можно до бесконечности трясти данную тему, но вывод один ПАРАМЕТРЫ. Если со строковыми переменными еще как-то  можно поизвращаться, то с Датами и временем, да и с вещественным типом, начинается натыкалово на специфику БД. А через параметры, мы всегда разговариваем с БД на одном языке.


 
Makcim ©   (2007-01-26 21:35) [15]

Плохиш ©

Эту ситуация я обошел обычным if else, который убирает ковычку или конвертирует в дос !!!


 
Makcim ©   (2007-01-26 21:35) [16]

zdm ©  

Согласен на все 100 %


 
Makcim ©   (2007-01-26 21:37) [17]

sniknik ©  

Я знаю о этом давно !!!


 
Johnmen ©   (2007-01-26 21:53) [18]


> Makcim ©   (26.01.07 21:35) [15]


Ты чуть-чуть до орешника не дотягиваешь.


 
Olivetti   (2007-01-26 22:10) [19]

Ты чуть-чуть до орешника не дотягиваешь.

Макс, еще немного, еще чуть-чуть!


 
serko ©   (2007-01-26 22:30) [20]


> ЮЮ ©   (25.01.07 10:54) [2]


Можна о параметра по подробнее?

Как я понимаю Параметр нужно сначала создать, потом ему значение присвоить, потом выполнить SQL а аж потом удалить параметр.

Вот можна мои слова перевести в практический пример?


 
Johnmen ©   (2007-01-26 22:42) [21]


> Вот можна мои слова перевести в практический пример?


Твои слова не все подлежат переводу. Только эти - "ему значение присвоить, потом выполнить SQL".
Как перевести? Лучше всего это знает F1 на Params.


 
sniknik ©   (2007-01-26 23:30) [22]

sniknik ©  
> Я знаю о этом давно !!!
о том что #39 = " (Alt + (up описание) тому проверка)
?
а что же ты тогда пишешь

Makcim ©   (25.01.07 20:04) [11]
> Johnmen ©  
> #39 - "
?
какойто другой символ? раз неправильно пишешь значит не знаеш, я сказал как узнать.


 
Anatoly Podgoretsky ©   (2007-01-26 23:33) [23]

Как собака, все понимает, но сказать не может.


 
serko ©   (2007-01-27 00:24) [24]


> Johnmen ©   (26.01.07 22:42) [21]


А как же насчет создать и удалить?

У меня выскакиевает Ошибка что такого параметра не существует...


 
Плохиш ©   (2007-01-27 00:55) [25]


> serko ©   (27.01.07 00:24) [24]

А чем примеры из справки не помогают?



Страницы: 1 вся ветка

Текущий архив: 2007.02.11;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.036 c
15-1169494394
Dmitry_177
2007-01-22 22:33
2007.02.11
не пойму что с жестким диском случилось, но данные пропали


15-1169546778
Сало
2007-01-23 13:06
2007.02.11
Маразм по-харьковски


1-1166610505
ZubrZubr
2006-12-20 13:28
2007.02.11
Component под Component


2-1169132592
Ega23
2007-01-18 18:03
2007.02.11
Как узнать собственный IP?


15-1169331942
PHPdeveloper
2007-01-21 01:25
2007.02.11
Хостинг