s.a arkadaşlar sorgularda sql kullanıyorum fakat şöle bir durumda sql kullanamadım: cari hesabında borçlandırdığımız bir kayıt var daha bu kasamıza gitmedi alacağımızı girdikten sonra bu kasamıza gidiyor. buraya kadar normal kasaya giden kayıt insert olduğu için, ama ben carihesaptaki kasaya giden kayıt üzerinde değişiklik veya silme yaptığımda aynı kaydı kasada da bulmam ve onuda değiştirmem gerekiyor bunun için cari hesaptaki generator alanı (kno) yu kasa da bir alan açarak (cno) her cari hesabında kasaya gidecek kaydın kno sunu kasadaki cno ya aktırıyorum, düzeltme yapılacağı veya silme yapılacağı zaman locate ile konumlandırıp delete/edit yaptırıyorum, ama bu işi sql ile yapmak istiyorum yani locate yerine sql ile sorgulayıp cno yu bulmak delete/edit sonrada normal edit/delete işlemimi yapmak istiyorum bunu çok defa denedim ama bir türlü locate gibi çalıştıramadım sql aradığı kaydı sadece buluyor diyerlerini yok gibi sayıyor locate ise kayıtların içinde ki aradığım kaydın üzerine konumlanıyor bununla ilgili sanırım ama emin değilim yardımcı olursanız sevinirim.
locate kodum şöle:
selam
Aramada Like diye aratırsanız 266 ad. cevap geliyo karşınıza.Buradaki kodları incelerseniz .sqlde arama nasıl yapılmış fikir sahibi olabilirsiniz. Kolay gelsin.
arkadaşlar bu konuda yardımlarınızı hala bekliyorum selman hocamın dediği gibi aratma yaptım ama yine olmuyor zaten ben normal raporlarımda falan sql kullanıyorum like falan hepsini orda sorun yok işte yukarıda anlattığım işemi yaptırırken istediğim gibi çalışmıyor...
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
.
.
Query1.Sql.Add('Update Tabloadi where Alanadi='+edit1.text);
Query1.ExecSQL;
eğer dataset başka bir şey için açık durmak zorunda ise veya içerisinde order by - like var ise... Locate metodu en mantıklısıdır... Öteki türlü performans açısından düşüş gözükebilir... Zaten order ve like kullanımında hata alacaksın...
ender hocam cevabınız için tşk. ederim, locate sıralı arama yapmıyormu?yani buda yavaş olmaası demek, sql daha hızlı arama yaptığından bu yolu kullanmak istiyorum.
...
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
huseyinert yazdı:ender hocam cevabınız için tşk. ederim, locate sıralı arama yapmıyormu?yani buda yavaş olmaası demek, sql daha hızlı arama yaptığından bu yolu kullanmak istiyorum.
...
Aslında komut biraz daha derin... Locate ve findkey olarak arama yaparsanız bazı sonuçlara da ulaşabilirsiniz...
Normalde Locate index siz aramalarda yapılan bir komuttur... İndexli alanlarda ise findkey kullanılır...
Sql cümlenizde şart kullandınız ise bir AOF yaratılır fakat yine de performans karşılaştırmasını küçük bir test ile yapabilirsiniz...
En son ender_arslanturk tarafından 17 Eyl 2005 01:07 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Sadece şunu belirttim...
1. TDataset sınıfına ait metodlar ile arama var ki mesela Locate,findnearest,Findkey
2. SQL cümlesi ile var...
Şimdi bunlar kullanıldığında belki SQL daha esnek gelebilir fakat performans ıda unutmamak gerekir... KAyıt sayısının çok olduğunu düşünürsek Locate mantıklı geliyor...
enver hocam şimdi benim ilk sorumda anlattığım locate i kullanım şeklim doğrumu?, kno ve id ile locate edip bu şekilde işlem yaptırmam doğru mu? bir sorun çıkarmı? kayıt sayısı arttığında
tşk. ederim
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Selam aslında kayıt fazla olduğunu varsayarsak Locate değil Sql daha hızlıdır.hatta 10binlerce kayıtta Sql ile yapılan aramada %60 daha hızlı dır.
Kolay gelsin.
huseyinert yazdı:enver hocam şimdi benim ilk sorumda anlattığım locate i kullanım şeklim doğrumu?, kno ve id ile locate edip bu şekilde işlem yaptırmam doğru mu? bir sorun çıkarmı? kayıt sayısı arttığında
tşk. ederim
Eğer tek bir kayıta konumlama söz konusu ise tabii ki...
selman yazdı:Selam aslında kayıt fazla olduğunu varsayarsak Locate değil Sql daha hızlıdır.hatta 10binlerce kayıtta Sql ile yapılan aramada %60 daha hızlı dır.
Kolay gelsin.
% 60 çok iddialı oldu kardeş.... Eğer sonuç döndüren cümlelerde birden fazla sonuç gerekiyor ise Select ile tabiiki SQL kullanılmalı...
Merhaba.
Bildiğim kadarıyla Table bileşenlerinin geneli while not eof do döngüsünü kullanarak arama yapıyor..Malumunuzdur ki kayıt sayısı arttıkça özellikle network ortamında, aramalarınızda performans sıkıntısı yaşamanız olasıdır..Bu nedenle sql kullanmanızı salık veririm.
Kolay gelsin.
bLue aLonE yazdı:Merhaba.
Bildiğim kadarıyla Table bileşenlerinin geneli while not eof do döngüsünü kullanarak arama yapıyor..Malumunuzdur ki kayıt sayısı arttıkça özellikle network ortamında, aramalarınızda performans sıkıntısı yaşamanız olasıdır..Bu nedenle sql kullanmanızı salık veririm.
Kolay gelsin.
Normal Table ilede locate vb. kullanabilirsiniz... Query gibi...