![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему не проходит вот такой запрос на update...(MySQL, datetime) [D6, XP]
vegarulez © (2007-03-12 20:50:00)Првет Всем Мастерам!
Вопрос таков, есть запрос в БД на 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" - не хотит двойные воспринимать и такие `...` тоже не хотит...
З.Ы.Ы. Странно... а инзерт, так пашет, хотя не должен...
фантастика просто :)))
vegarulez (2007-03-12 21:48:00) [1]БЛИН!!!
ТОЧНО мать его за ногу... не закрыта... фтом то и вся штука была...
:)))
Закрыл - заработало :)
млин уже совсем ф шары долблюсь.... на 10 раз проверил... :))) прежде чем постить...
Не... надо идти спать ложится... час ночи даёт о себе знать...
Спасибо.
Knight (2007-03-12 21:48:00) [2]Вот потому и параметры... никаких кавычек вообще :)
Knight (2007-03-12 21:44:00) [3]тут кавычка закрыта?
product="'+ trim(E_group_product.Text) +',
vegarulez (2007-03-12 21:44:00) [4]Так а почкему тогда hh проходит, а после двоеточия ему mm:ss не нравятся??? Может просто двоеточие как то не так воспринимается???
Ничего не понимаю...
vegarulez (2007-03-12 21:41:00) [5]чтоб уж быть верным, вот такой использую... в предыдущем посте он не правильный.
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:40:00) [6]20:30
Knight (2007-03-12 21:39:00) [7]А мож он :20:30 .. берёт как параметр 38:20 ?
vegarulez (2007-03-12 21:27:00) [8]Даже не...
ошибка даже при использовании переменной таже выдаётся...
что то не понимаю я тогжа в чём дело....
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
Подскажите где тут я ошибся?
vegarulez (2007-03-12 21:15:00) [9]не...
ты знаешь ни одной не двумя чот не получается...
понимаю что запутаюсь - в этом с тобой поностью согласен. Переменныые использовать куда лучше.
просто охота уже ради интереса узнать, как правильно замаскировать... чтоб знать так сказать... где собака порылась.
Knight (2007-03-12 21:07:00) [10]Ага. А кавычка маскируется такой-же кавычкой... или двумя... короче ты потом в них запутаешся... дешевле поставить : ввести параметр и присвоить значения им... :)
vegarulez (2007-03-12 21:04:00) [11]Это типа так? :
...
var
a:string;
...
a:='YYYY-MM-DD hh:mm:ss';
...
... FormatDateTime(a,...
...
Типа так???
Мысль понята...
но всё же до сути интересно докапаться... как всё же маскировать?
Или может не маскируя можно другие символы использовать... - служебные, для обозначения этого же символа '
Knight (2007-03-12 20:56:00) [12].. кстати, с ними и запросы читабельнее... :)
Knight (2007-03-12 20:54:00) [13]Из моего опыта... не знаю как Мастера... но самое лучшее юзать параметры, тогда с типами, кавычками и прочим никаких проблем.