sql ile arama

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

sql ile arama

Mesaj gönderen selimr »

arkadaşlar bir tablo üzerinde arama yapmak istiyorum
fakat arama yaparken LOCATE veya FINDNE.. gibi yöntemleri kullanamıyorum..

yani bir tabloda

select ADI,SOYADI,.. FROM TABLO WHERE ADI=EDIT1.TEXT;

şeklinde arama yapınca normal olarak o kaydı buluyor ve sadece o kaydı
listeliyor..

benim istediğim o kaydın üzerine konumlanması fakat diğerlerinide göstermesi,, yani locatenin yaptığı gibi..

Locate kullanamıyorum çünkü delphi ile değil LAZARUS ile bunu yapmak istiyorum..
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

bu kodla bütün kayıtları getirmesi lazım zaten....
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

burta tümünü getirmiyorki,, sadece edit1 in içindeki yazilani ADI alanında arıyor ve sadece onu getiriyor..
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

bu aramayla sadece editte yazılanı getirir..LAZARUS ben bunu ilk defa duydum..artı daha değşik aramalrda yaparsın ama delphiyle değil demişsin..delphiyle deseydin yöntem çok..

kolay gelsin
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

Kardeş kullandığın dil önemli değil. Önemli olan sorgunun SQL ile yapılması. Sonuçları nerde almaya çalışıyorsunuz. Sadece ilk sonuç olduğunu nerde görüyorsunuz. Sorgu yaptığınız datasete bi DBgrid ya da benzer bi nesne bağlayıp görüntülemeye çalışın.

Kolay gelsin...
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

ase
yukardaki kod sadece edit tedi ne eşit olan kayıt veya kayıtları getirir..

koşul koymuşuz.. where ADI=EDIT1.TEXT

yani tablonun tamamını değil edit e uyan kısmını getirir..

,,,

vedatkaba
Lazarus GPL lisansı ile geliştirilen bir proje, yine delpli benzeri bir ide si var
ve dil olarak ta yine obj.pascal kullanıyor..

Benim istediğim sorgu sonucu tümünü listelemek fakat sorgudaki koşula uyan kaydın üzerine konumlanmak..

Fakat burda locate ve find yöntemlerini kullanamıyorum.. Çünkü lazarus desteklemiyor..
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

Pardon kusura bakma ben yanlış anladım soruyu. Şimdi daha doğru anladım ama deneme yapma imkanım yok şu an makinamda delphi kurulu değil. Sen şüzme yapmadan SQL kullanmak istiyorsun ama böyle bişey hiç denemedim. Ama kulağa da hoş geliyor. Bi denemek lazım. İnşallah bu akşam bi uğraşayım.
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

Kod: Tümünü seç

table1.first

while (not table1.eof)  and (table1.fieldbyname('aranan').value <> edit1.text) do
begin
 table1.next
end;
Bunun gibi bir yöntem pek pratik değil ama yapmak istediğin şeyi sql ile yapman mümkün değil gibi görünüyor....
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba ;

aynı soruyu 1 kaç hafta evvel bende sormuştum.cevaplardan tam anlamıyla tatmin olmamıştım.
viewtopic.php?t=7625
böyle bi şey gerçekten yapılıyorsa
'SQL ile kayda konumlanmak' çok güzel olur.locate ile olası iş değil çok kayıtta.dünyanın belleğini taksanız nafile :)

iyi günler...........
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

ali,

kayıt sayısı fazla olduğunda tek tek taramak çok uzun zaman alabilir..
o yüzden pek kullanışlı değil..

benim düşündüğüm şöyle bir yöntem, ama nasıl yapılır bilemiyorum..

tablonun önce koşula uyan şekilde sorgulama yaptıktan sonra, bulunan kaydı işaretlemek ve daha sonra koşulsuz tüm kayıtları açacak şekilde sorguyu yenilemek ve daha önce işaretlenen kayda gitmek..

hani aynı tablo üzerinde bookbark falan yapmak gibi..

ama nasıl olur içinden çıkamıyorum..
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

arkadaşlar sorunumu şu şekilde çözdüm,,

{sorgu1 --> select SOYADI,ADI,... FROM TABLO ORDER BY SOYADI }

{sorgu2 --> select COUNT(*) AS KAYSAY FROM TABLO WHERE ADI<:PR1}

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
kayit,ekayit :integer;
begin

   ekayit:=sorgu1. RecNo;

   sorgu2. Close;
   sorgu2. Params. ByNameAsString['PR1']:=edit1. Text;
   sorgu2. Open;

   kayit:=sorgu2. FieldByName('kaysay'). AsInteger + 1;
   sorgu1. MoveBy(kayit-ekayit);
   sorgu1. RecNo:=kayit;
end;
Cevapla