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..
Locate fonksiyonu çalışma mantığı hakkında bilgi talebi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 3
- Kayıt: 02 Kas 2017 01:45
Re: Locate fonksiyonu çalışma mantığı hakkında bilgi talebi
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.
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.
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.
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();
Kod: Tümünü seç
Query.DisableControls();
try
Query.Filtered := False;
Query.Filter := 'stok_adi=%' + AramaAlani.Text + '%';
Query.Filtered := True;
finally
Query.EnableControls();
end;
-
- Üye
- Mesajlar: 3
- Kayıt: 02 Kas 2017 01:45
Re: Locate fonksiyonu çalışma mantığı hakkında bilgi talebi
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,
Çok teşekkürler,
Re: Locate fonksiyonu çalışma mantığı hakkında bilgi talebi
Ş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.swanboy2017 yazdı: ↑07 Kas 2017 11: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,