locate tin yaptığını sql ile yapmak...
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- huseyinert
- Üye
- Mesajlar: 233
- Kayıt: 19 Nis 2005 06:49
- Konum: Bartın
locate tin yaptığını sql ile yapmak...
merhaba arkadaşlar, yaptığım programda bir çok locate kullandım acaba locate metodu kullanmak yanlış olurmu, kayıt sayısı artınca problem çıkartırmı ilk sorum bu...
ikincisi: locate yerine sql kullanmak istiyorum ama tam anlamıyla yapamadım,
if data.fatura_kurumu.Locate('kno',data.cariharaket.fieldbynam('f_kurum_no').AsFloat,[])=true then begin
bu kullandığık locate bunu sql ile yapmaya çalıştığımda nasıl olur, ben şu şekilde yaptım bana doğru gibi geliyor ama locate gibi çalışmıyor ve işimi görmüyor
data.fatura_kurumu.Close;
DATA.fatura_kurumu.SQL.Clear;
DATA.fatura_kurumu.SQL.Add('select *from fatura_kurumu where kno='+#39+floattostr(data.cariharaket.fieldbyname('f_kurum_no').AsFloat)+#39+'');
DATA.fatura_kurumu.Open;
if not DATA.fatura_kurumu.isEmpty Then begin
ikincisi: locate yerine sql kullanmak istiyorum ama tam anlamıyla yapamadım,
if data.fatura_kurumu.Locate('kno',data.cariharaket.fieldbynam('f_kurum_no').AsFloat,[])=true then begin
bu kullandığık locate bunu sql ile yapmaya çalıştığımda nasıl olur, ben şu şekilde yaptım bana doğru gibi geliyor ama locate gibi çalışmıyor ve işimi görmüyor
data.fatura_kurumu.Close;
DATA.fatura_kurumu.SQL.Clear;
DATA.fatura_kurumu.SQL.Add('select *from fatura_kurumu where kno='+#39+floattostr(data.cariharaket.fieldbyname('f_kurum_no').AsFloat)+#39+'');
DATA.fatura_kurumu.Open;
if not DATA.fatura_kurumu.isEmpty Then begin
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
like kullan
eğer arama kriterini editten alıyorsan bu şekilde kullan..derim
koaly gelsin
Kod: Tümünü seç
query1.sql.add('select * from where aramayapalıcakalan like "'+Edit1.text+'%"');
koaly gelsin
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
ben bunun için şöyle birşey denemiştim belki işine yarar,
bunun için iki sorgu kullandım,,
birinci sorguda benim aradığım kayıttan küçük olanları sorguladım,,
select * from tablo where alan=aradığım şeklinde
bunun sonucunda kaç kayıt olduğunu buldum,,
daha sonra ikinci sorguda bir koşul koymadım,,
yani
select * from tablo order by alan
ve bu sorgudan sonra,, ilk sorgudaki kayıt sayısı+1 e gitmesini söyledim
böyle bir yol izledim ve oldukça iyi çalıştı..
bunun için iki sorgu kullandım,,
birinci sorguda benim aradığım kayıttan küçük olanları sorguladım,,
select * from tablo where alan=aradığım şeklinde
bunun sonucunda kaç kayıt olduğunu buldum,,
daha sonra ikinci sorguda bir koşul koymadım,,
yani
select * from tablo order by alan
ve bu sorgudan sonra,, ilk sorgudaki kayıt sayısı+1 e gitmesini söyledim
böyle bir yol izledim ve oldukça iyi çalıştı..
- huseyinert
- Üye
- Mesajlar: 233
- Kayıt: 19 Nis 2005 06:49
- Konum: Bartın
sağolun
çok teşekkür ederim cevaplarınız için mussimsek hocam locate kayıt sayısı artınca örneğin 10-20 bin olunca hatalı çalışma yaparmı....
ben kullandığım sql sorgusu yazmıştım acaba yanlışmı, normalde arama işlemini yapmasını biliyorum ama burda tam olarak çalışmıyor arama yapsamda bildiğim şeyler çıkıyor, bir ip ucu verebilirmisiniz
çok teşekkür eedrim her iki durumda da....
ben kullandığım sql sorgusu yazmıştım acaba yanlışmı, normalde arama işlemini yapmasını biliyorum ama burda tam olarak çalışmıyor arama yapsamda bildiğim şeyler çıkıyor, bir ip ucu verebilirmisiniz
çok teşekkür eedrim her iki durumda da....
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
hocam niye yanlış arama yapsın. Ama şöyle düşün, 30 bin kaydın var, bana MUSTAFA isimli olanları getir dedin. Locate gider, ilk MUSTAFA'ya konumlanır. Ama 30 bin kayıtta atıyorum 50 tane MUSTAFA varsa, hiç esnek bir yöntem olmadığı ortada.
Ama SQL'le yaparsan mevcut 50 kayıtı bir gridde gösterip, kullanıcının seçmesini sağlayabilirsin.
Kolay gelsin.
Ama SQL'le yaparsan mevcut 50 kayıtı bir gridde gösterip, kullanıcının seçmesini sağlayabilirsin.
Kolay gelsin.
- huseyinert
- Üye
- Mesajlar: 233
- Kayıt: 19 Nis 2005 06:49
- Konum: Bartın
adminin dediği gibi aradığın kayıttan 1 den fazla varsa SQL en iyi çözüm mesela finkey,findnearest gibi yöntemleri index olamdan kullanamazsın BDE için ama locate her iki şakilde çalışır index varsa indexi kullanır index yoksa normal arama yapar.findkey ise seminerlerden birinde olması gerek bu konu hakkında indexi kullandığı için hız farkını görürsün.ama SQl le like ve where komutu ile yaparsın ama 1 den fazla kayıtta hangisine konumlanacak ona sen karar ver..
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
- huseyinert
- Üye
- Mesajlar: 233
- Kayıt: 19 Nis 2005 06:49
- Konum: Bartın
olmuyor arkdaşlar
selam arkadaşlar, locate sıralı arama yapıyor olarak biliyorum, buda kayıt çoğaldıkça işimi zorlaştıracak, sql kullamak istiyorum, her yolu deniyorum ama bi türlü olmuyor,
if data.kasa.Locate('cno',data.cariharaket.fieldbyname('kno').Value,[loPartialKey])=False then begin
bunun yerine
data.kasa.Close;
DATA.kasa.SQL.Clear;
DATA.kasa.SQL.Add('select *from kasa where id=:id and cno='+#39+floattostr(data.cariharaket.fieldbyname('kno').AsFloat)+#39+'');
DATA.kasa.Open;
if DATA.kasa.Fields.Fields[18].AsFloat=0 Then begin
bu sql kodunu kullandım ama olmuyor, bu konuda yardıma çok ihtiyacım var, bekliyorum........
mümkünse kod biçiminde cevap göndeririseniz daha faydalı olacak sanırım
if data.kasa.Locate('cno',data.cariharaket.fieldbyname('kno').Value,[loPartialKey])=False then begin
bunun yerine
data.kasa.Close;
DATA.kasa.SQL.Clear;
DATA.kasa.SQL.Add('select *from kasa where id=:id and cno='+#39+floattostr(data.cariharaket.fieldbyname('kno').AsFloat)+#39+'');
DATA.kasa.Open;
if DATA.kasa.Fields.Fields[18].AsFloat=0 Then begin
bu sql kodunu kullandım ama olmuyor, bu konuda yardıma çok ihtiyacım var, bekliyorum........
mümkünse kod biçiminde cevap göndeririseniz daha faydalı olacak sanırım
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
- huseyinert
- Üye
- Mesajlar: 233
- Kayıt: 19 Nis 2005 06:49
- Konum: Bartın
sağolun
mussimsek hocam teşekkür ederim ama arattım ama olmuyor eğer mümkünse kodu yazabilirmisiniz,kaç gündür uğraşıyorum ama bi türlü olmuyor....
İlginiz için teşekkür ederim...
İlginiz için teşekkür ederim...
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
select * from tablo where field like "%'+aranan+'%"'
arkadasim like komutu bu sekilde calisiyor... eger sirali listelemek istiyorsan order by '+aranan+' asc yada order by '+aranan+' desc ekleyerek te kullanabilirsin...
bastaki ve sondaki % isaretleri örnegin bir kelime arattiginda bu kelimeyi iceren tüm kelimeler listelenir...
eger basta % kullanir ve sonda kullanmazsan ve RA yazarsan cikan sonuclar IKRA, ICRA gibi olacaktir...
eger basta kullanmaz sonda kullanir isen ve RA yazdiginda sonuclar
RAMAZAN, RAHMI gibi olacaktir...
eger hem basta hem sonda kullanir isen ve RA yazdiginda
IRAN, IRAK gibi icinde RA bulunduran kelimeler listelenecektir...
umarim yardimci olabilmisim dir...
kolay gelsin...
arkadasim like komutu bu sekilde calisiyor... eger sirali listelemek istiyorsan order by '+aranan+' asc yada order by '+aranan+' desc ekleyerek te kullanabilirsin...
bastaki ve sondaki % isaretleri örnegin bir kelime arattiginda bu kelimeyi iceren tüm kelimeler listelenir...
eger basta % kullanir ve sonda kullanmazsan ve RA yazarsan cikan sonuclar IKRA, ICRA gibi olacaktir...
eger basta kullanmaz sonda kullanir isen ve RA yazdiginda sonuclar
RAMAZAN, RAHMI gibi olacaktir...
eger hem basta hem sonda kullanir isen ve RA yazdiginda
IRAN, IRAK gibi icinde RA bulunduran kelimeler listelenecektir...
umarim yardimci olabilmisim dir...
kolay gelsin...