cxgrid veri kaydı görememe

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
droxee
Üye
Mesajlar: 86
Kayıt: 15 May 2009 04:29

cxgrid veri kaydı görememe

Mesaj gönderen droxee »

resim 1 : Resim
resim 2 : Resim
s.a.
projemde delphi 7 ve firebird vt kullanmaktayım. problemim ana tabloma veri kaydında sıkıntı yok detay tabloma da kayıt yapabiliyorum detay tabloma bağlı cxgridde kayıt sonrası kaydı göremiyorum örnek resim 1 fakat ana tablomdaki veriler arasında gezindikten sonra kaydı görebiliyorum örnek resim 2 yardım edebilen arkadaşlara şimdiden çok teşekkür ederim. aşağıdaki kod detay tabloma veri kayıt kaydet butonu kodudur.

Kod: Tümünü seç

cxGrid2.Enabled:=True;
btn_ek_donanim.Enabled:=False;
Datamodule_.IBQuery3.Close;
Datamodule_.IBQuery3.SQL.Clear;
Datamodule_.IBQuery3.SQL.Add('INSERT INTO TBL_ek_donanim (ek_donanim_kod, barkod_no, ek_donanim, tip_ad, MARKA_AD, MODEL_AD, CIHAZ_NO, BINA_AD, ODA_AD, SIL)');
Datamodule_.IBQuery3.SQL.Add('VALUES (:ek_donanim_kod, :barkod_no, :ek_donanim, :tip_ad, :MARKA_AD, :MODEL_AD, :CIHAZ_NO, :BINA_AD, :ODA_AD, :SIL )');
Datamodule_.IBQuery3.paramByName('ek_donanim_kod').value:=Ek_Donanim_Kod;
Datamodule_.IBQuery3.ParamByName('barkod_no').value:=Edit_Barkod_No.Text;
Datamodule_.IBQuery3.ParamByName('ek_donanim').value:=Edit_ek_donanim.Text;
Datamodule_.IBQuery3.ParamByName('tip_ad').value:=Label53.Caption;
Datamodule_.IBQuery3.ParamByName('MARKA_AD').value:=Label51.Caption;
Datamodule_.IBQuery3.ParamByName('MODEL_AD').value:=Label52.Caption;
Datamodule_.IBQuery3.ParamByName('CIHAZ_NO').value:=Label49.Caption;
Datamodule_.IBQuery3.ParamByName('BINA_AD').value:=Label50.Caption;
Datamodule_.IBQuery3.ParamByName('ODA_AD').value:=Label54.Caption;
Datamodule_.IBQuery3.ParamByName('SIL').value:=0;
Datamodule_.IBQuery3.ExecSQL;
Datamodule_.IBTransaction1.CommitRetaining;
DataModule_.IBDataSet_Ek_Donanim.Close;
DataModule_.IBDataSet_Ek_Donanim.Open;
Datamodule_.IBQuery3.Close;
Datamodule_.IBQuery3.SQL.Clear;
Datamodule_.IBQuery3.SQL.Add('INSERT INTO TBL_ek_donanim (ek_donanim_kod, barkod_no, ek_donanim, tip_ad, MARKA_AD, MODEL_AD, CIHAZ_NO, BINA_AD, ODA_AD, SIL)');
Datamodule_.IBQuery3.SQL.Add('VALUES (:ek_donanim_kod, :barkod_no, :ek_donanim, :tip_ad, :MARKA_AD, :MODEL_AD, :CIHAZ_NO, :BINA_AD, :ODA_AD, :SIL)');
Datamodule_.IBQuery3.paramByName('ek_donanim_kod').value:=ek_donanim_kod+1;
Datamodule_.IBQuery3.ParamByName('barkod_no').value:=Edit_Ek_Donanim.Text;
Datamodule_.IBQuery3.ParamByName('ek_donanim').value:=Edit_Barkod_No.Text;
Datamodule_.IBQuery3.ParamByName('tip_ad').value:=Edit_Tip_Kod.Text;
Datamodule_.IBQuery3.ParamByName('MARKA_AD').value:=Edit_Marka_Kod.Text;
Datamodule_.IBQuery3.ParamByName('MODEL_AD').value:=Edit_Model_Kod.Text;
Datamodule_.IBQuery3.ParamByName('CIHAZ_NO').value:=Edit_Chz_No.Text;
Datamodule_.IBQuery3.ParamByName('BINA_ad').value:=Edit_Bina_Kod.Text;
Datamodule_.IBQuery3.ParamByName('ODA_ad').value:=Edit_Oda_Kod.Text;
Datamodule_.IBQuery3.ParamByName('SIL').value:=0;
Datamodule_.IBQuery3.ExecSQL;
Datamodule_.IBTransaction1.CommitRetaining;
DataModule_.IBDataSet_Ek_Donanim.Close;
DataModule_.IBDataSet_Ek_Donanim.Open;
Edit_Ek_Donanim.Clear;
//cxGridDBTableView1.ClearItems;
//cxGridDBTableView1.DataController.DataSource:=DataModule_.DSource_Query3;
//cxGridDBTableView1.DataController.CreateAllItems;
//cxGridDBTableView1.ApplyBestFit();
Application.MessageBox('Yeni Kayıt Yapıldı !!!','BILGI',MB_OK+MB_ICONINFORMATION);
btn_ek_donanim_ekle.Enabled:=True;
btn_ek_donanim_sil.Enabled:=True;
btn_ek_donanim_kaydet.Enabled:=False;
btn_ek_donanim_iptal.Enabled:=False;
DataModule_.IBDataSet_ek_donanim.Close;
DataModule_.IBDataSet_ek_donanim.Open;
Label24.Caption:='';
///* EK DONANIM *///
Datamodule_.IBQuery3.Close;
Datamodule_.IBQuery3.SQL.Clear;
Datamodule_.IBQuery3.SQL.Add('SELECT * FROM TBL_EK_DONANIM where barkod_no LIKE ''%'+Edit_Barkod_No.Text+'''');
Datamodule_.IBQuery3.Open;
TabSheetEkDonanim.Caption:='EK DONANIM ('+inttostr(DataModule_.IBQuery3.RecordCount)+')';
ertank
Kıdemli Üye
Mesajlar: 1712
Kayıt: 12 Eyl 2015 12:45

Re: cxgrid veri kaydı görememe

Mesaj gönderen ertank »

Merhaba,

Ekranda cxGrid'in bağlı olduğu TDataSource bileşeni ve bu TDataSource bileşeninin bağlı olduğu TDataSet bileşeni bilgilerini paylaşmanız mümkün mü?

Emin değilim ancak tahminim; siz bilgileri kaydetmek için INSERT INTO SQL komutunu kullanıyorsunuz. Yani detay bilgileri gösteren cxGrid'in bağlı olduğu Query nesnesi sizin arka planda girdiğiniz kayıtlardan haberi olmuyor.

Yeni girilen bilginin ekranda gözükmesini sağlamak için detay tabloya kayıt girdikten sonra ekranda detay cxGrid'in bağlı olduğu Query bileşeninin Refresh() prosedürünü çağırmalısınız.
Kullanıcı avatarı
droxee
Üye
Mesajlar: 86
Kayıt: 15 May 2009 04:29

Re: cxgrid veri kaydı görememe

Mesaj gönderen droxee »

hocam cxgrid ibquery3 e bağlı. evet kayıtları insert sql ile giriyorum bu paylaştığım kaydın sonuna "Datamodule_.IBQuery3.Refresh;" yazdım bir değişiklik olmadı. bağlı querynin eventindeki after larla, new recordlarla, refresh ile heryerde denedim olmadı sanırım farklı bir şey olmalı.
ertank
Kıdemli Üye
Mesajlar: 1712
Kayıt: 12 Eyl 2015 12:45

Re: cxgrid veri kaydı görememe

Mesaj gönderen ertank »

Merhaba,

Öncelikle INSERT işlemi için ayrı, SELECT işlemi için ayrı TIBQuery bileşenleri kullanmanız çok daha az karışıklığa sebep olacaktır. Ayrıca, detay ve master tabloları uygun şekilde birbirleri ile ilişkilerini kurduğunuzu gönderdiğiniz bilgilerden anlamak mümkün olmuyor.

Görebildiğim kadarı ile aşağıdaki SQL ana tablo ile bağantı yapmıyor. Sadece BARKOD_NO alanı üzerinden kayıt seçiyor. Yine görebildiğim kadarıyla bu SQL en son çalışan SQL.

Kod: Tümünü seç

Datamodule_.IBQuery3.Close;
Datamodule_.IBQuery3.SQL.Clear;
Datamodule_.IBQuery3.SQL.Add('SELECT * FROM TBL_EK_DONANIM where barkod_no LIKE ''%'+Edit_Barkod_No.Text+'''');
Datamodule_.IBQuery3.Open;
Ancak siz ekranda 1992 ile başlayan satırı görmek için EK_DONANIM_KOD alanını eşittir ile seçmelisiniz yapıyı yanlış anlamadı isem.

Bu şekilde düşününce Liste sekmesinde veriler arasında dolaştığınız kısım için yazdığınız kod muhtemelen doğru sorgulamayı yapıyor ve sekme değiştirdikten sonra kayıtları görme sebebiniz de bu.
Cevapla