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
请问哪里有问题?怎么解决?

解决方案 »

  1.   

    with ADOTable1 do
           begin
           open;
           edit;///加个edit试试
           fieldByName('InID').AsInteger:=strToInt(DBEdit1.Text);
      

  2.   

    fieldByName('LaiDate').Asstring:=datetostr(DateTimePicker1.Date);
    如果不是数据库结构的问题,试试让DELPHI自己转换?
      

  3.   

    fieldByName('LaiDate').Value := DateToStr(DateTimePicker1.Date);

    fieldByName('LaiDate').Value := DateTimeToStr(DateTimePicker1.Date);