Yorumları: 112
Konuları: 22
Kayıt Tarihi: 19-03-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 170 Başlangıç
21-10-2019, Saat: 23:36
(Son Düzenleme: 22-10-2019, Saat: 08:11, Düzenleyen: akuyumcu63.)
merhaba;
delphi rio - firedac - devexpress - firebird kullanıyorum,
malzeme tanımında her malzeme için en az 1, en fazla 3 birim tanımlaması yapılmakta ve malzemeye bağlı birimler tablosuna kaydedilmekte, yapılan birim tanımlamaları giriş yada çıkış fişlerinde cxgrid üzerinden malzeme seçilince malzemeye bağlı kaç birim tanımlaması varsa birim hücresinde lookupcombobox ayarlaması yapılmak suretiyle listelenip malzeme için tanımlı ilgili birimler kullanılıyor. buraya kadar bir sorun yok.
sorun ikincin üçüncü kayıtlar eklenince seçilen malzemelerin farklı farklı birim tanımları var ise daha önceki satırlardaki birimler kayboluyor ve en son eklenen malzemenin birimleri listeleniyor.
yapmaya çalıştığım şey şudur; cxgrid de malzeme sütununda malzemeyi seçince malzemeye bağlı birimler gelsin istediğim birimi seçeyim ikinci satıra geldiğimde tekrar malzemeyi seçince o malzemeye bağlı birimler gelsin mesela birici kayıtta adet düzine olsun ikinci kayıtta gram kilogram olsun, kayıtlar arasında gezinip birimlerde değişiklik yaptığım zaman sadece üzerinde düzenleme yaptığım kayıt etkilensin diğer kayıtların birimlerinde bir bozulma olmasın.
bu konuda nasıl bir yol izlemeliyim. fikir paylaşan herkese şimdiden çok teşekkür ederim.
Yorumları: 280
Konuları: 26
Kayıt Tarihi: 10-08-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.137 Programcı
Merhaba kardeş
Bİraz fazla karışık anlattın veya bana öyle geldi. Daha sade bir dille, kısa cumleler kurarak anlatabılırsen sevınırrım.
Mesela sorunun ıle ılgılı tabloların yapısı nedır.Yapmak istedıgın seyı cok basıt bır ornekle orneklendırebılırmısın.
"Yani kalem,silgi adında bie malzeme ekledim. birimini adet seçtim. lookupcombobox filtre yaptım. alt satıra gectim filttre yapmıyor gibi...."
Yardımcı olmak elbette isteriz
Yorumları: 884
Konuları: 35
Kayıt Tarihi: 12-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.853 Uzman
22-10-2019, Saat: 10:16
(Son Düzenleme: 22-10-2019, Saat: 10:37, Düzenleyen: esistem.)
Yapmak istediğini zaten yazmış arkadaş, sorun grid üzerinde bu işlemi yapabilmek. Kullanıcı istediği STOK/ÜRÜN ü seçince gidip ilgi tablodan birimlerini alıp combobox a basıp, istediğini seçip alt satıra geçtiği zaman da kaydedebilmek. Bu sisteme her zaman karşıydım, hala da karşıyım ama ne hikmetse herkes bu şekilde yapıyor, sanırım eskiden beri piyasada olan yazılımlar sürekli bu şekilde yapıldığı için yerleşen bir alışkanlık. İşin kolayı ve en önemlisi kullanıcı için daha basiti varken neden hala GRID üzerinden kayıt girdirmeye uğraşıyorsunuz ki?
Örnek olması için, kendi programımın fatura oluşturma aşamaları aşağıdadır.
Yorumları: 112
Konuları: 22
Kayıt Tarihi: 19-03-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 170 Başlangıç
22-10-2019, Saat: 10:59
(Son Düzenleme: 22-10-2019, Saat: 11:04, Düzenleyen: akuyumcu63.)
merhaba;
elimden geldiğince tekrar anlatmaya çalışayım.
tablolarım;
tblmalzeme, tblbirimler, tblfisler, tblfirshareket
malzeme tanımlarım ve birimleri;
KALEM (Adet, Düzine, Kutu),
ELEKTRİK KABLOSU (Metre, Paket),
ÇİVİ ( Gram, Kilogram),
DEFTER (Adet)
Çıkış fişi ekranında cxgrid de seçilen malzemeye göre ilgili birimleri Query ile çekiyorum.
birinci kayıtta KALEM i ekliyorum KALEM in birimleri griddeki birim (lookupComboBox olarak ayarlı) sütununda lookupcombobox listesine ekleniyor. KALEM için Düzine birimini seçiyorum.
ikinci kayıtta ÇİVİ ekliyorum ÇİVİ nin birimleri farklı olduğu için birinci kayıttaki Düzine tanımı kayboluyor. birim listesinde Gram ve Kilogram listeleniyor.
her eklenen kayıtta Query güncellendiği için Query nin listelediği kayıtlar son eklenen malzemenin birimlerini listeliyor.
ikinci kayıtta iken birinci kayıttaki seçilen birim kaydının sabit kalmasını istiyorum. birinci kayıtta iken ikinci kayıttaki seçilen birim kaydının sabit kalmasını istiyorum.
tek birim kullanılınca bir sıkıntı yok çoklu birim kullandığınız zaman durum değişiyor.
Adet 1 tane
düzine 12 tane
kutu 60 tane
gibi, seçilen birime göre stoktan miktar düşüyor.
Yorumları: 280
Konuları: 26
Kayıt Tarihi: 10-08-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.137 Programcı
22-10-2019, Saat: 13:37
(Son Düzenleme: 22-10-2019, Saat: 13:58, Düzenleyen: serdar.)
Merhaba tekrar,
LookupComboBox a ait query her kayıt değiştiğinde sorgulanıp filtreleniyor.
Mesela aktif kaydınızda "Metre, Paket" birimi varsa, o an diğer kayıtlarda "Metre, Paket" den farklı olanlar kaybolacaktır.
Bence bu alanı grid uzerınden düzeltmeyin. Alanı vertabanından birim adi ile ilişkilendirin.
Alanı button edit seklinde tanımlayın.
Buttona bastıgınızda showmodal bı pencereye küçük bir grid koyun ,yada inputquery ile seçilecek birimi almaya çalısın.(Tabi önce inputquery 'i iligili birimler ile doldurun.)
Bu modal pencereki gridden ,yada inputquery'den seçim yapılmışsa, asıl query ' inizi edit yapın. secilen değeri verin post edin, refresh edin.
Belki yardımcı olur sizin için
Yorumları: 697
Konuları: 21
Kayıt Tarihi: 24-03-2017
Rep Puanı: 4.465 Uzman
22-10-2019, Saat: 16:21
(Son Düzenleme: 22-10-2019, Saat: 16:23, Düzenleyen: frmman.
Sebep: imla
)
Merhaba mevcut projenizde ne kadar ilerlediniz ve nasıl bir yapı kurdunuz bilemiyorum ama şu şekilde bir tavsiyede bulunabilirim.
Giriş/çıkış fiş işlemlerini her satır işlemi olduğunda veri tabanına yazmak ve sorgu ile çekmek yerine (anlatımınıza göre sanki bu şekilde yapmış olabilirsiniz diye tahminde bulunuyorum) MemTable veya VirtualTable kullanarak fiş içeriğini hazırlayabilirsiniz. Doldurma işlemi bittikden sonra kaydetme butonu/işlemi ile memtable da tutulan kayıtların veritabanındaki ilgili tabloya/tablolara yazılması şeklinde olacaktır.
Memtable deki alanlarda da cxgridin lookupcombobox yapısını aynı şekilde kullanabilirsiniz. Cxgriddeki işlem yaptığınız alanın (properties = lookupcombobox olanlar) Events kısmında Properties->OnValidate kısmında da seçilene göre yapmak istediğiniz hesaplamaları/düzenlemeleri yapabilirsiniz.
Yorumları: 280
Konuları: 26
Kayıt Tarihi: 10-08-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.137 Programcı
22-10-2019, Saat: 16:54
(Son Düzenleme: 22-10-2019, Saat: 17:54, Düzenleyen: serdar.)
(22-10-2019, Saat: 16:21)frmman Adlı Kullanıcıdan Alıntı: Merhaba mevcut projenizde ne kadar ilerlediniz ve nasıl bir yapı kurdunuz bilemiyorum ama şu şekilde bir tavsiyede bulunabilirim.
Giriş/çıkış fiş işlemlerini her satır işlemi olduğunda veri tabanına yazmak ve sorgu ile çekmek yerine (anlatımınıza göre sanki bu şekilde yapmış olabilirsiniz diye tahminde bulunuyorum) MemTable veya VirtualTable kullanarak fiş içeriğini hazırlayabilirsiniz. Doldurma işlemi bittikden sonra kaydetme butonu/işlemi ile memtable da tutulan kayıtların veritabanındaki ilgili tabloya/tablolara yazılması şeklinde olacaktır.
Memtable deki alanlarda da cxgridin lookupcombobox yapısını aynı şekilde kullanabilirsiniz. Cxgriddeki işlem yaptığınız alanın (properties = lookupcombobox olanlar) Events kısmında Properties->OnValidate kısmında da seçilene göre yapmak istediğiniz hesaplamaları/düzenlemeleri yapabilirsiniz.
Merhaba @ frmman bir sorum olacaktı. " memtable da tutulan kayıtların veritabanındaki ilgili tabloya/tablolara yazılması şeklinde olacaktır." dediniz. Acaba ne şekilde kullanıyorsunuz döngü ile mi, yoksa save dataset , update dataset gibi bir methodu varmıdır?
Yorumları: 697
Konuları: 21
Kayıt Tarihi: 24-03-2017
Rep Puanı: 4.465 Uzman
(22-10-2019, Saat: 16:54)serdar Adlı Kullanıcıdan Alıntı: (22-10-2019, Saat: 16:21)frmman Adlı Kullanıcıdan Alıntı: Merhaba mevcut projenizde ne kadar ilerlediniz ve nasıl bir yapı kurdunuz bilemiyorum ama şu şekilde bir tavsiyede bulunabilirim.
Giriş/çıkış fiş işlemlerini her satır işlemi olduğunda veri tabanına yazmak ve sorgu ile çekmek yerine (anlatımınıza göre sanki bu şekilde yapmış olabilirsiniz diye tahminde bulunuyorum) MemTable veya VirtualTable kullanarak fiş içeriğini hazırlayabilirsiniz. Doldurma işlemi bittikden sonra kaydetme butonu/işlemi ile memtable da tutulan kayıtların veritabanındaki ilgili tabloya/tablolara yazılması şeklinde olacaktır.
Memtable deki alanlarda da cxgridin lookupcombobox yapısını aynı şekilde kullanabilirsiniz. Cxgriddeki işlem yaptığınız alanın (properties = lookupcombobox olanlar) Events kısmında Properties->OnValidate kısmında da seçilene göre yapmak istediğiniz hesaplamaları/düzenlemeleri yapabilirsiniz.
Merhaba @frmman bir sorum olacaktı. " memtable da tutulan kayıtların veritabanındaki ilgili tabloya/tablolara yazılması şeklinde olacaktır." dediniz. Acaba ne şekilde kullanıyorsunuz döngü ile mi, yoksa save dataset , update dataset gibi bir methodu varmıdır?
Siz bahsettikten sonra kontrol ettim FireDAC bileşen setindeki memtable bileşen setinde sanırım savedataset özelliği yok veya ben göremedim. Ben Jedi bileşen setinde bulunan memtable (daha doğru ifade ile TJVMemoryData) bileşenini kullanmıştım. Jedi bileşeninde savedataset özelliği var. Fakat veritabanına kayıt işlemini döngü ile yapmayı tercih etmiştim.
Kayıt için aşağıdaki gibi bir yapı kullandım.
MemoData.First;
while not MemoData.Eof do
begin
QDetay_.Insert;
QDetay_stok_id.Value := MemoDatastok_id.Value;
QDetay_miktar.Value := MemoDatamiktar.Value;
QDetay_birim_fiyat.Value := MemoDatabirim_fiyat.Value;
//-------
QDetay_.Post;
MemoData.Next;
end;
Yorumları: 112
Konuları: 22
Kayıt Tarihi: 19-03-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 170 Başlangıç
değerli kardeşlerim;
tavsiyelerinize bağlı olarak denemeler yapıyorum. bir sonuç üretebilirsem dönüş yapacağım.
birim alanında INTEGER bilgi tutuyorum. buttonedit te gördüğüm kadarıyla text veri tutuyor. yaptığım database kurgusunda INTEGER veriyi saklıyor text veriyi gösteriyor. lookupcombobox taki gibi bir düzen yakalamaya çalışıyorum.
fiş hareketleri için FDMemTable kullanıyorum. döngü ile database ye kayıt yapıyorum.
Yorumları: 280
Konuları: 26
Kayıt Tarihi: 10-08-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.137 Programcı
23-10-2019, Saat: 10:34
(Son Düzenleme: 23-10-2019, Saat: 10:36, Düzenleyen: serdar.)
(23-10-2019, Saat: 09:48)akuyumcu63 Adlı Kullanıcıdan Alıntı: değerli kardeşlerim;
tavsiyelerinize bağlı olarak denemeler yapıyorum. bir sonuç üretebilirsem dönüş yapacağım.
birim alanında INTEGER bilgi tutuyorum. buttonedit te gördüğüm kadarıyla text veri tutuyor. yaptığım database kurgusunda INTEGER veriyi saklıyor text veriyi gösteriyor. lookupcombobox taki gibi bir düzen yakalamaya çalışıyorum.
fiş hareketleri için FDMemTable kullanıyorum. döngü ile database ye kayıt yapıyorum.
tekrar merhaba,
Buttonedit'te isimi göstereceksin.buttona bastıgında ayrı pencereden (inputquery , lookup combobox) kullanıcı seçım yapacak. secılenın id değerini alacaksın.
ana tablonu edit moduna gecırıp, aldıgın id degerini, ana tablonun id degerıne set edip post edeceksin.
isim alanı refresh edilmesi gerekecek. dataseti refresh edeceksin. bunu kastetmıstım kardes.
|