Fatura Hareketlerinde Fatura ID'si
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Fatura Hareketlerinde Fatura ID'si
S.A.
Uzun zaman oldu buralara uğramayalı,
Form içinde çok aradım ama sanırım ben bulamadım yada doğru aramayı yapamadım.
Soruma gelecek olursak;
Bir fatura veya irsaliye programı düşünün, fatura üst bilgisini girdiniz fatura hareketi gireceksiniz ama fatura üst bilgisi henüz kayıt edilmediği için hareket satırlarını bağlayabileceğiniz bir fatura ID yok elinizde, farklı yollardan çözüm aradım ama çoğu stabil değil. Bunun en mantıklı yolu veya çözümü nedir.
Uzun zaman oldu buralara uğramayalı,
Form içinde çok aradım ama sanırım ben bulamadım yada doğru aramayı yapamadım.
Soruma gelecek olursak;
Bir fatura veya irsaliye programı düşünün, fatura üst bilgisini girdiniz fatura hareketi gireceksiniz ama fatura üst bilgisi henüz kayıt edilmediği için hareket satırlarını bağlayabileceğiniz bir fatura ID yok elinizde, farklı yollardan çözüm aradım ama çoğu stabil değil. Bunun en mantıklı yolu veya çözümü nedir.
Re: Fatura Hareketlerinde Fatura ID'si
Bu arada sql vt ve cxgrid kullanıyorum
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: Fatura Hareketlerinde Fatura ID'si
başlık ve hareket tablosunu bir memory datasete veya sqlite ' a tutup en son işlem tamamlandığında database yazabilirsiniz.
Mücadele güzelleştirir!
Re: Fatura Hareketlerinde Fatura ID'si
Aleykümselam,
Alternatif yöntem olarak direk database ve tablo üzerinde çalışabilmek adına master ve detail tabloları GUID kolon üzerinden eşleştirebilirsiniz. Veri girmeye başlamadan üreteceğiniz bir GUID veriyi her iki tabloda da kullanabilirsiniz.
Alternatif yöntem olarak direk database ve tablo üzerinde çalışabilmek adına master ve detail tabloları GUID kolon üzerinden eşleştirebilirsiniz. Veri girmeye başlamadan üreteceğiniz bir GUID veriyi her iki tabloda da kullanabilirsiniz.
Re: Fatura Hareketlerinde Fatura ID'si
İlginiz için teşekkürler arkadaşlar
Memory dataset kullanmışta olsam sonuçta bir id bağlantım olmayacak buradaki mantığı anlayamadım, sqlite ile ilgili bir bilgim yok o yüzden onuda eledim şimdilik.
GuId çok mantıklı ve kullanışlı geldi daha önce hiç denemedim ama teoride çok sevdim kendisini, ancak daha önce hiçbir program veri tabanında gördüğümü anımsayamadım belkide benim gözümden kaçmıştır. Guid avantaj ve dezavantajları nelerdir bilmiyorum ilerde bana sorun çıkarır mı acaba kendileri.
Yinede daha başka alternatif yöntem ve bilgilerinizi bekliyorum. En profesyonelce olanı bulmaya çalışıyorum.
Memory dataset kullanmışta olsam sonuçta bir id bağlantım olmayacak buradaki mantığı anlayamadım, sqlite ile ilgili bir bilgim yok o yüzden onuda eledim şimdilik.
GuId çok mantıklı ve kullanışlı geldi daha önce hiç denemedim ama teoride çok sevdim kendisini, ancak daha önce hiçbir program veri tabanında gördüğümü anımsayamadım belkide benim gözümden kaçmıştır. Guid avantaj ve dezavantajları nelerdir bilmiyorum ilerde bana sorun çıkarır mı acaba kendileri.
Yinede daha başka alternatif yöntem ve bilgilerinizi bekliyorum. En profesyonelce olanı bulmaya çalışıyorum.
Re: Fatura Hareketlerinde Fatura ID'si
memory dataset kullandığımda; kaydedilmiş bir faturayı açtığımda normal detail tabloyu yeniden memory dataset'e mi aktarmam gerekiyor yeni girişler için
Re: Fatura Hareketlerinde Fatura ID'si
Belgeyi kaydedip id'yi kullanin. Hic ugrasmayin bence. Ornegin yeni irsaliye diyip formu actiniz.
Table1.insert;
Table1belgetarihi.value:=now;
Table1.post;
İd alaninizin siralamasinin ne oldugunun farketmedigi durumlarda.
İdlerin siralamasinin bi onemi varsa isler degisir tabi.
Table1.insert;
Table1belgetarihi.value:=now;
Table1.post;
İd alaninizin siralamasinin ne oldugunun farketmedigi durumlarda.
İdlerin siralamasinin bi onemi varsa isler degisir tabi.
Re: Fatura Hareketlerinde Fatura ID'si
SQL Server için uniqueidentifier kolon veri türü GUID oluyor.
PostgreSQL için uuid kolon veri türü GUID oluyor.
Bunun dışında birçok yaygın kullanılan database sistemi GUID kolon veri türü desteği sunmaktadır.
Birçok yerde kullanılan bir veri türüdür. Özünde büyük bir rakamsal alan olduğu için string alanlara göre performansı çok olumsuz etkilemez.
Dezavantaj olarak söylenebilecek: Çok çok düşük olmasına rağmen iki GUID değeri aynı olabilir. Bu durumda "key violation" hatası alabilirsiniz. Aynı GUId değeri arızalı donanımı olan bilgisayarlarda daha yüksek ihtimaldir. Ethernet kartı MAC adresi de GUID üretilirken kullanılan bilgiler arasında. Eski yıllarda "no-name" olarak tabir edilebilen iki ethernet kartı aynı mac adresine sahip olabiliyordu. Diğer taraftan teoride bizim dünya hayatımız iki tane aynı GUID değerini üretecek kadar uzun değildir.
Re: Fatura Hareketlerinde Fatura ID'si
Bu id ye neden takılıyorsunuz bu kadar? db ye beforeinsert trigger ekleyin ve prkey= max(prkey) +1; (function yada select yazın) ardışıklığı garanti edin. Sonuçta ardışık bir değer.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Re: Fatura Hareketlerinde Fatura ID'si
Üstad ben mi yanlış anladım tamam id'yi unutalım diyelim.
beforeinsert'te prkey bile oluşturacak olsak kayıt tuşuna basmadan bir değer dönmeyecek bu durumda master tabloda halen detail tabloyu bağlayacak bir değer yok.
GuId ile memory dataset arasında kaldım gerçekten memory dataset'in bu durumdaki mantığınıda şu noktada anlayamadım;
Yeni kayıt > master girişini yaptık detail girişini memory dataset'e yazdık kaydettik asıl detail tabloya yazdırdık.
Peki kayıt düzenleme yapacağımız zaman yani satır ekleme çıkarma güncelleme yapacağımız zaman yeniden memory dataset'e mi alacağız veriyi
beforeinsert'te prkey bile oluşturacak olsak kayıt tuşuna basmadan bir değer dönmeyecek bu durumda master tabloda halen detail tabloyu bağlayacak bir değer yok.
GuId ile memory dataset arasında kaldım gerçekten memory dataset'in bu durumdaki mantığınıda şu noktada anlayamadım;
Yeni kayıt > master girişini yaptık detail girişini memory dataset'e yazdık kaydettik asıl detail tabloya yazdırdık.
Peki kayıt düzenleme yapacağımız zaman yani satır ekleme çıkarma güncelleme yapacağımız zaman yeniden memory dataset'e mi alacağız veriyi
Re: Fatura Hareketlerinde Fatura ID'si
İsterseniz sürekli memory table üzerinde tutun veriyi ve her defasında database'den okuyup memorytable üzerine alın. İsterseniz sadece yeni kayıt girişinde bu yöntemi izleyin. Düzenleme, ekleme ve silme için direk database tablosu üzerinden çalışın.
Her ikiside yapılabilir yöntemler. Hangisi sizin için daha faydalı ve kullanışlı ona sizin karar vermeniz gerekli.
Re: Fatura Hareketlerinde Fatura ID'si
Dostun senden Allah razı olsun, aydınlattığın için kafamda birçok şey aşıldı.
Bu konu altında yazmamın umarım bir mahsuru yoktur ama aklıma gelmişken sorayım dedim.
dediğin gibi satır ekleme silme güncelleme için direk database tablosunu kullandığımı varsayalım.
Cxgrid üzerinde yeni satır eklemek için append kullanıyorum,
güncelleme için direk hücreler üzerinde oynuyorum. peki kayıt tuşuna basmadan kaydetmesini nasıl engellerim.
Bu konu altında yazmamın umarım bir mahsuru yoktur ama aklıma gelmişken sorayım dedim.
dediğin gibi satır ekleme silme güncelleme için direk database tablosunu kullandığımı varsayalım.
Cxgrid üzerinde yeni satır eklemek için append kullanıyorum,
güncelleme için direk hücreler üzerinde oynuyorum. peki kayıt tuşuna basmadan kaydetmesini nasıl engellerim.
Re: Fatura Hareketlerinde Fatura ID'si
Birçok farklı şekilde yapılabilir. İlk aklıma gelen:
- cxGrid.Tag özelliğini 1 yapın.
- Buton tıklama kodunda önce Tag değerini 0 yapın. Ardından kaydedin. Kayıt sonrası hemen eski değeri 1 haline geri getirin.
- İlgili TDataSet.OnBeforePost() olayında cxGrid.Tag = 0 ise kayıt girişine izin verin. farklı bir değer görür iseniz "Lütfen veri girişi için kayıt butonunu kullanın" gibi bir mesaj gösterebilirsiniz.
- cxGrid.Tag özelliğini 1 yapın.
- Buton tıklama kodunda önce Tag değerini 0 yapın. Ardından kaydedin. Kayıt sonrası hemen eski değeri 1 haline geri getirin.
- İlgili TDataSet.OnBeforePost() olayında cxGrid.Tag = 0 ise kayıt girişine izin verin. farklı bir değer görür iseniz "Lütfen veri girişi için kayıt butonunu kullanın" gibi bir mesaj gösterebilirsiniz.
Re: Fatura Hareketlerinde Fatura ID'si
CxGrid Satır satır ekleme ve güncelleme yaptığından bu olmuyor.
satır değiştirince post etmek istediğinden dataset'i kitliyor.
yeni edite izin vermiyor.
satır değiştirince post etmek istediğinden dataset'i kitliyor.
yeni edite izin vermiyor.
Re: Fatura Hareketlerinde Fatura ID'si
Siz orjinal sorunuzda "birden fazla satırda değişiklik yapılsın ancak kaydet butonu ile hepsi database'e yazılsın" benzeri açık bir ifade kullanmadığınız için ben tek bir kayıt ile ilgili olduğunu düşünerek buna göre öneri sundum.
Satır değiştirince edit modundan çıkıp veriyi kayıt etme özelliği DBGrid türevlerinin hepsinde vardır. cxGird bu davranışı sergileyen tek grid bileşeni değildir.
Gerçekleştirmek istediğiniz yöntemi;
- Kullandığınız database erişim bileşenlerinin var ise "CachedUpdate" özelliğini kullanarak,
- TClientDataSet bileşeni kullanarak (cached update desteği vardır)
- Memory table kullanarak elde etmeniz mümkün
Eğer var ise database bileşenlerinin CachedUpdate özelliğini tercih edebilirsiniz. Kullandığınız bileşenlerin bu özelliği yok ise son bildirdiğiniz ihtiyacınıza yönelik yeni kayıt ve değişiklik işlemlerinin tamamında memorytable kullanmanız daha pratik olacaktır.
Değişiklik yapmadan önce database tablosu üzerindeki verileri bir şekilde memory table içine yüklemeniz ardından da sadece üzerinde değişiklik olan kayıtları database tablosu üzerinde güncellemeniz gerekecektir. Ya da eğer silinip yeniden kaydedilmesi sorun olmayacak ise eski kayıtların tümünü silip yeni son hallerini kaydedebilirsiniz.