Kayıt dbgrid e gitmiyor.

Diğer 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ı
hakansozgen
Üye
Mesajlar: 38
Kayıt: 16 Nis 2006 06:51
Konum: istanbul
İletişim:

Kayıt dbgrid e gitmiyor.

Mesaj gönderen hakansozgen »

Arkadaşlar merhaba.
Sorunum dbeditlere girdiğim kayıtların kayıt buttonuna yazdığım append komutuyla atmaması.
Basit bir mal hesabı yapıyorum. Dört adet dbeditim var. Bunlar: kdv,iskonto,adet ve toplam fiyat. adet db editinin onexit olayına yazdığım bir function işliyor. On exit olayında şu kod var:

Kod: Tümünü seç

procedure TfrmStok_Cikisi.DBEdit9Exit(Sender: TObject);
var
tfiyat,ttoplamfiyat:currency;
tkdv,tiskonto:real;
tadet:integer;
begin
tfiyat:=strtocurr(dbedit6.Text);
tkdv:=StrToFloat(dbedit7.text);
tiskonto:=strtofloat(dbedit8.Text);
tadet:=strtoint(dbedit9.Text);
ttoplamfiyat:=frmStok_Girisi.malhesaplama(tfiyat,tkdv,tiskonto,tadet);
dbedit10.text:=CurrToStr(ttoplamfiyat);
adotable4.Edit;
adotable4.FieldByName('STOK_MEVCUT_ADET').AsInteger:= adotable4.FieldByName('STOK_MEVCUT_ADET').AsInteger-strtoint(dbedit9.Text);
//adotable4.Post;
adotable3.Edit;
adotable3.FieldByName('CIK_TOPLAM_FIYAT').Ascurrency:=strtocurr(dbedit10.Text);
//adotable3.Post;
dblookupcombobox1.SetFocus;
end;
kaydet butonunda da şu kod var:

Kod: Tümünü seç

procedure TfrmStok_Cikisi.SpeedButton4Click(Sender: TObject);
begin
if dbedit1.text='' then
begin
showmessage('Lütfen fatura bilgilerini girin.');
dbedit1.SetFocus;
end

else if dbedit4.text='' then
begin
    showmessage('Lütfen stoğu belirtin');
    dbedit4.SetFocus;
end
else
begin
adotable3.Append;
dbedit4.SetFocus;
end;
end;
dbeditleri doldurduğum zaman veriler dbgrid te gözüküyo.Fakat kaydet butonuna bastığım zaman kayıt db gridden kayboluyor. İşin ilginç tarafı bu kaydı sorgulattırdığım zaman dbgrid te çıkıyo. Bu sefer üzerine ikinci bi kaydı eklemek istediğimde sorunlu olan kaydet butonuna bastığımda istediğim oluyor ve db grid te gözüküyor. Sorun yeni kayıtta oluyor. Ayrıca bu tablo başka bir tablonun detayı.
Engin bilgilerinize sığınıyor, yardımlarınızı bekliyorum. Hepinize kolay gelsin.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Önerim şu; kesinlikle DBEdit.Text lerle değil de atanmış alanlarla işlem yapın. Ayrıca hangi DBEdit lere hangi tablo bağlı anlayamadım fakat DBEdit.Text te herhangi bir değişiklik olduğunda bağlı tablo (DataSet) de Edit durumunda değilse bile otomatikmen edit durumuna geçer. Ya da DBEdit leri normal Edit şeklinde çevirmeniz lazım.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
hakansozgen
Üye
Mesajlar: 38
Kayıt: 16 Nis 2006 06:51
Konum: istanbul
İletişim:

Mesaj gönderen hakansozgen »

dbedit nesnelerini kullanmama konusunda kesinlikle size katııyorum. Şu an bütün dbedit nesnelerini sildim ve normal edit nesneleri koydum. Editlerden tabloya post ederek gönderiyorum. Sorgulama sonucu bilgileri editlere yazdığım bir procedure sayesinde getiriyorum. Kayıtla ilgili ufak bir problem var. Oda sanırım kaydettiğim tablo detay tablosu olduğu için master tablonun index ini post yapmadığım için. Sorun yaşarsam tekrar yardımınızı rica edebilirim. Hepinize kolay gelsin. İyi bayramlar.
Kullanıcı avatarı
hakansozgen
Üye
Mesajlar: 38
Kayıt: 16 Nis 2006 06:51
Konum: istanbul
İletişim:

Mesaj gönderen hakansozgen »

Tekrar merhaba.
Malesef dbedit leri silmeme rağmen yine aynı sorun oldu ve dbgride boş kayıt atıyo.Ama veritabanından tabloya baktığımda kayıt gözüküyor. Projede sorgulattığımda da dbgird te gözüküyor. Sadece yeni kayıtta sorun oluyor. Acaba dbgrid yerine başka bir grid bileşeni mi kullansam. Çözümlerinizi bekliyorum. Hepinize kolay gelsin.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Yukarıda bahsettiğiniz öncelikle master tablodaki kayıtın post edilmemesinden kaynaklanabilir. Detay tablonun beforepost unda eğer master kayıt post edilmediyse post ettirin.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
hakansozgen
Üye
Mesajlar: 38
Kayıt: 16 Nis 2006 06:51
Konum: istanbul
İletişim:

Mesaj gönderen hakansozgen »

Tekrar merhaba.
Söylediğiniz yöntemi yapmadan zaten kayıt yapmıyor. Şu an ilk önce master kayıtlar post edilip sonra detay post edilerek kayıt yapılabiliyor. Benim sorunum sadece kaydı dbgrid e atmaması. Ama dbgrid e atmamasına rağmen tabloda kayıt gözüküyor.Aynı şekilde bu master kaydı filtrelettirdiğimde de dbgrid te gözüküyor. Buna şimdilik bir çözüm buldum ama ne kadar sağlıklı bilmiyorum bu konuda bana fikir verirseniz sevinirim. Çözümüm şöyle:

Dbgrid in üzerine visible i false olan bir button koydum. Bu buttona da master tabloyu filtreleyen kodları yazdım. Master kaydı post edip yeni kayıt buttonuna bastığımda yeni kayıt buttonundaki ilk satır, dbgrid in üzerindeki buttonun çalışmasını sağlayan kod. Kayıt ekle buttonundaki son satırda da aynı şekilde dbgridin üzerindeki buttonun çalışmasını sağlayan kod. Bu şekilde olduğu zaman kayıt ekle buttonu na bastığım zaman kayıt dbgride geçiyo.Yeni kayıt dediğimde de yeni satır açıyo. Ama devamlı filtrele buttonu çalışarak oluyor bu. İşimi görüyor şimdilik ama ileride sorun çıkar mı bilmiyorum. Bu konuda düşüncelerinizi bekliyorum. Hepinize kolay gelsin.
danaci
Üye
Mesajlar: 178
Kayıt: 24 May 2005 01:45

Mesaj gönderen danaci »

kaydet buttonunun kodunda nerede post etmişsin.
Append sonrasında
adotablex.edit;
adotablex.post yapıp denermisin.
Kullanıcı avatarı
hakansozgen
Üye
Mesajlar: 38
Kayıt: 16 Nis 2006 06:51
Konum: istanbul
İletişim:

Mesaj gönderen hakansozgen »

Append i yeni kayıt buttonuyla yapıyorum.Kodlar:

Kod: Tümünü seç

button1.Click;//Master tabloyu filtreleyen button
adotable2.Edit;//Master tablo
adotable2['CIK_FATURA_NO']:=edit2.Text;
adotable2['CIK_FATURA_TARIHI']:=edit3.Text;
adotable2['MUSTERI_NO']:=edit4.Text;
adotable2.Post;
adotable3.Append;//Detay tablosu appendlanıyor.
Kaydet buttonunda bu kodlar var:

Kod: Tümünü seç

button1.Click;//Master tabloyu filtreleyen button
adotable3.Edit; //Detay tablosu
adotable3['CIK_FATURA_NO']:=edit2.Text;
adotable3['STOK_KODU']:=edit12.Text;
adotable3['PARA_CINSI']:=edit6.Text;
adotable3['CIKIS_FIYAT']:=edit7.Text;
adotable3['CIKIS_KDV']:=edit8.Text;
adotable3['CIKIS_ISKONTO']:=edit9.Text;
adotable3['CIKIS_ADET']:=edit10.Text;
adotable3['CIK_TOPLAM_FIYAT']:=edit11.text;
adotable3['ODEME_SEKLI']:=combobox1.Text;
adotable3.Post;
Bu şekilde istediğim oluyor. Ama "button1.click" olmadan kayıt dbgrid te gözükmüyor. Sadece tabloda ve filtreleme yapıldığında gözüküyor. Her yeni kayıtta ve kaydet buttonunda "button1.click" satırı çalışması gerekiyor. Ne kadar stabil çalışır bilemem ama umarım ileride sorun çıkarmaz.
İlginiz için teşekkürler. Hepinize kolay gelsin.
X_ALPEREN_X
Üye
Mesajlar: 26
Kayıt: 20 Nis 2006 02:04

Mesaj gönderen X_ALPEREN_X »

Kod: Tümünü seç

procedure TfrmStok_Cikisi.SpeedButton4Click(Sender: TObject);
begin
if dbedit1.text='' then
begin
showmessage('Lütfen fatura bilgilerini girin.');
dbedit1.SetFocus;
end

else if dbedit4.text='' then
begin
    showmessage('Lütfen stoğu belirtin');
    dbedit4.SetFocus;
end
else
begin
adotable3.Append;
dbedit4.SetFocus;
end;
end;
[code]

mrb arkadaşım burda sen akydet butonuna append eklemişsin append komutunu kaydı yazmadan önce eklemen lzm! kaydı yazmadan önce append yeni kayıt açar o yüzden gridde boş görünür.
Cevapla