Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL & dbExpress


J_S ©   (2002-12-18 14:36:00) 

Народ кто-нибудь сталкивался с такой вот вещью:
используя компоненты dbExpress, программно формирую запрос:

ServiceInsert.SQL.Clear;
ServiceInsert.SQL.Add("INSERT INTO ");
ServiceInsert.SQL.Add(TableName);
ServiceInsert.SQL.Add(" (");
ServiceInsert.SQL.Add(field);
ServiceInsert.SQL.Add(") VALUES ("");
ServiceInsert.SQL.Add(DBEdit1.EditText);
ServiceInsert.SQL.Add("")");

(Результат: INSERT INTO TableName (field) VALUES ("value"))

после выполнения запрос значение в указанную таблицу вставляется, но немного не такое как мне нужно - вместо value поле появляется ||value||. Без двойных ковычек запрос естессно не работает:). А параметризированный запрос типа
INSERT INTO: table (:field) VALUES (:value) Дельфи не пропускает. В чем дело?


FreeLancer   (2002-12-18 15:46:00) [1]

А.... Я понял в чем проблема :-)

> ServiceInsert.SQL.Add(") VALUES ("");
> ServiceInsert.SQL.Add(DBEdit1.EditText);
> ServiceInsert.SQL.Add("")");

Это нужно делать одним методом ADD:
ServiceInsert.SQL.Add(") VALUES (""+DBEdit1.EditText+"")");
Иначе получается, что добавляется #10#13 значение #10#13
Сочетание #10#13 и дает нам ||


J_S   (2002-12-18 15:08:00) [2]

2 FreeLancer
:)))...
я тоже нашла решение!


k:=ServiceInsert.SQL.Count;
for i:=0 to k-1 do s:=s+ServiceInsert.SQL.Strings[i];
ServiceInsert.SQL.Clear;
ServiceInsert.SQL.Add(s);

что вообщем-то одно и тоже:))


FreeLancer   (2002-12-18 14:43:00) [3]

Wow, да я же автору сайта ответил!


FreeLancer   (2002-12-18 14:41:00) [4]


ServiceInsert.SQL.Clear;
ServiceInsert.SQL.ADD("INSERT INTO " + TableName + " (" + field + ") VALUES (" + #39 + DBEdit1.EditText + #39 + ")";


Наверх

Титульная страница Поиск, карта сайта Написать письмо