本人在开发Order模块时,发现了一个问题,tbOrder是一个从表,用Locate查找时无法定位!
后来发现是从表,有一个MasterFields字段关联,是不是这个问题呢?后修改代码,果然可以定位了。代码如下,希望能给大家点帮助!procedure TFrmSearch.FlatSpBtnFindClick(Sender: TObject);
var
  I: integer;
  MFld, MFldStr: string;
begin
  I := FlatComboBox1.ItemIndex;  if ODS.ClassNameIs('TADOTable') and ((ODS as TADOTable).MasterSource <> nil) then  //子表为主从表且为TADOTable时
  begin
//改后代码
    MFld := (ODS as TADOTable).MasterFields;
    MFldStr := (ODS as TADOTable).MasterSource.DataSet.FieldValues[MFld];    if ODS.Locate(MFld+';'+OFields[I], VarArrayOf([MFldStr, FlatEdit1.Text]), [loPartialKey]) then
    begin
      MessageBox(Handle, '资料查找成功!', '操作提示!', MB_OK + MB_ICONINFORMATION);
      if FlatCheckBox1.Checked then Close;
    end
    else
    begin
      MessageBox(Handle, '对不起,找不到你想要的资料,请重新查询!', '操作提示!', MB_OK + MB_ICONINFORMATION);
      FlatEdit1.SetFocus;
    end;
  end else
  begin
//原Locale代码。
    if ODS.Locate(OFields[I], FlatEdit1.Text, [loPartialKey]) then
    begin
      MessageBox(Handle, '资料查找成功!', '操作提示!', MB_OK + MB_ICONINFORMATION);
      if FlatCheckBox1.Checked then Close;
    end
    else
    begin
      MessageBox(Handle, '对不起,找不到你想要的资料,请重新查询!', '操作提示!', MB_OK + MB_ICONINFORMATION);
      FlatEdit1.SetFocus;
    end;
  end;
end;不知各位有没有更好的实现方法,望跟帖告知!