我程序是这样的,在labelframe框架中调用formpatient,在formpatient里写入数据库,然后在labelframe中定位刚输入的记录,并把它的各字段值赋给labelframe的各字段,可得不到结果?请各位高手指点,感激不敬!
procedure TlabelFrame.BitBtn3Click(Sender: TObject);
begin
  application.CreateForm(tformpatient,formpatient);
  formpatient.ShowModal;
  formpatient.Free;
  if adoquery2.Active then adoquery2.Close;
  adoquery2.SQL.Clear;
  adoquery2.SQL.Add('select * from tblpatient ');
  adoquery2.Refresh;
  edit6.Text:=adoquery2.fields[0].value;
  edit2.Text:=adoquery2.fields[1].value;
  edit5.Text:=adoquery2.Fields[2].Value;
  edit3.Text:=inttostr(adoquery2.Fields[4].Value);
  edit15.Text:=datetostr(adoquery2.Fields[3].Value);
  edit9.Text:=adoquery2.Fields[5].Value;
  edit11.Text:=adoquery2.Fields[6].Value;
  edit12.Text:=adoquery2.Fields[7].Value;
  edit13.Text:=adoquery2.Fields[8].Value;
  edit8.Text:=adoquery2.Fields[9].Value;
  edit14.Text:=adoquery2.Fields[10].Value;
  memo3.Text:=adoquery2.Fields[11].Value;
  memo4.Text:=adoquery2.Fields[12].Value;
  edit7.Text:=edit6.Text;
end;

解决方案 »

  1.   

    adoquery2.Refresh;
    改为
      adoquery2.Open;
    试一下
      

  2.   

    谢谢zzq4823,我试过了,还不行!
    后来我又想把edit6.Text:=adoquery2.fields[0].value;和后面的几行换成edit6.Text:=adoquery2.fieldbyname().value;以便更直观的看,可是写到 adoquery2.时后面没有自动提示,我想是错误了。
    还请指点,感谢了!
      

  3.   

    formpatient.Free;取消这行
    adoquery2.Refresh;改成:adoquery2.Open;
    还有就是赋值的时候,注意类型
      

  4.   

    adoquery写到:=右边时,FieldByName()方法是不会自动列出来的,可能是delphi的一个小bug;
    把refresh换成open就应该可以了
      

  5.   

    adoquery2.Open;
    edit6.Text := uery2.parameters[0].value;
    ......
      

  6.   

    adoquery2.Fields[].Value改为adoquery2.fieldbyname('字段名').value
    试试