不管receivetime是什么值,存入数据库后access显示都是0:00:00,sql explorer显示都是1899-12-30,不解ing
      ADOQueryThread.Close;
      ADOQueryThread.SQL.Clear;
      ADOQueryThread.SQL.Add('select * from '+WaveTablename);
      ADOQueryThread.Open;
      ADOQueryThread.Append;
      with tmpPointWavesharp,ADOQueryThread do
      begin
        FieldByName('PointID').AsInteger:=PointID;
        FieldByName('SWarning').AsFloat:=SWarning;
        FieldByName('VWarning').AsFloat:=VWarning;
        FieldByName('AWarning').AsFloat:=AWarning;
        FieldByName('TWarning').AsFloat:=TWarning;
        FieldByName('SAlarm').AsFloat:=SAlarm;
        FieldByName('VAlarm').AsFloat:=VAlarm;
        FieldByName('AAlarm').AsFloat:=AAlarm;
        FieldByName('TAlarm').AsFloat:=TAlarm;
        FieldByName('Sort').AsString:=tmpPointWavesharp.Sort;
        FieldByName('ReceiveTime').AsDateTime:=Receivetime;
        FieldByName('AnalyseFrequency').AsInteger:=AnalyseFrequency;
        FieldByName('SamplingLength').AsInteger:=SamplingLength;
        TBlobField(FieldByName('WaveData')).LoadFromStream(WaveSharpStream);
      end;
      ADOQueryThread.Post;

解决方案 »

  1.   

    首先
    with tmpPointWavesharp,ADOQueryThread do
    这个写法不是好习惯,容易产生歧义。第二,delphi里面的日期是从1899/12/30开始计算的,
    所以,你的日期显示为1899/12/30说明你写进数据库的是0。你的Receivetime 什么类型,什么内容。
      

  2.   

    receivetime当然是tdatetime类
    我也知道0表示1899-12-30,但我需要解决的是存储问题,可能access+ado与delphi6.0兼容性不好
      

  3.   

    不要用日期型字段,用字符串型,再结合datetostr(now),很方便
      

  4.   

    ADODataSet1.FieldValues['日期'] := DateToStr(Date);
      

  5.   

    我遇到过和你类似的问题,解决了。
    Access的日期时间型的字段值要以#来辩认。倒如:
    insert into table1 (a,rq) values ('123','#2002-11-12#')才正确,否则,无法存入日期时间值。
    你可以在你的程序中加入#。试试:
     
    ADOQueryThread.FieldByName('ReceiveTime').AsDateTime:=
    strtodatatime('#'+datatimetostr(Receivetime)+'#');
      

  6.   

    pazee(耙子) 说的对,是tmpPointWavesharp结构中的receivetime屏蔽了函数的参数receivetime,看来者不是个好写法:-)
      

  7.   

    ADODataSet1.FieldValues['日期'] := DateToStr(Date);
    这个不行吗?我的怎行!!!
      

  8.   

    ADODataSet1.FieldValues['日期'] := DateToStr(Date);应该可以。在SQL语句中时才加 "#"另外好像日期要转换成 m/d/y 的格式,才可以正确设置。DateToStr受制于
    控制面板中的短日期格式。建议用FormatDateTime("m//d//y", date)TDateTime是一实数,时间是小数部分。