Forum
Kolay gelsin arkadaşlar Baya bi uğraştım ama bi türlü yapamadığım bişey var Şu şekilde tablolarım var
- fatura
- islem_no key var
- fatura no
- fatura tarihi
- teslim eden
- teslim alan
- urun
- İslem no key yok
- urun adı
- adedi
- birimi
- fiyatı
- toplam fiyat
Form1 üzerinde 1 tabloyu dbedit ile 2 tabloyu db grid ile çağırdım
faturadaki işlem no 1 ve bilgileri girdiğim zaman
db grid içerisine ürün tablosunda işlem no 1 .....ürün adı .....adedi ....birimi ....fiyatı.
1 .....ürün adı .....adedi ....birimi ....fiyatı..
1 .....ürün adı .....adedi ....birimi ....fiyatı.
şeklinde kayıt etmek istiyorum programı her açtığımda db grid içerisinde ne kadar kayıt varsa onları gösteriyor içerisi boş olarak nasıl çağırabilirim
Cevaplar için şimdiden teşekkürler
merhaba
tabloda kayıt varsa ve o tabloya bagladıgın gridin adotable yada odaquery open edersen bütün kayıtlar gelir.
tablo üzerinde aramamı yapmak istiyorsun yoksa kayıtmı eklemek istiyorsun.
Öncelikle İlgin için teşekkürler ben tabloya kayıt eklemek istiyorum o yüzden dbgridin içerisini boş çağırmam gerekiyo birde tabloları ilişkilendirdiğim zaman her 2 tabloya key girmem gerekiyo oda şöyle bir sıkıntı doğuruyo her 2 tabloyada 1 adet kayıt girebiliyorum.
Eger master details ilişkisi kurmak istiyorsan tablolar arasında
ortak kullandıkları bir değer olması gerekirkş bu değer vasıtasıyla birbirleriyle eşleşsinler.
örnek olarak
Tablo1 Tablo2
id | il ilid | ilce
------------------------ --------------------------------
1 | İSTANBUL 1 | Halkalı
1 | İSTANBUL 1 | İkitelli
2 | MERSİN 2 | Anamur
gibii....
Bu değerler üzerinden tabloya kayıt girmek için
1 adet dbedit ekle onu adotable 'e bagla ve butonun click olayıına adotable.post; şeklinde kaydı gönder.Daha sonrasında dbgridde görmek için refresh yap.
Kolay gelsin.
Mantık olarak bende sizin anlattığınız olayı yapmaya çalışıyorum Fatura bilgilerini bir kere girip dbgrid içerisine atıyorum 80 kalem ürün girip Adotable1.post; etmem gerekiyor ama sadece 1 kalem ürün ekleyip post edebiliyorum burayı bir atlatsam bitirecem projryi ama burda takıldım :S
merhaba
sanırım sorunun ılk kaydı post ettikten sonra ikinci kaydı post edemiyorsun.
Egerki ikinci post olayında sana tablo insert yada edit modda değil diye hata veriyorsa
yapman gereken
adotable1.insert;
adotable1.post;
şeklinde komut göndermen gerekir.
Kolay gelsin.
Ahmet Bey sizi çok yordum kusura bakmayın O aklıma geldi yaptım ama tüm kayıtları girdikten sonra post etmesini istiyorum aslında
formun ilk açılışına
AdoTable1.insert;
Kayıt butonunada AdoTable1.post;
AdoTable1.insert;
yaptım 1 kalemi girip kaydet 2 kalemi girip kaydet olayı oluyo Tam anlatamadım aslında
Ben 20 30 kalem girdikten sonra post etmek istiyorum.
peki projenizi görme imkanım varmı.upload ederseniz bakıp daha iyi çözüm sunbilirim.
https://rapidshare.com/files/3885287575/Proje.rar Teşekkür ediyorum
Merhaba
Kodlarını inceledim , table1 de post ettigin veriyi table2 ye de göndermeye çalışmıssın bu yuzden sürekli hata alıyorsun.Dbedit ler table1 'e baglıyken post eventında sadece table1'e veri gönderir,Table2'ye veri gitmez.Eger istediğin verilerin table2'ye gitmesini istiyorsan Query kullaman gerekir.
Kolay gelsin.
Tabloları master detail kullanmadıpım için ayrı ayrı post ettim kaydet butonunda table2Ozel_no.value:=table1Ozel_no.value komutunu posttan sonra yazdığım için uyarı alıyorum Ahmet Bey son bir soru sormak istiyorum dbgridin 2. satırına geçtiğim zaman otomatik kaydediyo ya onu kaydetmesin
1..satır özel no......
2.. satır özel no.......
3. satır özel no ......
4.satır özel no.......
kaydet butonuna bastığpım zaman özel noyu fatura tablosunun özel nosuna eşitleyip kaydetme olayını nasıl yapabilirim bi fikriniz var mı ?
Abdullah merhaba
şunu söylemem programlama algoritmasını çok yanlış kurmuşsun.
eğer birden çok abloya kayıt göndermek istiyorsan query kullanman gerekir.Çünkü dbgrid'i tek table ile ilişkilendirebiliyorsun.Tabiki farklı şeklillerde birden çok ilişkilendirme yapılabilir ama ne gerek var takla atmaya....
veritaban olarakta firebird kullanmak yerine access yada sql kullanmanı tavsiye ederim.Tabloların herbirisine connectionstring yazmak yerine tekbir connect nesnesikullanman daha iyi olur.
Öncelikle algoritmayı yap ,database hazırla formunu tasarla ve son olarakta kodlamaya geç....
Query konusunda istersen yardımcı olurum.
Kolay gelsin.
Gerçekten çok yordum sizi algoritmayı tasarımı kağıt üzerinde başlamadan önce kurdum tüm tabloları yavaş yavaş hazırladım tasarıma geçmeden önce bu kısmı öğrenmem gerekiyor diğer taraflarını biliyorum
database olarakta bu aşamayı geçmek için paradox kullandım sadece burdaki programlamayı aşmak için yani Asıl tablolarım sqlserver 2005 üzerinde yapıyorum.
Hani bide kafaya bişeyler takılır sadece orda kalır ileriyi düşünemezsin aynen o şekilde oldum sadece burayı nasıl aşarım onu düşünüyorum rüyalarıma girmeye başladı artık 🙂
Gerçekten ilginiz için çok teşekkür ediyorum kolay gelsin.
Özel mesajlarına bakarmısın..
Mantık olarak bende sizin anlattığınız olayı yapmaya çalışıyorum Fatura bilgilerini bir kere girip dbgrid içerisine atıyorum 80 kalem ürün girip Adotable1.post; etmem gerekiyor ama sadece 1 kalem ürün ekleyip post edebiliyorum burayı bir atlatsam bitirecem projryi ama burda takıldım :S
Bu şekilde boş formun olmasının, tüm verilerin buraya girilmesinin ve daha sonra da "Kaydet" tuşuna basıldığında kaydedilmesinin istendiği durumlarda MemoryDataSet bileşenlerinin kullanılması daha doğru, hızlı ve stabil olacaktır.
Bir tabloya veri yazıldığında başka bir tabloya da veri yazılması isteniyorsa programdan bu işlemin yapılması hem stabiliteyi azaltır, hem çakışmalara neden olabilir hem de hem de ideal değildir. Doğru olan birincil tablo hangisi ise programın direkt olarak buraya veri yazmasıdır. 2. tabloya veriyi 1. tablo üzerinde oluşturacağınız trigger ile yazarsınız (ya da buradaki veriyi değiştirirsiniz) ki Firebird veritabanı da trigger'ları desteklemektedir.