Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];




Вниз

Ошибка в запросе! 


Dimonka   (2002-03-06 10:39) [0]

В чем может быть дело?.Я в обработчик для кнопки вставляю запрос
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 10:41) [1]

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



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

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



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

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

Edit1.Text:=s;

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



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

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



Val   (2002-03-06 11:11) [5]

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



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

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;
и в ошибке почему-то показывает на запятую?!



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

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



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

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



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

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



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

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



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

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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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


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);


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



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

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




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.75 MB
Время: 0.031 c
1-157             Alex Dobrushin        2002-03-18 14:57  2002.04.01  
Как показать и распечатать PDF файл?


1-136             Stexen                2002-03-21 23:02  2002.04.01  
Размер Заголовка


3-34              Mike c                2002-03-04 19:53  2002.04.01  
не соединяется с базой IB! :(


3-1               volodya_              2002-03-05 09:17  2002.04.01  
Как в Qreport-е посчитать сумму значений по каждой странице?


1-163             Max                   2002-03-22 08:32  2002.04.01  
Delphi 5 + W2k