tabloda Ayirac belirleyerek coklu arama yapabilme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
dtgb
Üye
Mesajlar: 175
Kayıt: 07 May 2004 10:02

tabloda Ayirac belirleyerek coklu arama yapabilme

Mesaj gönderen dtgb »

Merhaba arkadaşlar;
Veri tabanı olarak access kullanıyorum, formumda edit nesnesi ve db gridim var. veri tabanı baglantısı içinse ado nesnesi ve adotable kullanıyorum.
Sizden yardım istedigim konu ise şu
edit nesnesini kullanarak arama yapıp dbgridde listeletmek istiyorum,
fakat arama işlemimini ( ; )ayıracını kullanarak çoklu arama yapmak istiyorum. mesela edit nesnesine Ali;can;cem yazdıgımda hem alileri hem canları heme cemleri dbgridde görmek istiyorum konu ile ilgili bilgisi olan arkadaşların yardımlarını bekliyorum.
Kolay gelsinnn...
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Mrb; kodu test etmedim ama çalışması lazım.

Kod: Tümünü seç

function ExLocate(const DataSet:TDataSet;const Alanlar:String;Degerler:String;const Options: TLocateOptions=[]):Boolean;
 function HarfSay(const S:String;const Harf:Char=';'):Integer;
 var i:Integer;
 begin
   if S='' then Result:=-1 else begin
     Result:=0;
     for i:=Length(S) downto 1 do
      if S[i]=Harf then Inc(Result);
   end;
 end;
var Deger:Variant; i,idx,n:Integer;  S:String;
begin
  n:=HarfSay(Degerler);
  //if HarfSay(Alanlar)<>n then {Alanlar ve değerler arasında uyuşmazlık var}
  if n=0 then Result:=DataSet.Locate(Alanlar,Degerler,Options)
  else if n>0 then begin
    Deger:=VarArrayCreate([0,n],varVariant);
    idx:=0;
    while Degerler<>'' do begin
      i:=Pos(';',Degerler);
      if i>0 then begin
        S:=Copy(Degerler,1,i-1);
        Delete(Degerler,1,i);
      end else begin
        S:=Degerler;
        Degerler:='';
      end;
      Deger[idx]:=S;
      inc(idx);
    end;
    Result:=DataSet.Locate(Alanlar,Deger,Options);
    VarClear(Deger);
  end else Result:=False;
end;
Kolay gelsinz.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla