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

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

Ошибка в запросе! [D6, IB6.x]


Dimonka ©   (2002-03-06 10:39:00) 

В чем может быть дело?.Я в обработчик для кнопки вставляю запрос
Query3.Sql.Add
("Insert into Zarplata (Name,Normohours,Price)values (""+DBEdit1.Text+"","+DBEdit2.Text+","+DBEdit3.Text+")");
и получаю сообщение General SQL error!Token unknown line-1 char 55 ,


Val   (2002-03-06 17:00:00) [1]

>Dimonka (06.03.02 16:38)
а не вводится ли у вас в TEdit значение в виде nn ,? Поскольку, если вы будете использовать как разделитель запятую а не точку, то в текст запроса вместо одного дробного попадает 2 целых значения-вот вам и лишний параметр.


Malder   (2002-03-06 16:55:00) [2]

сделай типа того:


Query3.Sql.Add("Insert into Zarplata (Name,Normohours,Price values (:p1,:p2,:p3)");
query3.params.Fieldbyname("p1").asString:=DBedit1.text;
query3.params.Fieldbyname("p2").asFloat:=strtofloat(DBedit2.text);
query3.params.Fieldbyname("p3").asFloat:=strtofloat(DBedit3.text);


можешь прислать мне ящик пива =) что-то у меня настроение хорошее
И вот что. Если в скромном коллективе программистов найдутся девушки - то с НАСТУПАЮЩИМ ВАС !


asafr   (2002-03-06 16:51:00) [3]

Malder, прежде чем долго смеяться, ты сам не должен говорить глупостей, типа "двойные кавычки вообще в Delphi не применяются". Val тебе правильно ответил (к слову, это относится не только к Local SQL).
Я, просто заметил еще одну вещь:
(""+DBEdit1.Text+"","+DBEdit2.Text+","+DBEdit3.Text+")")-> здесь в одинарных кавычках есть символ закрывающейся скобки ")", а вот здесь
("Insert into Zarplata (Name,Normohours,Price) values
-> символа открывающейся скобки "(" нет.


roottim   (2002-03-06 16:42:00) [4]

если так...
1. передавай через параметры
2. посмотри у себя в стандартах дробный разделитель... хз все может


Dimonka   (2002-03-06 16:38:00) [5]

Malder-Когда я выполняю этот запрос в ISQL он прекрасно работает,и параметры я задаю именно в двойных кавычках-ты не думай,что я полный чайник и думаю что это 2 апострофа. А насчет полей-первое текстовое,остальные float.Походу из-за этого вся бойда.Когда из DBEdita считывается дробное значение возникает ошибка из-за лишней запятой.


Val   (2002-03-06 16:37:00) [6]

хм, не обратил внимания, что он работает с IB :(


Val   (2002-03-06 16:28:00) [7]

>Malder © (06.03.02 16:18)
эту кавычку, он передает в текст SQL-запроса, как символ, а в Local SQL она играет ту же роль, что и одинарная. Никакого отношения к Delphi она не имеет.


Malder   (2002-03-06 16:25:00) [8]

Хочу добавить, что в Interbase тоже применяются одинарные, а не двойные кавычки. Так что пиши в своем тексте вместо двойных кавычек две одинарных...
P.S. Блин, вот развели то бодягу про кавычки =)


Malder   (2002-03-06 16:18:00) [9]

Читая форум, начинаю смеяться все сильнее...
...values (""+DBEdit1...У тебя здесь идет двойная кавычка, а потом одинарная (апостроф). А нужно ведь ТРИ апострофа подряд, двойные кавычки вообще в Delphi не применяются.......
хех... блин...
P.S. Ты наверное думаешь, что двойная кавычка - это как две одинарных =)


Val   (2002-03-06 14:54:00) [10]

>fnatali © (06.03.02 14:28)
думаю, нормочасы передаются в виде числа, и не нужно брать его в кавычки в тексте запроса, если поле в таблице не строковое(но это все наши гадания на кофейной гуще).

>Dimonka
А вообще чтобы избежать подобных несостыковок лучше пользоваться параметрами. См. TQuery.ParamByName


fnatali   (2002-03-06 14:28:00) [11]

>Val © (06.03.02 12:32)
В данном случае, он передаёт DBEdit2. Text, и для формирования именно текстазапроса и нужны двойные кавычки,имхо. Пусть попробует - по-моему, дело всё-таки в них.


Val   (2002-03-06 12:32:00) [12]

>fnatali © (06.03.02 12:00)
двойные кавычки в первом параметре потому, что он текстовый, а оcтальные наверноенет, но он не говорит о их типе, не дает текст(не делфийский код, а текст) запроса..


fnatali   (2002-03-06 12:00:00) [13]

(""+DBEdit1.Text+"",""+DBEdit2.Text+"",""+DBEdit3.Text+"")
Проверь кавычки внимательно - у тебя то есть двойные, то нет...


asafr   (2002-03-06 11:18:00) [14]

Какой тип полей Normohours,Price в таблице?


Dimonka   (2002-03-06 11:17:00) [15]

procedure TForm1.BInsert1Click(Sender: TObject);
With DataModule1 do
begin
Query3.Edit;
Query3.Close;
Query3.SQL.Clear;
Query3.Sql.Add
("Insert into Zarplata (Name,Normohours,Price) values (""+DBEdit1.Text+"","+DBEdit2.Text+","+DBEdit3.Text+")");
Query3.ExecSQL;
Query3.Close;
Query3.SQl.Clear;
Query3.SQL.Add("Select * from Zarplata");
Query3.Open;
end;
end;
и в ошибке почему-то показывает на запятую?!


Val   (2002-03-06 11:11:00) [16]

проверьте текст на пробелы,
попробуйте его в SQL-Explorer
приведите текст здесь


Dimonka   (2002-03-06 11:07:00) [17]

Проверил-запрос правильный,а при выполнении такая же фигня


MetallAdm   (2002-03-06 10:55:00) [18]

s:String;
s:="Insert into Zarplata (Name,Normohours,Price)values (""+DBEdit1.Text+"","+DBEdit2.Text+","+DBEdit3.Text+")"

Edit1.Text:=s;

сделай так и посмотри правильно ли у тебя получается запрос
может где ковычка или запятая лишняя


Dimonka   (2002-03-06 10:49:00) [19]

Он почему-то выпендривается на запятую после DBEdit1.Text,но она же должна присутстврвать?!


Val   (2002-03-06 10:41:00) [20]

пробел перед values, скобка после и кавычки проверьте


Наверх

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