字段為:outdate   smalldate;
界面上的時間控件名為:DTP
代碼如下:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.ADD('insert PNoNum(PH,YS,SH,GH,S,M,L,XL,XXL,HJJS,MZ,HMZ,BMZ,CPZ,OUTDATE)');
ADOQuery1.SQL.ADD('VALUES ('''+form1.CDH+''','''+form1.ys+''','''+form1.SH+''','''+form1.GH+''',');
ADOQuery1.SQL.ADD(''+form1.S+','+form1.M+','+form1.L+','+form1.XL+','+form1.XXL+','+form1.HJJS+','''+form1.MZ+''','''+form1.HMZ+''','''+form1.BMZ+''','''+form1.CPZ+''','+dtp.Date+') ');
try
ADOQuery1.ExecSQL;
except
showmessage('出錯了,批號件數表數據內容無法保存!') ;
end;
上面的'+dtp.Date+'寫法我覺得是對的,可是編譯時出錯內容如下:
[Error] Unit3.pas(150): Incompatible types: 'String' and 'TDate'
[Fatal Error] Unit2.pas(38): Could not compile used unit 'Unit3.pas'
應如何寫這個變量才可以保存呀?

解决方案 »

  1.   

    建议使用参数传递, 代码如下
      with ADOQuery1 do
      begin
        Close;
        SQL.Clear;
        SQL.ADD('insert PNoNum(PH,YS,SH,GH,S,M,L,XL,XXL,HJJS,MZ,HMZ,BMZ,CPZ,OUTDATE)');
        SQL.Add('Values (:Ph, :YS, :SH, :GH, :S, :M, :XL, :XXL, :HJJS, :MZ, :HMZ, :BMZ, :CPZ, :Outdate)');
        Parameters.ParamByName('ph').Value := form1.cdh;
        Parameters.ParamByName('YS').Value := form1.ys;
        Parameters.ParamByName('SH').Value := form1.SH;
        Parameters.ParamByName('GH').Value := form1.GH;
        Parameters.ParamByName('S').Value := form1.S;
        Parameters.ParamByName('M').Value := form1.M;
        Parameters.ParamByName('XL').Value := form1.XL;
        Parameters.ParamByName('XXL').Value := form1.XXL;
        Parameters.ParamByName('HJJS').Value := form1.HJJS;
        Parameters.ParamByName('MZ').Value := form1.MZ;
        Parameters.ParamByName('HMZ').Value := form1.HMZ;
        Parameters.ParamByName('BMZ').Value := form1.BMZ;
        Parameters.ParamByName('CPZ').Value := form1.CPZ;
        Parameters.ParamByName('Outdate').Value := dtp.Date;
        ExecSQL;
        Close;
      end;
      

  2.   

    楼主把dtp.Date改成datetostr(dtp.Date)就行了
      

  3.   

    XXSingle(水连天) :你好,谢谢你的参与!我发帖之前也是这样写的,但是时间是1900/2/11不知道是为什么!
    postren(小虫):你好,你的方法很好,我试试后,要是没有问题,分数全给你了!开心吧!
      

  4.   

    datetostr(dtp.Date)后能变成‘1900/2/11’?!!除非你选择的日期是1900-2-11