Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > немогу внести дату в mysql


Автор: rnycop 4.9.2008, 17:28
перенашу информацию из access в mysql путем вставки инфы из access'a в edit's, а из edit's в mysql...

есть два поля с датами (дата1, дата2)

дата1-------|----дата2----

26.06.2007 |----24.04.2005
14.07.2006 |----14.03.2006
06.03.2004 |----[тут пусто]
...

все вроде и работает, но если ввести пустую дату в mysql - delphi ругается
Код

''' is not valid date'


вот код добавления в mysql

Код

ZQuery1.Close;
ZQuery1.SQL.Text:='INSERT INTO book (data1,data2) VALUES (:prm1,:prm2)';
ZQuery1.ParamByName('prm1').value:=FormatDateTime('yyyy,"-",mm,"-",dd',StrToDate(Edit1.Text));
ZQuery1.ParamByName('prm2').value:=FormatDateTime('yyyy,"-",mm,"-",dd',StrToDate(Edit2.Text));
ZQuery1.ExecSQL;


не знаю как это решить...  smile хоть убейте  smile 

Автор: Данкинг 4.9.2008, 17:37
Цитата(rnycop @  4.9.2008,  18:28 Найти цитируемый пост)
не знаю как это решить... 

Ну дык, try...except поставь.

Автор: pseud 4.9.2008, 18:06
Код

uses
  Variants;
var
  v: Variant;
begin
  ...
  ZQuery1.Close;
  ZQuery1.SQL.Text:='INSERT INTO book (data1,data2) VALUES (:prm1,:prm2)';

  if Edit1.Text = '' then
    v := NULL
  else
    v := FormatDateTime('yyyy,"-",mm,"-",dd',StrToDate(Edit1.Text));
  ZQuery1.ParamByName('prm1').value:= v;

  if Edit2.Text = '' then
    v := NULL
  else
    v := FormatDateTime('yyyy,"-",mm,"-",dd',StrToDate(Edit2.Text));
  ZQuery1.ParamByName('prm2').value:= v;

  ZQuery1.ExecSQL;
  ...
end;

Автор: rnycop 4.9.2008, 18:32
Цитата(Данкинг @ 4.9.2008,  17:37)
Ну дык, try...except поставь.

можно по-подробнее)


pseud

Я пробывал делать так же только без переменой v результат такой же. Вроде как бы работает, но данные не вводятся в базу.



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


сорри...

и спасибо за внимание!!

Автор: Данкинг 4.9.2008, 19:03
Цитата(rnycop @  4.9.2008,  19:32 Найти цитируемый пост)
можно по-подробнее)

Код

try
ZQuery1.Close;
ZQuery1.SQL.Text:='INSERT INTO book (data1,data2) VALUES (:prm1,:prm2)';
ZQuery1.ParamByName('prm1').value:=FormatDateTime('yyyy,"-",mm,"-",dd',StrToDate(Edit1.Text));
ZQuery1.ParamByName('prm2').value:=FormatDateTime('yyyy,"-",mm,"-",dd',StrToDate(Edit2.Text));
ZQuery1.ExecSQL;
except
end;

Соответственно, если одна из дат кривая, то вводиться ничего не будет, но и ошибки не вылезет.

Автор: pseud 5.9.2008, 08:56
Цитата(Данкинг @  4.9.2008,  19:03 Найти цитируемый пост)
Соответственно, если одна из дат кривая, то вводиться ничего не будет, но и ошибки не вылезет.


дата не кривая, а NULL

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)