代码如下:
procedure TForm8.ComboBox1Change(Sender: TObject);
var
i:integer;
begin
  form1.adoquery1.Recordset.MoveFirst;
  i := ComboBox1.ItemIndex;
  form1.adoquery1.recordset.Move(i,0);
  edit1.Text := form1.adoquery1.Recordset.Fields.Item[1].Value;
  edit2.Text := form1.adoquery1.Recordset.Fields.Item[2].Value;
  edit3.Text := form1.adoquery1.Recordset.Fields.Item[3].Value;
end;end.
当执行该事件后提示:could not convert variant fo type (Null)into type (string)随便那一个字段里面的内容有是空就会报这个错.请高手指教一下该怎么改!谢谢了!!

解决方案 »

  1.   

      edit1.Text := form1.adoquery1.Recordset.Fields.Item[1].asstring;
      edit2.Text := form1.adoquery1.Recordset.Fields.Item[2].asstring;
      edit3.Text := form1.adoquery1.Recordset.Fields.Item[3].asstring;
      

  2.   

    谢谢各位的解答!但不行的,早试过,提示:undeclared identifier :'asstring'运行都运行不了!
      

  3.   

    edit1.Text := form1.adoquery1.Fields[1].asstring; 
    edit2.Text := form1.adoquery1.Fields[2].asstring; 
    edit3.Text := form1.adoquery1.Fields[3].asstring; 
      

  4.   

    谢谢kernelj 解答,但这样改了后出现个问题,在运行combobox后edit1.text 里面出现了edit2.text的值.
    edit2.text 里面出现了edit3.text的值.
    edit3.text 里面出现了我数据库里面的最后一个字段里面的值,(最后一个字段是不需要显示的)完了在运行combobox,就没动静了!!
      

  5.   

    那你调整下 Fields 的下标就可以了。 Fields 下标是从 0 开始的。adoquery1.Fields[0] 是你查询数据项的第一个。
      

  6.   

    调整过了,如果调整后,运行combobox 就什么反映也没了.
      

  7.   

    你的事件是写在combobox的onchange里的,仔细检查你的代码,
      

  8.   

    ComboBox 只是控制的你数据集的游标,指向的记录。跟字段的显示没有关系的哦。
      

  9.   

    我的代码是写在combobox的onchange里的,如果代码那里有错,请指点下,我才学没多久,看不出方向了...谢谢了!!