Locate fonksiyonu çalışma mantığı hakkında bilgi talebi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
swanboy2017
Üye
Mesajlar: 3
Kayıt: 02 Kas 2017 12:45

Locate fonksiyonu çalışma mantığı hakkında bilgi talebi

Mesaj gönderen swanboy2017 » 02 Kas 2017 01:00

mevcut tablom da yer alan stok_adi alanı üzerinden konumlanma yapmak istiyorum. Ancak Stok_Adı bilgisi içindeki herhangi bir parçaya göre çalışmalı.
Örnek Stok_Adı : "WINSTON BLUE BOX" kaydına sadece "WIN" yazdığımda konumlanabiliyorum. "BLU" yazdığım da bu kelime parçasının Stok_Adı ALANINDA geçtiği tüm kayıtların data sete yansıtılması mümkün müdür ?

Kullandığım kod, bu hali ile bahse konu ihtiyaca cevap vermiyor. Stok.Locate('S_ADI',stokadi.text, [loCaseInsensitive,loPartialKey]);

Saygılarımla, iyi çalışmalar..

ertank
Üye
Mesajlar: 1156
Kayıt: 11 Eyl 2015 11:45

Re: Locate fonksiyonu çalışma mantığı hakkında bilgi talebi

Mesaj gönderen ertank » 03 Kas 2017 11:25

Merhaba,

TDataSet.Locate() fonksiyonu birebir aynı kaydı bulmak için kullanılır. Sizin istediğiniz anladığım kadarıyla daha çok Filtrelemek. Sadece belirli kısıtlara uyan kayıtları gösterip kullanıcının bunlar içinden seçim yapmasını sağlamak.

Bu durumda ilk önerim SQL sorgusu ile bunu yapmanız olacak. Fikir vermesi açısından aşağıdaki gibi bir sorgu genel olarak istediğinizi yapacaktır.

Kod: Tümünü seç

Query.SQL.Text := 'select * from stok where stok_adi like :parametre';
Query.Params[0].AsString := '%' + AramaAlani.Text + '%';
Query.Open();
Bu mümkün olmadığı hallerde kullandığınız TDataSet bileşeni özelliklerine göre zaten açık olan ve ekranda gösterilen TDataSet içinde filtreleme yapmanız mümkün. Fikir vermesi açısından aşağıdaki gibi bir kod işinizi görecektir.

Kod: Tümünü seç

Query.DisableControls();
try
  Query.Filtered := False;
  Query.Filter := 'stok_adi=%' + AramaAlani.Text + '%';
  Query.Filtered := True;
finally
  Query.EnableControls();
end;
Ancak, filtreleme için kullanılan % karakteri bazı bileşelerde * olabilmektedir. Bu güne kadar sadece bu iki karakter ile filtreleme yapan bileşenlere rastladım. Ancak bilmediğim ve sizin kullandığınız bileşen için farklı bir karakter kullanılıyor olabilir. Dökümanlarını okumanızda fayda var.

swanboy2017
Üye
Mesajlar: 3
Kayıt: 02 Kas 2017 12:45

Re: Locate fonksiyonu çalışma mantığı hakkında bilgi talebi

Mesaj gönderen swanboy2017 » 07 Kas 2017 10:28

Geliştirilmiş olan projedeki kodda kullanılan Locate fonksiyonunda, bilmediğim bir parametre ile konu çözülebilirse, mevcut kodda değişiklik yapmaya gerek kalmayacak diye düşünmüştüm. Bir modül içerisinde Table nesnesi kullanılarak ve dbgrid'e bağlanarak ilerlenmiş ve birçok rutine bu şekilde bağlanmış. Query ile kodun tamamında değişiklik maliyetinden kurtulmak istemiştim. Anlaşılan buna katlanmak gerekecek.
Çok teşekkürler,

ertank
Üye
Mesajlar: 1156
Kayıt: 11 Eyl 2015 11:45

Re: Locate fonksiyonu çalışma mantığı hakkında bilgi talebi

Mesaj gönderen ertank » 07 Kas 2017 11:15

swanboy2017 yazdı:
07 Kas 2017 10:28
Geliştirilmiş olan projedeki kodda kullanılan Locate fonksiyonunda, bilmediğim bir parametre ile konu çözülebilirse, mevcut kodda değişiklik yapmaya gerek kalmayacak diye düşünmüştüm. Bir modül içerisinde Table nesnesi kullanılarak ve dbgrid'e bağlanarak ilerlenmiş ve birçok rutine bu şekilde bağlanmış. Query ile kodun tamamında değişiklik maliyetinden kurtulmak istemiştim. Anlaşılan buna katlanmak gerekecek.
Çok teşekkürler,
Şu ana kadar elinizdeki kodu paylaşmadığınız ve böyle bir düşünceniz olduğunu bildirmediğiniz için alternatif bir öneri sunuldu. Mevcut kodunuzu paylaşabilirseniz ilgili kod üzerinden birşey yapılabilir mi inceleme imkanı olabilir.

Cevapla