ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=dbase 5.0;Persist Security Info=False;Data Source=c:\data';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from ss.dbf');
ADOQuery1.Open;
 for i:=1 to  dbgrid1.DataSource.DataSet.RecordCount do
       begin
     //  ss:=ADOQuery1.fieldbyname('c_dm').AsString;
         
       showmessage(ss);
       adoquery1.next;
       end;上面是部分代码,编译后,只在win98的机器上说找不到c_dm字段,但是在dbgrid中已经从dbf文件中读出了全部数据,就是在//部分取不出数据????于是我更新了MDAC2.8还是不行??
急死了...........

解决方案 »

  1.   

    不是是段写错了?把所有的字段放到select语句中看行吗?
      

  2.   

    不用select * from 而用select 字段名1,字段名2,……
      

  3.   

    循环从0开始到ADOQuery1.RecordCount-1结束
      

  4.   

    同意xixuemao(吸血猫):
    最后一跳空记录里,当然找不到你要的字段了
      

  5.   

    在ADOQuery1.Open;前加上
    ADOQuery1.ExecSQl呢,试试
      

  6.   

    不是fieldbyname的原因
    你在
    for i:=1 to  dbgrid1.DataSource.DataSet.RecordCount do
           begin
         //  ss:=ADOQuery1.fieldbyname('c_dm').AsString;
             
           showmessage(ss);
           adoquery1.next;
           end;
    前面加一个
    ADOQuery1.frist;试试!
      

  7.   

    我测试了,没问题啊
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      try
        ADOQuery1.SQL.Clear;
        ADOQuery1.SQL.Add('select * from PhoneInfo');
        ADOQuery1.ExecSQL;
        adoquery1.Open;
        showmessage(ADOQuery1.fieldbyname('NO').AsString);
      except
        showmessage('database error');
      end;
    end;
      

  8.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
     I: integer;
    begin
      try
        ADOQuery1.SQL.Clear;
        ADOQuery1.SQL.Add('select * from PhoneInfo');
        ADOQuery1.ExecSQL;
        adoquery1.Open;
        for I:= 0 to adoquery1.RecordCount do begin
        showmessage(ADOQuery1.fieldbyname('NO').AsString);
        adoquery1.Next;
        end;
      except
        showmessage('database error');
      end;
    end;
      

  9.   

    解决了...如果是select * 不行,改成a1项,a2项就没问题了......(在98下)