ADOQuery1把所有记录选择出来~~然后ADOQuery1.Locate()

解决方案 »

  1.   

    to di2000(一只菜鸟):
      find 语句怎么用呀,能给个例子吗?
    to airhorse(编程至尊宝)、tikkypeng(千两狂死郎):
     我也想用locate,只是我的条件好多,需要其中好几个字段的值都得满足条件才行,我不知道该如何来写,能帮帮忙吗?  
      

  2.   

    这是一个由用户动态指定定位条件的定位记录的例子。参考一下吧,虽然方法很土,但是能解决实际问题。function TfmTruckRegisteLocate.ShowX: Boolean;
    var
      sFields: string;
      bFind: Boolean;
      saValues: array of string;
    begin
      with TfmTruckRegisteLocate.Create(nil) do
      try
        Result := ShowModal = mrOK;
        bFind := False;
        saValues := nil;
        if Result then
        begin
          sFields := '';      if chkC_LicenceId.Checked then
          begin
            sFields := sFields + ';' + 'C_LicenceId';
            SetLength(saValues, High(saValues) + 2);
            saValues[High(saValues)] := edtC_LicenceId.Text;
          end;      if chkInstallBillId.Checked then
          begin
            sFields := sFields + ';' + 'InstallBillId';
            SetLength(saValues, High(saValues) + 2);
            saValues[High(saValues)] := edtInstallBillId.Text;
          end;      if chkInstallUnit.Checked then
          begin
            sFields := sFields + ';' + 'InstallUnit';
            SetLength(saValues, High(saValues) + 2);
            saValues[High(saValues)] := edtInstallUnit.Text;
          end;      if chkInstallDate.Checked then
          begin
            sFields := sFields + ';' + 'InstallDate';
            SetLength(saValues, High(saValues) + 2);
            saValues[High(saValues)] := FormatDateTime('YYYY-MM-DD', dtpInstallDate.DateTime);
          end;       if chkRegisterId.Checked then
          begin
            sFields := sFields + ';' + 'RegisterId';
            SetLength(saValues, High(saValues) + 2);
            saValues[High(saValues)] := edtRegisterId.Text;
          end;
          
         if sFields <> '' then Delete(sFields, 1, 1);
          //if Locate('FuncID;GroupID', VarArrayOf([iFuncID,iOldGroupID]), []) then
          if High(saValues) = 0 then
            bFind := dmDTMMain.adoA_Register.Locate(sFields, saValues[0], [loCaseInsensitive, loPartialKey])
          else if High(saValues) = 1 then
              bFind := dmDTMMain.adoA_Register.Locate(sFields, VarArrayOf([saValues[0], saValues[1]]), [loCaseInsensitive, loPartialKey])
          else if High(saValues) = 2 then
              bFind := dmDTMMain.adoA_Register.Locate(sFields, VarArrayOf([saValues[0], saValues[1], saValues[2]]), [loCaseInsensitive, loPartialKey])
          else if High(saValues) = 3 then
            bFind := dmDTMMain.adoA_Register.Locate(sFields, VarArrayOf([saValues[0], saValues[1], saValues[2], saValues[3]]), [loCaseInsensitive, loPartialKey])
          else if High(saValues) = 4 then
            bFind := dmDTMMain.adoA_Register.Locate(sFields, VarArrayOf([saValues[0], saValues[1], saValues[2], saValues[3], saValues[4]]), [loCaseInsensitive, loPartialKey]);      if not bFind  then ShowInfo(Handle, '记录没找到!');
        end;  finally
        Free;
      end;
      

  3.   

    to GipsyCN(德尔菲):
        非常谢谢你为我提供的这个函数,给了我很好的提示,我用数组方法实现了;
    to di2000(一只菜鸟)、tikkypeng(千两狂死郎)、airhorse(编程至尊宝):
        也非常谢谢你们,只是我刚开始学,水平很低,希望以后能得到你们更多的帮助,可以吗?
    再次衷心的感谢以上各位朋友:)