Fatura Hareketlerindeki Sorgu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
nodetail
Üye
Mesajlar: 53
Kayıt: 04 Eki 2008 09:30

Fatura Hareketlerindeki Sorgu

Mesaj gönderen nodetail » 13 Eki 2008 10:50

Arkadaşlar selam belkide ben formda arama yapmayı bilmiyorumdur çünkü bu sorumada cevap olacka bir konu bulamadım.
bir fatura programında hareketlerdeki sorguyu fatura hareketleri tablosundaki hangi alana göre yapıyoruzki "yeni fatura" dediğimizde hareketler boş gelsin. yeni fatura keserken önceki faturalarında hareketleri görünüyor, burdaki programlama mantığı nasıldır?

Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4319
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Fatura Hareketlerindeki Sorgu

Mesaj gönderen aslangeri » 14 Eki 2008 08:22

s.a.
fatura hareketleri tablosunda fatura tablosunun "id " sini tutan bir alan olması lazım.
filitrelemeyi o alana göre yapıyoruz.
master detail yapılar üzerinde biraz çalışman lazım gibi görünüyor.
kolay gelisin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim

nodetail
Üye
Mesajlar: 53
Kayıt: 04 Eki 2008 09:30

Re: Fatura Hareketlerindeki Sorgu

Mesaj gönderen nodetail » 14 Eki 2008 08:49

a.s.yardımlarım için çok teşekkürler Allah razı olsun,
ama yeni bir fatura kesmek istediğimde fatura alanındaki "id" olmayacakki fatura kaydedilmemiş olacak,

açık yazayım fatura tablosunda(master) ve hareket(detail) tablosunda fatura_no diye bir alan var ve bunlar birbirine bağlı
hareket(detail) tablosuna bağlı gridden bir satır bilgi giriyorum ama fatura(master) tablosuna henüz kayıt yapılmadığı için hareket tablosundaki fatura_no boş kalıyor ve eşleşme yapılamıyor ve grid boş görünüyor burayı çözemedim.

serkan
Üye
Mesajlar: 666
Kayıt: 09 Tem 2003 11:08
Konum: bursa

Re: Fatura Hareketlerindeki Sorgu

Mesaj gönderen serkan » 15 Eki 2008 08:17

Fatura no alanı ile master ve detaili bağlama çünkü fatura no değiştirildiğinde bağlantı bozulur kontrol ederim detaydada düzeltirim diyebilirsin ama zor iş..Peki nasıl yaparım dersen ;fatura ekranı açıldığında master tabloyu (fatura bilgilerini tutan tablo) append ile ekledikten sonra ardından post ederek boş bir kayıt oluşturursun.Bu arada otomatik artan bir alanın olduğu için bununda değeri oluşmuş olur.Detay tabloya stoklardan kalem ekledikce detay_id alanına masterın otomatik artan alanının değerini verirsin.Peki kullanıcı fatura ekranını açtı ama kaydetmeden çıktı dersen onuda kontrol edip.masterdaki kaydı silersin.

nodetail
Üye
Mesajlar: 53
Kayıt: 04 Eki 2008 09:30

Re: Fatura Hareketlerindeki Sorgu

Mesaj gönderen nodetail » 15 Eki 2008 09:52

buradan bir üstat sıradaki "id" 'yi rezerve et detay tablosundaki bağlantı hücresine bunu ver demişti. ama şimdi aklıma geldi bu rezerve işlemi özel bir yöntemle sıradaki id yi alıp serbes bırakana kadar diğer kullanıcıların o id yi almasını engelliyormu yani bu rezerve tam olarak nasıl yapılıyor. yok eğer en son id'yi alıp üzerine 1 ekleyerek oluşturuluyorsa benden sonra fatura ekranını açan ve benden daha hızlı işlemini tamamlayıp kaydeden birisi benim id'mi almış olacak ve hareketler karışacak onu anlayamadım. tablodaki id'yi rezerve edip ben serbest bırakana kadar veya bağlantıyı kesene kadar diğer bağlananların o id yi almasını engellecek bir komut veya işlem varmı?

Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4319
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Fatura Hareketlerindeki Sorgu

Mesaj gönderen aslangeri » 16 Eki 2008 08:25

serkan yazdı:fatura ekranı açıldığında master tabloyu (fatura bilgilerini tutan tablo) append ile ekledikten sonra ardından post ederek boş bir kayıt oluşturursun.Bu arada otomatik artan bir alanın olduğu için bununda değeri oluşmuş olur.Detay tabloya stoklardan kalem ekledikce detay_id alanına masterın otomatik artan alanının değerini verirsin.Peki kullanıcı fatura ekranını açtı ama kaydetmeden çıktı dersen onuda kontrol edip.masterdaki kaydı silersin.
:wink:
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim

nodetail
Üye
Mesajlar: 53
Kayıt: 04 Eki 2008 09:30

Re: Fatura Hareketlerindeki Sorgu

Mesaj gönderen nodetail » 16 Eki 2008 10:57

aynen böyle yaptım sonuç gayet güzel emeği geçen herkesten Allah razı olsun

serkan
Üye
Mesajlar: 666
Kayıt: 09 Tem 2003 11:08
Konum: bursa

Re: Fatura Hareketlerindeki Sorgu

Mesaj gönderen serkan » 16 Eki 2008 12:37

Rica ederiz,dediğim yöntemde tek bir sıkıntı var;oda eğer veritabanından master tabloyu tasarlarken bazı alanları (örn:FaturaNo,Firmakodu v.s) not null olarak oluşturduysan append komutundan sonra post dediğinde hata alırsın.Bu yüzden boş bırakılmıycak alanları veritabanından değil program içerisinden kendin kontrol etmek zorunda kalıyorsun.O kadarcıkda olsun.Kolay gelsin...

aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 03:08

Re: Fatura Hareketlerindeki Sorgu

Mesaj gönderen aLonE CoDeR » 17 Eki 2008 09:12

@serkan;

Bahsettiğin yöntemin yine bahsettiğin gibi dezavantajı var. Bunun yerine ilgili ekran açıldığında detay tabloyu ilişkisel alana 0 (sıfır) vererek açmak ve master tabloyu kaydettikten sonra ilişkili alanın değerini alarak detay tabloya atamak suretiyle bu dezavantajı ortadan kaldırmak daha sağlıklı bir yöntem. Özellikle not null kontrolünün kodla yapılması, kullanıcının bilinciyle paralel olmak kaydı ile kurda kuzu teslim etmek gibi bir şey fikrimce.

Kolay gele.

nodetail
Üye
Mesajlar: 53
Kayıt: 04 Eki 2008 09:30

Re: Fatura Hareketlerindeki Sorgu

Mesaj gönderen nodetail » 22 Eki 2008 12:19

ben bunu fatura alanına ' ' boş değer girerek yapıyorum sonra kaydetme aşamasında gerçek değeri ile güncelliyorum not null kontrolü gerçekten problem olabilir

Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 556
Kayıt: 11 Haz 2003 05:49
Konum: Adana
İletişim:

Re: Fatura Hareketlerindeki Sorgu

Mesaj gönderen m_ekici » 29 Eki 2008 06:48

diğer bir dezavantaj;

kullanıcı faturaya değiştir ile girdi. Birkaç satırı değiştirdi ve vazgeç ile faturayı kaydetmeden çıktı. Fatura satırları kaydedilmiş olur. (Geçici tabloda tutmaz veya transaction kullanmazsan)

Cevapla