DBGrid veri çekme problemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
muskut
Kıdemli Üye
Mesajlar: 1118
Kayıt: 22 Ara 2003 09:50
Konum: Sandalyemden
İletişim:

DBGrid veri çekme problemi

Mesaj gönderen muskut »

Başlıkla problemi tam ifade edemedim. Sorunumu şöyle açayım;

DBGrid üzerinde fare ile çift tıklayarak; DBGrid listesinden FIRMA_ID isimli alandaki değeri okuyup başka bir form içinde belli başlı bazı bilgileri bu FIRMA_ID değerine göre gösteriyorum. Sorun şu; DBGride çift tıklıyorum "FIRMA_ID" verisi geliyor. Fakat gelen veri bazen doğru bazen DBGrid te tıkladığım satırın bir altındaki FIRMA_ID değeri bazen rastgele bir değer geliyor. Bu hastanın sorunu nedir fikir sahibi olan varsa, fikrinize açım.

hepinize kolay gelsin
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Merhaba.
DbGrid'e tıkladığınız anda tıklanan kayıt aktif olur (sizin de kurguladığınız gibi..) ve onun haricinde bir kayda ait bilginin gelmesi imkansızdır (normal şartlarda..).Sorun kullandığınız Grid bileşeninden kaynaklanıyor olabilir..
Kolay gelsin.
Kullanıcı avatarı
muskut
Kıdemli Üye
Mesajlar: 1118
Kayıt: 22 Ara 2003 09:50
Konum: Sandalyemden
İletişim:

Mesaj gönderen muskut »

Standart delphi bileşeni. (DBGrid). (Kendi yazmış olduğum bir programı değil de başka birinin yazmış olduğu programı güncelliyorum. ) Yazmış olduğum koduda size göndereyim;

Kod: Tümünü seç

procedure TMusteriBakiyeFm.DBGrid1DblClick(Sender: TObject);
begin
  //ShowMessage(DataModule2.MusteriFirma_id.Value);
  MusteriBakiyesiFm.EditFirma_id.Text := DataModule2.MusteriFirma_id.Value;
  MusteriBakiyesiFm.gosterBtnClick(Self);
  MusteriBakiyesiFm.ShowModal;
end;
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam
belki dbgridin herhangi bir yerinde kod felan yazılıysa verileri etkilyeebilir.kolay gelsin
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba..

Kod: Tümünü seç

gosterBtnClick(Self); 
Bu butonun içindeki kodlarda önemli..Belki kod ummadığın yerlere dallanabilir..
En güzeli aşağıdaki satıra BreakPoint koyarak,kodun nereye gittiğine bir bakman...Belki çözüm olabilir...

Kod: Tümünü seç

  MusteriBakiyesiFm.EditFirma_id.Text := DataModule2.MusteriFirma_id.Value; 
iyi günler...
Kullanıcı avatarı
muskut
Kıdemli Üye
Mesajlar: 1118
Kayıt: 22 Ara 2003 09:50
Konum: Sandalyemden
İletişim:

Mesaj gönderen muskut »

sorun benim tıklama ile gelen verilerin tutarsız olmasından kaynaklanıyor. DBGrid e tıklıyorum, bazen tıkladığımda gelen veri DBGrid'in satırı ile uyuşurken, bazen bu veri DBGrid'in herhangi bir satırından olabiliyor. Bunu kodları işlemeden showmessage ile görüyordum
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

Bu normalde olası iş değil..Gride tıkmakla zaten Dataseti o kayda aktif yapıyoruz...

Mutlaka sonradan tetikleyen bir şeyler vardır..Gridin belki diğer eventlerinde

sonradan veya önceden(çoğunlukta duruma göre önceden :D ) çalışan başka bir kod vardır diye düşünüyorum...

İlgili Datasource 'in evenlerini de bir kontrol edebilirsin..

iyi günler...
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba,
DbGrid de bir satıra tıkladğınız zaman bağlı bulunan dataset o kayıda konumlanır, fakat OnDBlClick olayı DbGrid in satır olmayan herhangi bir yerine mesela kenarına tıkaldığınız zaman bile tetiklenir, bu şekilde bir yanılgıya düşme durumunuzda var.

Ayrıca bağlı bulunan dataset e DisableControls komutu veriliyor olaiblir bu nedenle DbGrid e tıkladığınız Datasetin konumu değişmez.

iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Kod: Tümünü seç

DataModule2.MusteriFirma_id.Value
Burada Datamodule2 ve MusteriFirma_id tam olarak nereye bağlı veya neyi ifade ediyor?Showmessage içinde bu satıra ek olarak bir de,

Kod: Tümünü seç

DataSource.Dataset.FieldByName('Id').asstring
yazarak teyit ediniz..
Cevapla