Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
ВнизПочему не проходит вот такой запрос на update...(MySQL, datetime) Найти похожие ветки
← →
vegarulez © (2007-03-12 20:50) [0]Првет Всем Мастерам!
Вопрос таков, есть запрос в БД на insert и на update одной и той же группы полей в бд (Использую MySQL + dbExpress).
insert проходит нормально. А update ругается когда поле, с форматом datetime пытаюсь проапдейтить, на формат записываемого значения.
...
var
x:integer;
...
Begin
Datamodule2.SQLQuery2.SQL.Add("update `Groups` set `product`=""+ trim(E_group_product.Text) +",`edate`=""+ FormatDateTime("YYYY-MM-DD",Group_EDate.Date) +"",`bdate`=""+ FormatDateTime("YYYY-MM-DD",Group_BDate.Date) +"",`datetime`=""+ FormatDateTime("YYYY-MM-DD hh:mm:ss",TDateTime(Now)) +"" where `id`="+ L_Group_Id.Caption +"");
Datamodule2.SQLQuery2.ExecSQL();
Datamodule2.SQLQuery2.SQL.Clear;
Datamodule2.SQLConnection2.Close;
Datamodule2.ClientDataSet8.Refresh;
End;
Begin
Datamodule2.SQLQuery2.SQL.Add("insert into `Groups` (`id`,`product`,`edate`,`bdate`,`datetime`) VALUES(" + L_Group_Id.caption + ",""+ trim(E_group_product.Text) +"",""+ FormatDateTime("YYYY-MM-DD",Group_EDate.Date) +"",""+ FormatDateTime("YYYY-MM-DD",Group_BDate.Date) +"",""+ FormatDateTime("YYYY-MM-DD hh:mm:ss",TDateTime(Now)) +"")");
Datamodule2.SQLQuery2.ExecSQL();
Datamodule2.SQLQuery2.SQL.Clear;
Datamodule2.SQLConnection2.Close;
Datamodule2.ClientDataSet8.Refresh;
End;
Ошибка при апдейте следующего характера:
"No value for parameter "37:53" where id=1"....
А кажется понял почему выдаётся ошибка (пока писал прозрел ;) )....
Дело в том что при апдейте в формате даты стоит символ "
там получается "update... "+ formatedate("... тут получается запрос разорвался...хотя смне его тут разрыватьт не надо...,"TDateTime(Now))+"...
Теперь, тогда перефразирую первоначальный вопрос:
Каким символом маскировать в в данном запросе, в нутри запроса, символ " чтобы это был не символ начала\окончания строки, а символ используемой внутри переменной? Подскажите...
З.Ы. Сечас пока писал попробовал "YYYY-MM-DD hh:mm:ss" - не хотит двойные воспринимать и такие `...` тоже не хотит...
З.Ы.Ы. Странно... а инзерт, так пашет, хотя не должен...
фантастика просто :)))
← →
Knight © (2007-03-12 20:54) [1]Из моего опыта... не знаю как Мастера... но самое лучшее юзать параметры, тогда с типами, кавычками и прочим никаких проблем.
← →
Knight © (2007-03-12 20:56) [2].. кстати, с ними и запросы читабельнее... :)
← →
vegarulez © (2007-03-12 21:04) [3]Это типа так? :
...
var
a:string;
...
a:="YYYY-MM-DD hh:mm:ss";
...
... FormatDateTime(a,...
...
Типа так???
Мысль понята...
но всё же до сути интересно докапаться... как всё же маскировать?
Или может не маскируя можно другие символы использовать... - служебные, для обозначения этого же символа "
← →
Knight © (2007-03-12 21:07) [4]Ага. А кавычка маскируется такой-же кавычкой... или двумя... короче ты потом в них запутаешся... дешевле поставить : ввести параметр и присвоить значения им... :)
← →
vegarulez © (2007-03-12 21:15) [5]не...
ты знаешь ни одной не двумя чот не получается...
понимаю что запутаюсь - в этом с тобой поностью согласен. Переменныые использовать куда лучше.
просто охота уже ради интереса узнать, как правильно замаскировать... чтоб знать так сказать... где собака порылась.
← →
vegarulez © (2007-03-12 21:27) [6]Даже не...
ошибка даже при использовании переменной таже выдаётся...
что то не понимаю я тогжа в чём дело....
ad:="YYYY-MM-DD";
adt:="YYYY-MM-DD hh:mm:ss";
Datamodule2.SQLQuery2.SQL.Add("update `Groups` set `product`=""+ trim(E_group_product.Text) +",`edate`=""+ FormatDateTime(ad,Group_EDate.Date) +"",`bdate`=""+ FormatDateTime(ad,Group_BDate.Date) +"",`datetime`=""+ FormatDateTime(adt,TDateTime(Now)) +"" where `id`="1"");
Всё равно ошибка таже появляется...
"No value for parameter "20:03" where id=1"....
*TDateTime(NOW)=00:20:03
Подскажите где тут я ошибся?
← →
Knight © (2007-03-12 21:39) [7]А мож он :20:30 .. берёт как параметр 38:20 ?
← →
Knight © (2007-03-12 21:40) [8]20:30
← →
vegarulez © (2007-03-12 21:41) [9]чтоб уж быть верным, вот такой использую... в предыдущем посте он не правильный.
Datamodule2.SQLQuery2.SQL.Add("update `Groups` set `product`=""+ trim(E_group_product.Text) +",`edate`=""+ FormatDateTime(ad,Group_EDate.Date) +"",`bdate`=""+ FormatDateTime(ad,Group_BDate.Date) +"",`datetime`=""+ FormatDateTime(adt,TDateTime(Now)) +"" where `id`="+ str_int +"");
← →
Knight © (2007-03-12 21:44) [10]тут кавычка закрыта?
product=""+ trim(E_group_product.Text) +",
← →
vegarulez © (2007-03-12 21:44) [11]Так а почкему тогда hh проходит, а после двоеточия ему mm:ss не нравятся??? Может просто двоеточие как то не так воспринимается???
Ничего не понимаю...
← →
vegarulez © (2007-03-12 21:48) [12]БЛИН!!!
ТОЧНО мать его за ногу... не закрыта... фтом то и вся штука была...
:)))
Закрыл - заработало :)
млин уже совсем ф шары долблюсь.... на 10 раз проверил... :))) прежде чем постить...
Не... надо идти спать ложится... час ночи даёт о себе знать...
Спасибо.
← →
Knight © (2007-03-12 21:48) [13]Вот потому и параметры... никаких кавычек вообще :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.036 c