//userrecord有3列(no自动加1为主键int型,starttime endtime都是8位的datetime型)
with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select top 1 starttime from userrecord where operator='''+UserName+''' order by starttime desc');
    Open;
  end;
  j:=DateTimeToStr(ADOQuery1.FieldValues['starttime']);
//j:=DateTimeToStr(ADOQuery1.FieldByName('starttime'));
//j:=DateTimeToStr(ADOQuery1.Fields[2]);编译不能通过
为什么我的j都是空的?有时还报错说类型转换有问题

解决方案 »

  1.   

    j:=DateTimeToStr(ADOQuery1.FieldValues['starttime']);
    //j:=DateTimeToStr(ADOQuery1.FieldByName('starttime'));
    //j:=DateTimeToStr(ADOQuery1.Fields[2]);编译不能通过你后面都丢掉了.asdatetime啊FIELDBYNAME().ASDATETIME
      

  2.   

    变量:J
    表中的字段operator
    各是什么类型?J是空的话,只能是你的sql语句根本没返回合适的记录。你可以看下AdoQuery1.RecordCount是不是0
      

  3.   

    j:=DateTimeToStr(CheckUserForm.ADOQuery1.FieldByName('starttime').AsDateTime);
      ShowMessage(j);
      ShowMessage(IntToStr(CheckUserForm.ADOQuery1.RecordCount));
    运行后j=1899-12-30 CheckUserForm.ADOQuery1.RecordCount=0 什么原因啊?
      

  4.   

    starttime插入的时候是用DateTimeToStr(Now()),插入没有错误。
     
    j是String
    operator在数据库中是varchar型
      

  5.   

    ADOQuery1.Close;
          ADOQuery1.SQL.Clear;
          ADOQuery1.SQL.Add('insert into userrecord (operator,starttime) values ('''+Edit1.Text+''','''+DateTimeToStr(Now())+''')');
          ADOQuery1.ExecSQL;
          ADOQuery1.Close;
          ADOQuery1.SQL.Clear;
          ADOQuery1.SQL.Add('select max(no) from userrecord');
          ADOQuery1.Open;
          LoginNo:=IntToStr(ADOQuery1.Fields[0].AsInteger);
          ShowMessage(LoginNo);
    ====================================================上面代码是登陆窗体中的
     with CheckUserForm.ADOQuery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select top 1 starttime from userrecord where operator='''+Main.UserName+''' order by starttime desc');
        Open;
      end;
      j:=CheckUserForm.ADOQuery1.FieldValues['starttime'].AsString;
      ShowMessage(j);
      ShowMessage(IntToStr(CheckUserForm.ADOQuery1.RecordCount));
      StatusBar1.Panels[0].Text:='                    '+'¡¾Óû§¡¿£º'+i+'     ';
      StatusBar1.Panels[1].Text:='         '+'¸ÃÕʺÅÉϴεĵǽʱ¼äÊÇ£º  '+j+' ';
    =================================这段是Main中的
      

  6.   

    哦,忘了改了
    j:=CheckUserForm.ADOQuery1.FieldValues['starttime'].AsString;
    改成
     j:=DateTimeToStr(CheckUserForm.ADOQuery1.FieldByName('starttime').AsDateTime);
      

  7.   

    已经解决了,UserName出错了!谢谢各位大哥了,只有这点分,太不好意思了!