sqldataset1.Close;
  sqldataset1.CommandType:= ctquery;
  sqldataset1.CommandText:='SELECT * FROM DM_CZRY';
  sqldataset1.open;
是否可以?

解决方案 »

  1.   

    注意,计数是从0开始的,不是从1开始,所以才会出现field name missing的现象.
      

  2.   

    哦,我有sqldataset1.Close;
      这个语句,没有copy上来,在帮忙看看
      

  3.   

    to : menliwxj(有缘)
    改成下面的也同样的错误 
    for  i :=0 to sqldataset1.RecordCount do
        begin
          for j:=0 to sqldataset1.FieldCount do
            begin
            stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString;
            sqldataset1.Next;
            end ;
        end;
      

  4.   

    sqldataset1.CommandType:= ctquery;
      sqldataset1.CommandText:='SELECT * FROM DM_CZRY';
      sqldataset1.open;
      for  i :=0 to sqldataset1.RecordCount -1 do
        begin
          for j:=0 to sqldataset1.FieldCount-1 do
            begin
            stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString;
            sqldataset1.Next;//该条语句应该在此for语句外面
            end ;
           sqldataset1.Next;//在这里才对.
        end;
      

  5.   

    for j:=1 to sqldataset1.FieldCount do
            begin
            stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString;
            sqldataset1.Next;
            end ;        sqldataset1.Next;这一句没必要要的
      for  i :=1 to sqldataset1.RecordCount do
        begin
          for j:=1 to sqldataset1.FieldCount do
            begin
            stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString;
            sqldataset1.Next;
            end ;
        end;当I=sqldataset1.FieldCount肯定出错, 
    for  i :=1 to sqldataset1.RecordCount do
    应改为 for  i :=0 to sqldataset1.RecordCount-1 do
      

  6.   

    改成]for  i :=0 to sqldataset1.RecordCount-1 do
        begin
          for j:=0 to sqldataset1.FieldCount-1 do
            begin
            stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString;
            sqldataset1.Next;
            end ;
        end;
      

  7.   

    to fyje(冬原) 
    改成你那个样子,也同样的错误
      

  8.   

    看你的循环变量i,j了吗?
    你跟踪一下确保它们从0开始,
    我以前遇到了个麻烦,后来发现borland delphi的for循环竟然倒着来。
    没办法就用while.
    后来borland的人告诉我那是delphi的一个bug.
    就是for i:=0 to 10 do的时候i首先是11或10然后是9、8、7……。
      

  9.   

    for  i :=1 to sqldataset1.RecordCountdo
        begin
          for j:=1 to sqldataset1.FieldCount do
            begin
            stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString;
            
            end ;
          sqldataset1.Next;
        end;依上面改过的再试试看.
      

  10.   

    而且我遇到的现象只有循环中使用了
    构造类型才出现,就是
    for i:=0 to 10没有关系。
    但for i:=0 to stringlist.count - 1do
    就有问题了,
    后来发现for i:=0 to 构造类型对象.count都有问题。
      

  11.   

    我在sqldataset1.open;下面加了下面的句子;
    showmessage(string(sqldataset1.RecordCount));
    结果显示不出结果,出错提示仍然是field name missing
      

  12.   

    to Rainsea(飞龙在天) :
     没有法子追踪阿
      

  13.   

    我估计与sqldataset1.RecordCount有关,救灾sqldataset1.RecordCount出现的地方,出现错误提示
      

  14.   

    你在循环体前定义一个变量如irecordcount;
    irecordcount := adoquery1.recordcount;
    然后在循环中用irecordcount代替adoquery1.recordcount试试便知,如果问题仍然存在,我想就是你机子的问题了.
      

  15.   

    是不是那个参数什么的错了,我用的数据库是sybase11。9,02,,我估计我根本就得不到sqldataset1.RecordCount,或者说得到的sqldataset1.RecordCount本身错了,只要一碰到sqldataset1.RecordCount,就出现错误提示
      

  16.   

    你是否动态添加字段或索引等,如果是就清空
    如:sqldataset1.IndexDefs.Clear;
    sqldataset1.Fields.Clear;
      

  17.   

    真是怪了,以前没有用这个组建,一般都是用ado,现在第一次用,就出了这个毛病,大家帮帮忙阿
      

  18.   

    for  i :=1 to sqldataset1.RecordCount do
    begin
      StringGrid1.ColCount:=sqldataset1.FieldCount;
      for j:=1 to sqldataset1.FieldCount do
      begin
        stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString;
        sqldataset1.Next;
      end ;
    end;
      

  19.   

    根本就走不到这个程序这里,以碰到sqldataset1.RecordCount 就出错
      

  20.   

    要不这样吧:
    sqldataset1.CommandType:= ctquery;
    sqldataset1.CommandText:='SELECT * FROM DM_CZRY';
    sqldataset1.open;
    StringGrid1.ColCount:=sqldataset1.FieldCount;
    StringGrid1.RowCount:=sqldataset1.RecordCount;
    for  i :=1 to sqldataset1.RecordCount do
    begin
      for j:=1 to sqldataset1.FieldCount do
      begin
        stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString;
        sqldataset1.Next;
      end ;
    end;
      

  21.   

    sqldataset1.FieldCount,这个没有错误,但是sqldataset1.RecordCount就出现错误
      

  22.   

    查了一下资料,是ADO控件不能用recordcount这个属性来获得记录条数,你可以改成while not eof来实现.
      

  23.   

    问题在这里
            sqldataset1.Next;    <----
            end ;
    修改成这样:
            end ;
         sqldataset1.Next;