procedure TFormwlgl.Button2Click(Sender: TObject);
var
Present: TDateTime;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin Present:= Now;
try
if (DBEdit1.Text='')or(length(DBEdit1.Text)>4) or(isNumeric(DBEdit1.Text)=false) then
begin
messageDlg('"记录编号"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit1;
abort;
end;
if (DBEdit2.Text='')or(length(DBEdit2.Text)>50) then
begin
messageDlg('"入库商品"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit2;
abort;
end;
if (DBEdit4.Text='')or(length(DBEdit4.Text)>50) then
begin
messageDlg('"入库规格"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit4;
abort;
end;
if (DBEdit5.Text='')or(length(DBEdit5.Text)>4) or(isNumeric(DBEdit5.Text)=false)then
begin
messageDlg('"入库量"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit5;
abort;
end;
if (DBEdit6.Text='')or(length(DBEdit6.Text)>4) or(isNumeric(DBEdit6.Text)=false)then
begin
messageDlg('"订购单号"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit6;
abort;
end;
if (DBEdit7.Text='')or(length(DBEdit7.Text)>10) then
begin
messageDlg('"经手人"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit7;
abort;
end;
if (DBEdit8.Text='')or(length(DBEdit8.Text)>4) or(isNumeric(DBEdit8.Text)=false)then
begin
messageDlg('"仓库号"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit8;
abort;
end;
// messageDlg(DateTostr(DateTimePicker1.Date),mtWarning,[mbOk],0);
ADOTable1.Append;
with ADOTable1 do
begin
open;
fieldByName('InID').AsInteger:=strToInt(DBEdit1.Text);
fieldByName('LaiID').AsString:=DBEdit2.Text;
fieldByName('LaiDate').AsDateTime:=DateTimePicker1.Date;
fieldByName('LaiStandard').AsString:=DBEdit4.Text;
fieldByName('LaiQuantity').AsInteger:=strToInt(DBEdit5.Text);
fieldByName('OrderNum').AsInteger:=strToInt(DBEdit6.Text);
fieldByName('HandleManID').AsString:=DBEdit7.Text;
fieldByName('LairageNum').AsInteger:=strToInt(DBEdit8.Text);
post;
end
except
on ex:EConvertError do
begin
messageDlg('输入有误,请重试!',mtWarning,[mbOk],0);
end;
end;end;
这是我的源码
点击后总是显示表LairageState的LaiDate不能插入Null
但是我觉得我的DataTimePicker1.Date的值肯定不是null
我还用messageDlg看过DataTimePicker1.Date的值是今天的日期
LaiDate在数据库中的类型为DateTime
请问哪里有问题?怎么解决?
var
Present: TDateTime;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin Present:= Now;
try
if (DBEdit1.Text='')or(length(DBEdit1.Text)>4) or(isNumeric(DBEdit1.Text)=false) then
begin
messageDlg('"记录编号"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit1;
abort;
end;
if (DBEdit2.Text='')or(length(DBEdit2.Text)>50) then
begin
messageDlg('"入库商品"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit2;
abort;
end;
if (DBEdit4.Text='')or(length(DBEdit4.Text)>50) then
begin
messageDlg('"入库规格"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit4;
abort;
end;
if (DBEdit5.Text='')or(length(DBEdit5.Text)>4) or(isNumeric(DBEdit5.Text)=false)then
begin
messageDlg('"入库量"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit5;
abort;
end;
if (DBEdit6.Text='')or(length(DBEdit6.Text)>4) or(isNumeric(DBEdit6.Text)=false)then
begin
messageDlg('"订购单号"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit6;
abort;
end;
if (DBEdit7.Text='')or(length(DBEdit7.Text)>10) then
begin
messageDlg('"经手人"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit7;
abort;
end;
if (DBEdit8.Text='')or(length(DBEdit8.Text)>4) or(isNumeric(DBEdit8.Text)=false)then
begin
messageDlg('"仓库号"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit8;
abort;
end;
// messageDlg(DateTostr(DateTimePicker1.Date),mtWarning,[mbOk],0);
ADOTable1.Append;
with ADOTable1 do
begin
open;
fieldByName('InID').AsInteger:=strToInt(DBEdit1.Text);
fieldByName('LaiID').AsString:=DBEdit2.Text;
fieldByName('LaiDate').AsDateTime:=DateTimePicker1.Date;
fieldByName('LaiStandard').AsString:=DBEdit4.Text;
fieldByName('LaiQuantity').AsInteger:=strToInt(DBEdit5.Text);
fieldByName('OrderNum').AsInteger:=strToInt(DBEdit6.Text);
fieldByName('HandleManID').AsString:=DBEdit7.Text;
fieldByName('LairageNum').AsInteger:=strToInt(DBEdit8.Text);
post;
end
except
on ex:EConvertError do
begin
messageDlg('输入有误,请重试!',mtWarning,[mbOk],0);
end;
end;end;
这是我的源码
点击后总是显示表LairageState的LaiDate不能插入Null
但是我觉得我的DataTimePicker1.Date的值肯定不是null
我还用messageDlg看过DataTimePicker1.Date的值是今天的日期
LaiDate在数据库中的类型为DateTime
请问哪里有问题?怎么解决?
begin
open;
edit;///加个edit试试
fieldByName('InID').AsInteger:=strToInt(DBEdit1.Text);
如果不是数据库结构的问题,试试让DELPHI自己转换?
或
fieldByName('LaiDate').Value := DateTimeToStr(DateTimePicker1.Date);