Anasayfa » Forum

Delphi ile tek fatu...
 
Bildirimler

Delphi ile tek fatura numarasına çeşitli ürün girilmesi  

  RSS
Abdullah Yildizturan
(@AbdullahYildizturan)
Üye

Kolay gelsin arkadaşlar Baya bi uğraştım ama bi türlü yapamadığım bişey var Şu şekilde tablolarım var



  1.  fatura


    • islem_no key var

    • fatura no

    • fatura tarihi

    • teslim eden

    • teslim alan

  2. 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

Alıntı
Gönderildi : 04/06/2011 21:57
Ahmet ALTUNTAS
(@ahmetaltuntas)
Üye

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.

CevapAlıntı
Gönderildi : 05/06/2011 15:40
Abdullah Yildizturan
(@AbdullahYildizturan)
Üye

Ö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.

CevapAlıntı
Gönderildi : 05/06/2011 18:17
Ahmet ALTUNTAS
(@ahmetaltuntas)
Üye

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.

CevapAlıntı
Gönderildi : 06/06/2011 11:15
Abdullah Yildizturan
(@AbdullahYildizturan)
Üye

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 

CevapAlıntı
Gönderildi : 06/06/2011 16:33
Ahmet ALTUNTAS
(@ahmetaltuntas)
Üye

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.

CevapAlıntı
Gönderildi : 06/06/2011 16:57
Abdullah Yildizturan
(@AbdullahYildizturan)
Üye

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.

CevapAlıntı
Gönderildi : 06/06/2011 21:00
Ahmet ALTUNTAS
(@ahmetaltuntas)
Üye

peki projenizi görme imkanım varmı.upload ederseniz bakıp daha iyi çözüm sunbilirim.

CevapAlıntı
Gönderildi : 06/06/2011 23:11
Abdullah Yildizturan
(@AbdullahYildizturan)
Üye

 Teşekkür ediyorum

CevapAlıntı
Gönderildi : 07/06/2011 00:05
Ahmet ALTUNTAS
(@ahmetaltuntas)
Üye

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.

CevapAlıntı
Gönderildi : 07/06/2011 12:15
Abdullah Yildizturan
(@AbdullahYildizturan)
Üye

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ı ?

CevapAlıntı
Gönderildi : 07/06/2011 18:18
Ahmet ALTUNTAS
(@ahmetaltuntas)
Üye

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.

CevapAlıntı
Gönderildi : 07/06/2011 23:33
Abdullah Yildizturan
(@AbdullahYildizturan)
Üye

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.

CevapAlıntı
Gönderildi : 08/06/2011 03:10
Ahmet ALTUNTAS
(@ahmetaltuntas)
Üye

Özel mesajlarına bakarmısın..

CevapAlıntı
Gönderildi : 08/06/2011 12:32
CozumPark
(@cozumpark)
Kıdemli Üye

[quote user="Abdullah"]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 [/quote]


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.

CevapAlıntı
Gönderildi : 09/06/2011 19:14
Paylaş: