|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.07.2008, 19:10 | #1 |
Форумчанин
Регистрация: 18.02.2008
Сообщений: 198
|
помогите исправить запрос
sql:='INSERT INTO NOKIA (JOBCARDNO, SYMP_ID, DEF_ID, WORKS ,'+
' NCODE, NREF1, NPART1, NUSED1, NREF2, NPART2, NUSED2,'+ ' NREF3, NPART3, NUSED3, SWVER, SWVERNEW, HWVER, HWVERNEW) VALUES ('+quotedstr(edit4.Text)+ ' ,'''', '''', ''RT'', '''', '''', '''', ''F'', '''', '''', '+ ' ''F'', '+quotedstr(edit1.Text)+', '''', ''F'', '''', '''', '''', '''')'; затем следует Base.execSQL затем IBTransaction.commit и ошибка |
16.07.2008, 07:57 | #2 |
Форумчанин
Регистрация: 15.06.2008
Сообщений: 271
|
А поподробней - про ошибку?
|
22.07.2008, 19:08 | #3 |
Пользователь
Регистрация: 22.07.2008
Сообщений: 12
|
Запросы в SQL пишутся с использованием знака апостроф ('), а не ковычек.
Например: s,i,sqlstr:string; Запрос будет выглядеть так: sqlstr:='INSERT INTO NOKIA (JOBCARDNO, SYMP_ID) VALUES ('+char(39)+s+char(39)+','+char(39) +i+char(39)+')'; Вот так будет работать... |
25.07.2008, 14:06 | #4 |
Форумчанин
Регистрация: 18.02.2008
Сообщений: 198
|
А у меня и не кавычки, а четыре апострофа!
я их заменил на +Quotedstr('')+ все равно не работает. Только эту ошибку сложно поймать в силу специфики работы программы. Как выскачит, я напишу про нее! |
25.07.2008, 15:24 | #5 |
Пользователь
Регистрация: 01.09.2007
Сообщений: 35
|
Во-первых, могу посоветовать прогнать запрос в конструкторе запросов в IDExpert (или что там есть для работы с БД). Может быть, ошибка в самом запросе. А лучше делай по другому. Связываешь IBQuery с IBIpdateSQL(точно названия не помню, делфы под рукой нет) - просто в свойствах IBQuery. Настраиваешь IBIpdateSQL на нужную таблицу и айбиквери на нее же. Потом добавляешь LookUp-поля для квери. В коде пишешь примерно так:
IBQuery1.Close; IBQuery1.Open; IBQuery1.Edit; IBQuery1JOBCARDNO.Value := 1;//т.е свое значение конечно IBQuery1Symp_ID.Value := 1;// //здесь также продолжаешь присваивать значения для всех полей после этого просто пишешь IBQuery1.Post; Если не ошибаюсь именно так это и делается. Но вообще лучше просто пропиши SQL-скрипт в БД как хранимую процедуру а потом вызывай на нее из делфы комманду с параметрами. будет проще и надежнее. |
25.07.2008, 18:59 | #6 |
Форумчанин
Регистрация: 18.02.2008
Сообщений: 198
|
rubi, Вуду пробовать. Спасибо
Так а если в таблице записи нет воодще, этот код Добавит ее или нет? |
26.07.2008, 14:14 | #7 |
Форумчанин
Регистрация: 18.02.2008
Сообщений: 198
|
Ага я поймал ошибку
с тем запросом что был у меня (где +quotedstr('')+ ) ошибка такая Deadlock update conflicts with concurrent update |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите исправить код | Tanuska___:) | БД в Delphi | 4 | 07.08.2008 17:40 |
Помогите исправить | L_M | Помощь студентам | 3 | 08.06.2008 01:06 |
Помогите исправить | NeiL | Общие вопросы C/C++ | 1 | 31.05.2008 13:31 |
Помогите исправить код | student_63 | Помощь студентам | 5 | 13.12.2007 18:20 |