Locate neden bir kayıtta takılıp kaldı anlamadım ?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

Locate neden bir kayıtta takılıp kaldı anlamadım ?

Mesaj gönderen mudipasa »

S.A.
Ürünlerin olduğu bir tablom var. Table1.Locate('URUNADI',Edit1.Text,[]) yapıyorum. ama o hep BULGUR adlı kayda gidip duruyor. Bu ürün adını değiştirdiğimde veya sildiğim sorun yok. Herhangi bir indeks yok sadece primary index var. Ayı şey şahıslar bilgisinde de var. 'VATANDAŞ' ismine taktı. Locate in her türlü eklentisinide kullandım bişey yok. Tabloların URUNADI değilde URUNNO vs. başka değişkenlerinde de aratma yaptığımda yine aynı sorun. Bu kayıtlara gidiyor. Allah'a şükürler olsunki bu acayip sorunlar hep beni buluyor.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

Table1.Locate(keyfield, aranacak değer, [arama seçenekleri]);

result Boolean
değişken tamımlıyormusun aranan değer true mu yoksa false mi diye?
BULGUR değerli kayıt hangi kayıt ilk kayıtmı?
bence arama işlemlerini SQL ve Query kullanarak yap... sorun yaşamazsınız...
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Locate aramaya ilk kayıttan başlar ve bulduğu ilk kayda konumlanır. Dilediğin kadar kullanabilirsin ama Locate'in çalışma mantığı budur. Bir sonraki kaydı aramak için Locate'i kullanamazsın. Bunun için başka tekniklere baş vurmalısın.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

Kod: Tümünü seç

if table1.locate('urunadi','PİRİNÇ',[]) then showmessage('kayıt bulundu');
gibi bir kontrol ile locate'in çalışıp çalışmadığını kontrol edebilirsin.
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Soruyu tam anlayamadım ama sonraki uyan kayıtlara gitmek için LOCATENEXT diye bir fonksiyon mevcut.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

sorun istenilen kaydın bulunamaması hakkında... arkadaş bir değeri aradığını ancak sürekli aynı istemediği değerin döndüğünü söylüyor...
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

Mesaj gönderen mudipasa »

Sağolun. Arkadaşlar cevapları inceledim ama programıda biraz inceledim. Asıl sorunun locate olmadığını farkettim. Sorun şöyle Table nin her olayından sonra Table ye yapılan ilk kayda konumlandığını farkettim. Yani post, locate, cancel olaylarından sonra Table ye yapılan ilk kayda gidiyor. Table nin hiç bir olayı yok. ama yinede yapıyor bunu. ben cxDBLookupComboBox tan şüpheleniyorum. onun grid özelliği açık (mecburen çünkü lazım). Kafam bayağı karıştı. Hiç böyle bir sorunla karşılaşan oldu mu acaba ?
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

Kayıta odaklanma sorunu çözüldü ama....

Mesaj gönderen mudipasa »

S.a.
En son programımı karıştırdığımda ilk kaydedilene odaklanma sorunu olduğunu çözmüştüm. Bunun sebebi başka bir formda cxDBLookupCombobox kullanıyorum ve onun Grid modu True idi. Onu False yapınca odaklanma olmuyor. Ama niye böyle bir sorun yaşıyorum ki?
Cevapla