editle dbgrid

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
hasguc

editle dbgrid

Mesaj gönderen hasguc »

edit teki bi yazıyı direk olarak dbgrid teki belirlenen bi alana aktarabilirmiyiz.
form2 de bi seçme alanı yapacam seçilen bilgi form1 deki dbgridde yer alan bölüme kaydolacak şimdiden teşekkürler...
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

s.a.
dbgridin bağlı olduğu tabloya yazdırırsan editi direk olur zaten.
mesela

Kod: Tümünü seç

form1.table1.edit;
form1.table1ad.text:= edit1.text;
form1.table1.post;
gibi.
sorunu doğru mu anladım acaba?
hasguc

Mesaj gönderen hasguc »

Kod: Tümünü seç

form1.adotable3.append;
form1.dbgrid1.Fields[1].Text:=form2.edit1.text;
form1.ADOTable3.Post;
şeklinde yazdım ama olmadı anlamadım gitti..
form2 deki veritabanıyla alakası olmayan bi edite girilen bilginin form1de bulunan dbgrid'in alakalı alanına yazdırılıcak hepsi bu ama nasıl....
shadowmann
Üye
Mesajlar: 508
Kayıt: 30 Oca 2004 10:49

Mesaj gönderen shadowmann »

Edit in onenter özelliginde table ı edit moduna alın. onexit inde ise table1.fieldbyname('alanadi').asstring:=Edit1.text;
table1.post yapın.
Benim aklıma ilk çözüm bu geldi.
hasguc

Mesaj gönderen hasguc »

arkadaşım ikitane form var form1 ve form2
form1 de dbgridde gösterilmek üzere adotable3 ait bilgiler olacak ve birde form2 vvar form2 de bulunan boş bir edit1 var bunun içerisine yazılacak olan bilgi form1 de bulunan dbgridin ilgili alanına edite girilir girilmez yazılacak..
Akin_Delphi
Üye
Mesajlar: 163
Kayıt: 06 Nis 2006 12:22

Mesaj gönderen Akin_Delphi »

hasguc yazdı:arkadaşım ikitane form var form1 ve form2
form1 de dbgridde gösterilmek üzere adotable3 ait bilgiler olacak ve birde form2 vvar form2 de bulunan boş bir edit1 var bunun içerisine yazılacak olan bilgi form1 de bulunan dbgridin ilgili alanına edite girilir girilmez yazılacak..
Sayın Arkadaşım,

Peki DBGrid'in ilgili sütunu yerine, ilgili ADOTable veya her ne table kullanıyorsan o tablonun ilgili alanının değerini değiştirmeyi denedin mi?

Bir keresinde, benim başıma da garip bir durum gelmişti!...
Ben de sizin gibi Veri Bilinçli bileşenin değerini değiştirmeye çalışıyordum ve post etmeme rağmen kaydolmuyordu.

Varsayalım ki, bir DBEditHasan isimli bir DBEdit'imiz var (DBEdit'i seçtim çünkü Columns Fields vs.'yle uğraşmamak için) ve bu DBEDit'imiz'in DataSource özelliği DSHasaninVeriKaynagi, ve DataField özelliği ise HasaninTablosuMusteriAdresi olsun.

Şimdi eğer programsal olarak verileri değiştirmek istiyorsanız DBEdit'in değerini (Yani DBEditHasan.Text özelliğini) değil, DBEditHasan'ın bağlı olduğu tablonun ilgili alanının değerini değiştireceksiniz.

Yani

Kod: Tümünü seç

DBEditHasan.Text := 'Ne mutlu Türküm Diyene"; 
değil

Kod: Tümünü seç

HasaninTablosuMusteriAdresi.AsString := 'Ne Mutlu Türküm Diyene.';
Tabi sonra post edeceksiniz ve değeri değiştirmeden önce HasaninTablosu.edit, ya da duruma göre HasaninTablosu.insert kodunu unutmayınız.

Elindeki Delphi versiyonu nedir bilmiyorum (Benim kullandığım D5 Ent 5.1) ancak bu şekilde sorunun çözülmesi lazım. Bildiğim kadarıyla programsal olarak Veri Bilinçli bileşenin değerini değiştirdiğinizde, karşılık gelen Field'ın OnSetText olay işleyicisi ateşlenmiyor. Dolayısıyla karşılık gelen alanın değeri değiştirilmemiş oluyor.

Umarım yardımcı olabilmişimdir. Başarılar ve Saygılar.
hasguc

Mesaj gönderen hasguc »

teşekkür ederim hallettim sonunda herşey doğruda editin direk içine yazıyomuşum yani herhangi bir tetikleme olmayıncada çalışmıyor onexit işimi halletti teşşekkürler hepinize
hasguc

Mesaj gönderen hasguc »

şimdi bi sorun daha var onu nasıl halledecem peki sorun şu dbgriddeki bi alanın toplamını dbgrid dışında bi yere mesela label e kaydedecem nasıl yapabilirim..
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Kod: Tümünü seç

var
toplam:integer;
begin
 toplam:=0;
 Table1.First;
 While Table1.Eof=False Do
 Begin
   toplam:=toplam+Table1Tutar.AsInteger;
   Table1.Next;
 end;
 Label1.Caption:=inttostr(toplam);
end;
Değişkenlerin türlerini değiştirmeniz gerekebilir tabi.

Edit: Bir sonraki mesaja tamamen katılıyorum. Ama programı Query ile baştan yazamayacak durumda da olabilirsiniz.
En son ulu coder tarafından 15 Nis 2006 08:51 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
shadowmann
Üye
Mesajlar: 508
Kayıt: 30 Oca 2004 10:49

Mesaj gönderen shadowmann »

Aslında siz olayın görünen yönünden hareket ediyorsunuz bu da çözüme ulaşmanızı zorlaştırıyor. Yapmak istediginiz bir alanın değerinin toplamını almak. Table kullanıyorsanız baştan bir degişken tanımlar ve while not table eof yada for do (Table n record count ina kadar) döngü ile o alanın degerini alır toplarsınız. Yada query kullanıyorsanız sum u kullanırsınız.
Bence burda table yerine query kullanılmalı çünkü her kayıt eklemede üstte verilen döngü ile tüm kayıtları taramak programı yavaşlatır.
hasguc

Mesaj gönderen hasguc »

bu aşamadan sonra query e geçmem imkansız gibi yukarıdaki kodlarla halledemedim aynı zamanda.
devamsızlık diye dbgridde bi alanım var ve 1 gibi değerler var ben bunları form üzerinde label üzerinde göstermek istiyorum..Ama nasıl adotable kullanıyorum şuan ama nasıl yapacağıma dair bi fikrim yok...
shadowmann
Üye
Mesajlar: 508
Kayıt: 30 Oca 2004 10:49

Mesaj gönderen shadowmann »

Ulucoder in yazdığı kod senin işini görecektir.
Cevapla