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

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

Вставка записи в таблицу базы [D7, MSSQL]


r9000 ©   (2004-05-25 12:11:00) 

Добрый день!

Вы не могли бы помочь, пожалуйста. Строковая переменная получает
значение r10=#0#0#0#0#0 и при попытке вставить это значение в таблицу базы:
   s3:='insert into Ats_snmp(P_entindex)';
   s3:=s3+'VALUES ('''+r10+''') ';
выдает ошибку так как получаетс r10=''#0#0#0#0#0'' и запрос его невоспринимает. Каким образом вставить это значение в таблицу?
Может его нужно как-то преобразовать?


paul_k   (2004-05-25 16:12:00) [1]


> r9000   (25.05.04 14:39) [9]
> Даже s3:=s3+' VALUES ('+QuotedStr(r10)+') ' видится в Query
> Analyzer как VALUES (''#0#0#0#0#0''), а позиция Pos(#39,R10)
>  равна Inaccassible value

разжевывать надо?

1.
if Pos(#39,R10)>0 //(проверка есть ли апострофы)
then s3:=s3+' VALUES ('+r10+') '
else s3:=s3+' VALUES ('+QuotedStr(r10)+') ';

2.
//Удаляем все апострофы
while pos(#39,r10)>0 do
  delete(R10,pos(#39,r10),1)
s3:=s3+' VALUES ('+QuotedStr(r10)+') ';

3. пишем запрос с параметром
 InsQuery.sql.text:='insert into Ats_snmp(P_entindex) VALUES (:InputValue)';
и читаем как работать с параметрами


Sandman25+1   (2004-05-25 14:58:00) [2]

Следующий пост.
Может, пора уже начать использовать параметр? Тем более, что используется MSSQL


ega23   (2004-05-25 14:56:00) [3]

Попробуй так:  s3:=s3+' VALUES ('+Chr(39)+r10+Chr(39)+') ';
А вообще: r10 у тебя строка или что?


r9000   (2004-05-25 14:39:00) [4]

Даже s3:=s3+' VALUES ('+QuotedStr(r10)+') ' видится в Query Analyzer как VALUES (''#0#0#0#0#0''), а позиция Pos(#39,R10)  равна Inaccassible value


paul_k   (2004-05-25 14:00:00) [5]

А проверить?
Pos(#39,R10) чему равно?

s3:=s3+' VALUES ('+QuotedStr(r10)+') ';
пробовал писать? вместо множественных апострофов?


r9000   (2004-05-25 13:52:00) [6]

Ошибка в Query Analyzer выдается на insert into Ats_snmp(P_entindex) VALUES (''#0#0#0#0#0''), а не на insert into Ats_snmp(P_entindex) VALUES ('#0#0#0#0#0'), а получить VALUES ('#0#0#0#0#0') мне пока не удается. В r10=#0#0#0#0#0 значение без кавычек.


paul_k   (2004-05-25 13:48:00) [7]

1. проверить все-таки что приходит в R10.
если там значение #0#0#0#0 то  s3:=s3+' VALUES ('+QuotedStr(r10)+') ';
если там ''#0#0#0#0''  то  s3:=s3+' VALUES ('+r10+') ';


ega23   (2004-05-25 13:36:00) [8]

По апострофу одному убрать


bushmen   (2004-05-25 13:35:00) [9]

>то выдается ошибка

Что за ошибка? И что в Query Analyzer выдает на insert into Ats_snmp(P_entindex) VALUES ('#0#0#0#0#0') ?


r9000   (2004-05-25 13:30:00) [10]

Да нет просто в переменную помещается  r10=#0#0#0#0#0(это значение приходит с оборудования) мне его нужно поместить в таблицу базы, и если делать s3:='insert into Ats_snmp(P_entindex)';
  s3:=s3+'VALUES ('''+r10+''') ';
то выдается ошибка. Посмотрев s3 вижу insert into Ats_snmp(P_entindex)VALUES (''#0#0#0#0#0''), а не '#0#0#0#0#0' для нормальной отработке запроса. Что делать?


paul_k   (2004-05-25 13:28:00) [11]

Перечень стандартных вопросов при отладке подобного кода:
S3 какое значение принимает?
Из Ouery Analiser какой результат  выполнения этой строки?
Если написать
 s3:=s3+' VALUES ('+QuotedStr(r10)+') ';
что изменится?
Внутри R10 есть апострофы?

Следующим постом предложат использовать запрос с параметром


ega23   (2004-05-25 13:15:00) [12]

В смысле, с кавычками общитался?


Наверх

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