Merhaba
Benim yapmak istediğim şey dbgriddeki bir veriye sağ tuş yapılıp ödeme yapa tıklanınca hali hazırda bulunan access veri tabanındaki tablomun fiyat ve taksit sayısı alanlarından fiyattan taksit miktarı(tablomda mevcut) kadar düşülecek ve taksit sayısı da ona bağlı olarak azalacak ve müşterinin ödemesi gereken taksiti kalmayınca " ödemesi bitenler " tablosuna kaydedilecek.
Bunu yapmak için gridin cellclik i yordamı ile griddeki seçilen satırın sayısını buldum ve veri tabanımdaki otomatik artan kimlik alanı ile eşleştirerek update etmeye çalıştım ancak sql kodu yazarken taksitsayisi=taksitsayisi -1 yapamadığım için devam edemedim.
Teşekkürler.
Popupmenu ile veri güncelleme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 35
- Kayıt: 24 Ağu 2010 09:46
- Konum: Samsun
Re: Popupmenu ile veri güncelleme
Merhabalar, hocam öncelikle kesinlikle yanlış yol izliyorsun, madem müşteri ödeme yaptı, bunu siz borçtan düşmeyin, sisteme ödeme yapıldığını veri olarak girin sistem giren-çıkan yaparak borç durumunu hesaplasın. ayrıca bu işlemi yapmak için dbrid ile değil veritabanına bağlandığınız dataset üzerinden daha kolay yapabilirsiniz. isterseniz tablo yapınızı gönderin daha detaylı yorum yapalım.
-
- Üye
- Mesajlar: 8
- Kayıt: 16 Nis 2020 07:14
Re: Popupmenu ile veri güncelleme
Merhabalar öncelikle cevap verdiğiniz için teşekkür ederim.
Sizin dediğiniz gibi yapmak çok mantıklı ama ben öğrenciyim ve ödevimde o kadar detaylı yapılmam istenmedi.
Sadece griddeki müşteride sağ tık yapıldığında ödeme yap gelir ona tıklandığında ise borçdan ve taksitten düşer.
Kişinin ödemesi bittiğinde Ödemesi Bitenler tablosuna eklensin şeklinde.
Delphi 7 kullanıyorum.Tablom müşteri ad,soyad,memleket gibi kişisel ürün bilgisi olarak ürün adı,fiyatı,ve taksit sayısı ve bir de aylık taksit tutarı(fiyat/taksitsayısı) alan adları mevcut.
Yardımlarınızı bekliyorum teşekkürler.
Sizin dediğiniz gibi yapmak çok mantıklı ama ben öğrenciyim ve ödevimde o kadar detaylı yapılmam istenmedi.
Sadece griddeki müşteride sağ tık yapıldığında ödeme yap gelir ona tıklandığında ise borçdan ve taksitten düşer.
Kişinin ödemesi bittiğinde Ödemesi Bitenler tablosuna eklensin şeklinde.
Delphi 7 kullanıyorum.Tablom müşteri ad,soyad,memleket gibi kişisel ürün bilgisi olarak ürün adı,fiyatı,ve taksit sayısı ve bir de aylık taksit tutarı(fiyat/taksitsayısı) alan adları mevcut.
Yardımlarınızı bekliyorum teşekkürler.
-
- Üye
- Mesajlar: 35
- Kayıt: 24 Ağu 2010 09:46
- Konum: Samsun
Re: Popupmenu ile veri güncelleme
o halde
tablonuzda ödemeye ilişkin 'fiyat' , 'taksit' , 'taksitsayisi' , 'aylikodeme' , 'kalanborc' sütünları olduğunu varsayalım. bu sütünların her biri için dbedit ekleyin,
yani DBfiyat , DBtaksitsayisi, DBaylikodeme, DBkalanborc gibi. bunların ilgili veritabanı bağlantılarını (dataset) yapın.
grid nesnesine bir popupmenu tanımlayın, bu menüye "ödeme al" ekleyin, ve onclick olayına
yazınız. menüye tıkanıldığında kaç taksit ödendiğini gireceksiniz. daha sonra basit olarak dbeditler üzerinden toplama çıkarma işlemi yaptıracaksınız. eğer (if) komutları ile borç kalıp kalmadıığnı sorgulatabilir bakiyenin eksiye düşmesini engelleyebilirsiniz.
kodları denemeden varsayımsal cevap verdiğim için hata verebilirler ama en basit mantığıyla böyle yapabilirsin
tablonuzda ödemeye ilişkin 'fiyat' , 'taksit' , 'taksitsayisi' , 'aylikodeme' , 'kalanborc' sütünları olduğunu varsayalım. bu sütünların her biri için dbedit ekleyin,
yani DBfiyat , DBtaksitsayisi, DBaylikodeme, DBkalanborc gibi. bunların ilgili veritabanı bağlantılarını (dataset) yapın.
grid nesnesine bir popupmenu tanımlayın, bu menüye "ödeme al" ekleyin, ve onclick olayına
Kod: Tümünü seç
//var odemeal:ansistring;
odemeal:=inputbox('Taksit Sayısı','Ödeme alınacak taksit sayısını belirtiniz?','1';
dataset1.edit;
DBkalanborc.text:=inttostr(strtoint(kalanborc.text) - strtoint(odemeal));
dataset1.post;
yazınız. menüye tıkanıldığında kaç taksit ödendiğini gireceksiniz. daha sonra basit olarak dbeditler üzerinden toplama çıkarma işlemi yaptıracaksınız. eğer (if) komutları ile borç kalıp kalmadıığnı sorgulatabilir bakiyenin eksiye düşmesini engelleyebilirsiniz.
kodları denemeden varsayımsal cevap verdiğim için hata verebilirler ama en basit mantığıyla böyle yapabilirsin
-
- Üye
- Mesajlar: 8
- Kayıt: 16 Nis 2020 07:14
Re: Popupmenu ile veri güncelleme
Merhabalar.
Mesajınız için teşekür ederim peki dbedit eklemeden nasıl halledebilirim bunu.
Teşekkürler
Mesajınız için teşekür ederim peki dbedit eklemeden nasıl halledebilirim bunu.
Teşekkürler
-
- Üye
- Mesajlar: 254
- Kayıt: 16 Şub 2004 06:12
- Konum: istanbul
Re: Popupmenu ile veri güncelleme
Merhaba,
Aşağıda ki kod mssql kodu ama yine de az çok bir fikir verecektir.
Kanaatimce Taksit ödemesi olması rağmen kısmi ödeme de yapılabileceğini düşünerek bence normal bir cari hesap hareketlerini takip edeceğin bir tablo oluştur (Fatura tarihi, Fatura no, Borç, Alacak, Bakiye vs gibi) buraya gelen ödemeleri işledikçe trigger ile aşağıdaki kodlarla anlattığım gibi vadesi gelen ilk taksiti kapatacak şekilde ilerler.
Aşağıda ki kod mssql kodu ama yine de az çok bir fikir verecektir.
Kanaatimce Taksit ödemesi olması rağmen kısmi ödeme de yapılabileceğini düşünerek bence normal bir cari hesap hareketlerini takip edeceğin bir tablo oluştur (Fatura tarihi, Fatura no, Borç, Alacak, Bakiye vs gibi) buraya gelen ödemeleri işledikçe trigger ile aşağıdaki kodlarla anlattığım gibi vadesi gelen ilk taksiti kapatacak şekilde ilerler.
Kod: Tümünü seç
declare @Hareketlet Table (Fat_id int, islem_tarihi date, islem_Turu varchar(10),Borc money, Alacak money)
insert into @Hareketlet(Fat_id, islem_tarihi, islem_Turu, Borc,Alacak )
values
(1, '2020-1-5','Fatura',250,0),
(2, '2020-1-10','Odeme',0,15),
(3, '2020-1-20','Odeme',0,20),
(4, '2020-1-22','Odeme',0,25),
(5, '2020-1-23','Odeme',0,30),
(6, '2020-1-24','Odeme',0,40)
--SELECT * from @Hareketlet
SELECT a.islem_tarihi,COALESCE(Borc, 0) AS Borc,COALESCE(Alacak, 0) as Alacak,
(SELECT SUM(COALESCE(Borc, 0)) - SUM(COALESCE(Alacak, 0)) FROM @Hareketlet b
WHERE b.islem_tarihi <= a.islem_tarihi ) AS Bakiye
FROM @Hareketlet a
order by a.islem_tarihi
declare @Bakiye money = (SELECT SUM(COALESCE(Alacak, 0)) FROM @Hareketlet)
-- Kesilen 250 Tl faturayı 5 taksite böldük varsayalım
declare @Taksit_Tablosu Table (Taksit_id int, vade_tarihi date, Taksit_Tutarı money, Taksit_Odemesi money)
insert into @Taksit_Tablosu (Taksit_id, vade_tarihi, Taksit_Tutarı, Taksit_Odemesi )
values
(1, '2020-2-1', 50,0),
(2, '2020-3-1', 50,0),
(3, '2020-4-1', 50,0),
(4, '2020-5-1', 50,0),
(5, '2020-6-1', 50,0)
-- SELECT * from @Taksit_Tablosu
declare @Taksit_Tablosu2 table(Taksit_id int, vade_tarihi date, Taksit_Tutarı money,
Taksit_Odemesi money, Kalan_Tutar as (Taksit_Tutarı - Taksit_Odemesi))
insert into @Taksit_Tablosu2 (Taksit_id, vade_tarihi, Taksit_Tutarı, Taksit_Odemesi)
select
Taksit_id,
vade_tarihi,
Taksit_Tutarı,
0 as Taksit_Odemesi
from @Taksit_Tablosu
declare @Taksit_id int = 1
declare @Kismi_Odeme money = @Bakiye
declare @Kalan_Kismi_Odeme money = 0
while @Kismi_Odeme > 0
begin
select
@Kalan_Kismi_Odeme = @Kismi_Odeme - Taksit_Tutarı
from @Taksit_Tablosu2 t
where
t.Taksit_id = @Taksit_id
update t
set t.Taksit_Odemesi =
case
when @Kalan_Kismi_Odeme > 0 then t.Taksit_Tutarı
else @Kismi_Odeme
end
from @Taksit_Tablosu2 t
where
t.Taksit_id = @Taksit_id
set @Kismi_Odeme = @Kalan_Kismi_Odeme
set @Taksit_id = @Taksit_id + 1
end
--select * from @Taksit_Tablosu2
select Taksit_id, vade_tarihi, Taksit_Tutarı, Taksit_Odemesi,Kalan_Tutar,
CASE WHEN Kalan_Tutar = 0.00 THEN 'Ödeme Kapandı'
When Taksit_Odemesi > 0.00 THEN 'Kismi Ödeme'
ELSE 'Ödeme Bekliyor' END AS Durumu
from @Taksit_Tablosu2
-
- Üye
- Mesajlar: 8
- Kayıt: 16 Nis 2020 07:14
Re: Popupmenu ile veri güncelleme
Merhaba,
İlgi alaka ve emekleriniz için teşekkür ederim.
Amacıma ulaştım .
İlgi alaka ve emekleriniz için teşekkür ederim.
Amacıma ulaştım .