大家好:我用TCLIENTDATASET 的LOCATE方法,已返回TRUE,可是想取另一个字段值,却不能取对,记录的指针只是在第一位,有什么好方法定位记录吗?下面是我的代码:procedure Tformlogin.BitBtn1Click(Sender: TObject);
VAR
  user_id:string;//后台数据库中的值
  user_pwd:string;//后台数据库中的值
  struser_id,struser_pwd:string;//表单上的控件的TEXT
  lresult:boolean;
begin
  struser_id := trim(DBCBE_user_id.Text);//这个是表单上的DBCOMBOBOX
  struser_pwd := trim(edt_user_pwd.text);//这个是表单上的EDIT
  lresult := dmmain.cdsT_user.Locate('user_id',struser_id,[]);//
  if lresult=true then
  user_pwd := dmmain.cdsT_user.Fieldbyname('user_pwd').asstring;
  showmessage(user_pwd);//结果显示user_pwd是后台数据表的第一条记录的值,为什么LOCATE没有定位呢?end;
谢谢大家

解决方案 »

  1.   

    刚才用ADO简单测试了一下,可以定位的。
    不知道你这段程序到底哪里有问题。你也可以试试:
    procedure TForm1.fun;
    begin
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('select * from t_user');
      adoquery1.Open;
      adoquery1.Locate('id','system',[]);
      showmessage(adoquery1.fieldbyname('nnote').AsString);
    end;
      

  2.   


    lresult := dmmain.cdsT_user.Locate('user_id',VarArrayOf([struser_id]),[]);
      

  3.   

    ClientDataSet Locate 有问题