Alan içinde arama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
dray
Üye
Mesajlar: 4
Kayıt: 24 Oca 2017 12:11

Alan içinde arama

Mesaj gönderen dray »

Merhaba Arkadaşlar;
ADO Database içinde bir alanda arama yapmak istiyorum. İlgili alanı baştan sona arayıp, bulunmayan en küçük rakamı bir Edit e yazdırmak istiyorum.
şimdiden teşekkürler.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Alan içinde arama

Mesaj gönderen ertank »

Merhaba,

TAdoQuery.Locate() fonksiyonu ile alanlarda arama yapmanız mümkün. Bu fonksiyon sizin için tüm kolon bilgisini baştan sona arar.

Aşağıdaki şekilde kullanıldığı zaman *sadece* birebir aynı değeri bulursa imleç ilgili kayıt üzerine gider.

Kod: Tümünü seç

TAdoQuery.Locate('alanadi', 'aranandeger', []);
Aşağıdaki şekilde kullanıldığı zaman imleç birebir aynı değer *veya* en yakın değere gider.

Kod: Tümünü seç

TAdoQuery.Locate('alanadi', 'aranandeger', [loPartialKey, loCaseInsensitive]);
Kullandığınız database veya tablo yapısı ile ilgili hiç bilgi vermemişsiniz. Hangi kolon içinde arama yapmak istediğinizi bilmiyoruz. Bu durumda "Bulunamayan en küçük değere gitmek" ile ne istediğiniz de pek net anlaşılmıyor. Bir ihtimal yukarıdaki ikinci örneğin yaptığı işi anlatmaya çalışıyorsunuz gibi.
dray
Üye
Mesajlar: 4
Kayıt: 24 Oca 2017 12:11

Re: Alan içinde arama

Mesaj gönderen dray »

hocam cevap için teşekkürler. Kusura bakmayın yeterli olacağını sanmıştım.
ADOTable1 MSaccess veritabanına bağlı. Bu tablomda Sayılar diye bir alanım var. Bu alan içinde örneğin.
ADOTable1sayilar
5
23
6
1
18
4
şeklinde veriler var. Yapmak istediğim Bir butona basınca bu alan taransın ve bu alanda bulunmayan en küçük rakam bir Edite yazılsın istiyorum. yani bu örneğe göre bu rakam 2. Bunun bulunup Edite yazılması lazım. Umarım anlatabilmişimdir. Saygılar...
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Alan içinde arama

Mesaj gönderen ertank »

Aşağıdaki gibi bir kod işinizi görebilir:

Kod: Tümünü seç

TAdoQuery.SQL.Text := 'select min(sayilar) from tabloadi';
TAdoQuery.Open();
Edit1.Text := TAdoQuery.Fields[0].AsString;
TAdoQuery.Close();
dray
Üye
Mesajlar: 4
Kayıt: 24 Oca 2017 12:11

Re: Alan içinde arama

Mesaj gönderen dray »

arkadaşlar yardımlarınız için teşekkürler.Ancak benim istediğim sayilar alanındaki en küçük sayıyı bulmak değil. Tam tersi bu alanda bulunmayan, sıfırdan büyük en küçük sayı nedir amacım o sayıyı tespit etmek.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Alan içinde arama

Mesaj gönderen greenegitim »

sayıları listelediniz diyelim çıkan sonuç

6
9
11
17
12

sizin istediğiniz programın bu listeden kaç sonucunu vermesi gerekiyor?

sıfırdan büyük en küçük tam sayı her zaman 1 dir
amacınız arada bu boş kalan sayıları doldurmak mıdır küçükten başlayarak?
Mücadele güzelleştirir!
dray
Üye
Mesajlar: 4
Kayıt: 24 Oca 2017 12:11

Re: Alan içinde arama

Mesaj gönderen dray »

sayın greenegitim, tabiki sıfırdan büyük en küçük tamsayı herzaman "1" dir. sizin verdiğiniz örnekte tabiki bu "1". Ancak "1" benim sayilar alanımda varsa o zaman aradığım "1" olmaz; örneğin "2" yoksa "2" olur, "2" de varsa "3" yoksa, 3 olur. Neden anlatamadığımı bende anlamadım. yukarıda verdiğim örnekte herşey açık aslında. sayilar alanında OLMAYAN en küçük sayıyı arıyorum arkadaşlar. bu sayıyı bir edite yazdırıp tespit etmem gerekiyor. örnek
Sayilar
1
2
3
5
11
23
burada arama yaptığımda Edit'e "4" rakamını yazması lazım
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Alan içinde arama

Mesaj gönderen greenegitim »

Kod: Tümünü seç

select  trz
from 
       (select  trz.id, (select count(*) from tablo where id<=trz.id) as  trz 
        from  tablo as  trz) as trz2 
left join tablo on trz2.trz = tablo.id
where tablo.id is null order by trz asc

tablo yazan yere kendi tablo isminizi yazın
Kaynak:
http://www.access-sql.com/Konu-aradaki- ... ari-bulmak
Mücadele güzelleştirir!
Cevapla