sqlde tarihe göre kayıt girdirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
altuntas
Üye
Mesajlar: 13
Kayıt: 17 May 2009 11:36

sqlde tarihe göre kayıt girdirme

Mesaj gönderen altuntas »

merhaba arkadaşlar;
benim 2 adet tablom var.1.tablom cariler 2.tablom puantaj tablosu
cariler tablosundaki carilerin puantaj hesabı varsa puantaj tablosuna günlük olarak adetleri kaydetmesini istiyorum.
ve formum her açıldığında her gün puantaj hesabı olan carilerin puantaj tablosunda listelenmesi ve o güne ait kayıtlarının girilmesini istiyorum.
cariler tablosundaki puantaj hesabı olan 3 carinin her gün puantaj tablosuna kayıt girilmesi gerekiyor.
Puantaj hesabı olan ve cariye ait puantaj tutarı girilmemiş olan kayıtları listeletip nasıl veri girişi yaptırabilirim.
Puantaj tablosuna istediğim anda kayıt girdirebiliyorum fakat benim istediğim bu günün tarihinde puantaj hesabı olan 3 cariye ait kaydın girişini nasıl yaptırabilirim.
tablo yapıları şöyle:

cariler
cari kodu cari ismi birim fiyat birim fiyat2
CR0005 TEST5 1,00 2,00
CR0006 TEST6 2,00 3,00
CR0007 TEST7 3,00 5,00
puantaj tablosu

cari kodu cari ismi satış no sabah kahvaltısı öğle yemeği akşam yemeği YEMEK_TOPLAM_ADET tarih kullanıcı
CR0005 TEST5 SP100 5 6 7 18 2015-06-28 23:16:02.723 usr1



aşağıdaki sql kodu ile bu güne ait carilerin kayıtlarını listeletebiliyorum.Ama yarın için veya 5 gün sonrası için 3 carinin boş puantaj değerlerini nasıl listeletebilirim. kayıt girşini nasıl sağlatabilirim.

CR0005 TEST5 1,00 2,00 SP100 5 6 7 18 2015-06-28 23:16:02.723 usr1
CR0006 TEST6 1,00 2,00 NULL NULL NULL NULL NULL NULL NULL
CR0007 TEST7 1,00 2,00 NULL NULL NULL NULLNULL NULL NULL

SELECT CARILER.CARI_KOD, CARILER.CARI_ISIM, CARILER.BIRIMFIYAT2, CARILER.BIRIMFIYAT1, PUANTAJ.SATIS_NO, PUANTAJ.SABAH_KAHVALTISI,
PUANTAJ.OGLE_YEMEGI, PUANTAJ.AKSAM_YEMEGI, PUANTAJ.YEMEK_TOPLAM_ADET, PUANTAJ.TARIH, PUANTAJ.KAYITEDEN_KULLANICI
FROM CARILER LEFT OUTER JOIN
PUANTAJ ON CARILER.CARI_KOD = PUANTAJ.CARI_KOD
WHERE (CARILER.CARI_TIPI = 'ALICI') AND (CARILER.PUANTAJ_DURUMU = 'VAR') AND (CARILER.KILIT_DURUMU = 'AÇIK')

yardımcı olan arkadaşlara teşekkür ederim.
altuntas
Üye
Mesajlar: 13
Kayıt: 17 May 2009 11:36

Re: sqlde tarihe göre kayıt girdirme

Mesaj gönderen altuntas »

arkadaşlar yardımcı olur musunuz?
altuntas
Üye
Mesajlar: 13
Kayıt: 17 May 2009 11:36

Re: sqlde tarihe göre kayıt girdirme

Mesaj gönderen altuntas »

ustalar yardımı olacak birişleri yok mudur?carilere günlük satış yaptıracak puantaj hesabını nasıl çözebilirim.
speed60
Üye
Mesajlar: 53
Kayıt: 07 Eki 2011 08:07

Re: sqlde tarihe göre kayıt girdirme

Mesaj gönderen speed60 »

sayın altuntas sen önce tablo yapılarını düzgün ver ondan sonra yardım bekle
Tablo yapıları şöyle:

cariler
cari kodu cari ismi birim fiyat birim fiyat2

puantaj tablosu
cari kodu cari ismi satış no sabah kahvaltısı öğle yemeği akşam yemeği YEMEK_TOPLAM_ADET tarih kullanıcı

sonrada kalkmış sorgunda tablolarda görülmeyen alanlarda soru cümlecikleri
WHERE (CARILER.CARI_TIPI = 'ALICI') AND (CARILER.PUANTAJ_DURUMU = 'VAR') AND (CARILER.KILIT_DURUMU = 'AÇIK')
kullanmışsın
bak bakalım tablo yapılarınla sorgun birbirine uyuyormu.
cevabını almak istediğin soruyu açık soracaksın arkadaşlar anlayacak ona göre cevap yazacak.
kolay gelsin Allah yardımcın olsun.
altuntas
Üye
Mesajlar: 13
Kayıt: 17 May 2009 11:36

Re: sqlde tarihe göre kayıt girdirme

Mesaj gönderen altuntas »

speed60 yazdı:sayın altuntas sen önce tablo yapılarını düzgün ver ondan sonra yardım bekle
Tablo yapıları şöyle:

cariler
cari kodu cari ismi birim fiyat birim fiyat2

puantaj tablosu
cari kodu cari ismi satış no sabah kahvaltısı öğle yemeği akşam yemeği YEMEK_TOPLAM_ADET tarih kullanıcı

sonrada kalkmış sorgunda tablolarda görülmeyen alanlarda soru cümlecikleri
WHERE (CARILER.CARI_TIPI = 'ALICI') AND (CARILER.PUANTAJ_DURUMU = 'VAR') AND (CARILER.KILIT_DURUMU = 'AÇIK')
kullanmışsın
bak bakalım tablo yapılarınla sorgun birbirine uyuyormu.
cevabını almak istediğin soruyu açık soracaksın arkadaşlar anlayacak ona göre cevap yazacak.
kolay gelsin Allah yardımcın olsun.
speed60 o zaman birisi sen gibi anlamadık diye söyleseydi ben de ona göre daha açık olarak yazardım ilgin için teşekkürler ;
Aslında soru bu.cariler tablomdaki tipi alıcı olan ve puantaj hesabı ='VAR'olan kilit durumu da açık olan carilerin birim fiyatlarına göre (Birim Fiyatı1 yemek ücreti Birim Fiyatı 2 KAhvaltı Ücreti) puantaj tablolarına günlük olarak satış adetlerini kaydettirmek istiyorum..Puantaj durumunu sende bilirsin ki her gün girilmesi gerekir.Çetele hesabı gibi.Gelelim puantaj tabloma

Puantaj tablomda neler var? yemek toplam adeti sql de otomatik toplanıyor.

cari kodu cari ismi satış no sabah kahvaltısı öğle yemeği akşam yemeği YEMEK_TOPLAM_ADET tarih kullanıcı
CR0005 TEST5 SP100 1 5 6 7 18 2015-06-28 23:16:02.723 usr1
cari kodu cari ismi satış no sabah kahvaltısı öğle yemeği akşam yemeği YEMEK_TOPLAM_ADET tarih kullanıcı
CR0004 TEST4 SP101 2 7 4 5 16 2015-06-28 23:16:02.723 usr1

Şimdi cr0004 ve cr0005 nolu carimin kilit durumu açık puantaj durumu var bunları sisteme kaydedebiliyorum.Misal cariler 2 tane değil de belki 100 tane olacak.hepsinin hergün kaydını nasıl girdirebilirim.


cariler tablomdaki tipi alıcı olan ve puantaj hesabı ='VAR'olan kilit durumu da açık olan carilerin birim fiyatlarına göre (Birim Fiyatı1 yemek ücreti Birim Fiyatı 2 KAhvaltı Ücreti) olan belki 100 adet cariyi seçip puantaj tablosuna her gün nasıl yazdırabilirim.Yinede anlaşılmadıysa tabloları ekran görüntüsü ve form arayüz gönderebilirim.
speed60
Üye
Mesajlar: 53
Kayıt: 07 Eki 2011 08:07

Re: sqlde tarihe göre kayıt girdirme

Mesaj gönderen speed60 »

bu kodu kendine göre organize etmen gerekebilir ayrıca tablo yapıların anladığım kadarıyla yanlış gibime geliyor.

INSERT INTO PUANTAJ(CARI_KOD,CARI_ISIM,SATIS_NO,SABAH_KAHVALTISI,
OGLE_YEMEGI,AKSAM_YEMEGI,YEMEK_TOPLAM_ADET,TARIH,KAYDEDEN_KULLANICI)
(SELECT CARI_KOD, CARI_ISIM, (satış no yu nerden alacak),
sum(BIRIMFIYAT1 x adeti nerden alacak) AS SABAH_KAHVALTISI,
sum(BIRIMFIYAT2 x adeti nerdenden alacak) AS OGLE_YEMEGI,
sum(birim fiyatı nerden alacak x AKSAM_YEMEGI) AS AKSAM_YEMEGI,
sum(SABAH_KAHVALTISI + OGLE_YEMEGI + AKSAM_YEMEGI) AS YEMEK_TOPLAM_ADET,
TARIH,KAYDEDEN_KULLANICI FROM CARILER
WHERE (CARI_TIPI = 'ALICI') AND (PUANTAJ_DURUMU = 'VAR') AND (KILIT_DURUMU = 'AÇIK'))
altuntas
Üye
Mesajlar: 13
Kayıt: 17 May 2009 11:36

Re: sqlde tarihe göre kayıt girdirme

Mesaj gönderen altuntas »

demek istediğini anladım.yani carinin puantaj hesabı olanlarının bilgisini puantaj tablosuna bu şekilde yaz diyorsun yani.bunu delphinin içinde her gün olacak şekilde mi yapmalıyım sence yoksa bir stored procedure ile mi yapayım?
altuntas
Üye
Mesajlar: 13
Kayıt: 17 May 2009 11:36

Re: sqlde tarihe göre kayıt girdirme

Mesaj gönderen altuntas »

(satış no yu nerden alacak)=satış noyu programda belirli bir sıralamada artan şeklinde insert yaptığında puantaj tablosuna insert edecek
(BIRIMFIYAT1 x adeti nerden alacak)=Birim Fiyatı 1 öğle ve akşam yemeği bedeli. cari tablosundaki birimfiyat1 alanından alacak
(BIRIMFIYAT2 x adeti nerdenden alacak) Birim Fiyatı 2 sabah kahvaltısı bedeli.cari tablosundaki birimfiyat2 alanından alacak
YEMEK_TOPLAM_ADET=sabah kahvaltısı+öğle yemeği+akşam yemeği günlük olarak cari kaç adet yemek aldıysa onun yemek adet toplamı.--puantaj tablosunda bu alan otomatik hesaplatılıyor.

buna göre bir cari 01.07.2015 tarihinde 3 adet sabah kahvaltısı 2 adet öğle yemeği 5 adet akşam yemeği alıyorsa
YEMEK_TOPLAM_ADET=3+2+5=10.bu cari 01.07.2015 tarihinde toplam 10 adet yemek almış.(3 ü sabah kahvaltısı 7 si öğle ve akşam yemeği)gelelim carinin borç tutarı hesaplamasına

Carinin 1 adet sabah kahvaltı (birim fiyatı2) tutarı 5 tl olsun
Carinin 1 adet öğle veya akşam yemeği (birim fiyatı1) tutarı 12 tl olsun.
buna göre cari 01.07.2015 tarihinde 3*5 =15 ve
7*12=84 tl tutarında yemek almıştır.(3 ü sabah kahvaltısı 7 si öğle ve akşam yemeği)

Toplam borç tutarı ise 84+15=99 dir.
Ben kullanıcıdan puantaj hesabı olan carilerin yemek adetlerini günlük olarak programa adet şeklinde girmelerini istiyorum.Zaten birim fiyat 1 ve birim fiyat2 alanları cari tabloda mevcut.Sadece puantaj tablosuna günlük olarak yemek adetlerini girecek program da tutarını hesaplayacak.

01.07.2015 tarihinde 3 nolu cari 3 adet sabah kahvaltısı 2 adet öğle yemeği 5 adet akşam yemeği almış ve 10 adet yemek için tutar borcu 99 tl imiş
01.07.2015 tarihinde XX nolu cari 0 adet sabah kahvaltısı 8adet öğle yemeği 4 adet akşam yemeği almış ve 12 adet yemek için tutar borcu 120 tl imiş
...
..
02.07.2015 tarihinde 3 nolu cari 8 adet sabah kahvaltısı 10 adet öğle yemeği 5 adet akşam yemeği almış ve 23 adet yemek için tutar borcu 244 tl imiş

Böylece her gün kullanıcı sadece puantaj tablosuna yemek adetleri girdiği için tutarlar birim fiyatlarına göre otomatik hesaplanacak ve bunu günlük çizelge şeklinde dökmem gerekiyor.
altuntas
Üye
Mesajlar: 13
Kayıt: 17 May 2009 11:36

Re: sqlde tarihe göre kayıt girdirme

Mesaj gönderen altuntas »

kardeşim öncelikle yardımın için çok teşekkür ederim.Allah razı olsun.
Pauntaj Hesabı olan carilerin cari tablosundaki cari isimlerini puantaj tablomdaki alanlara günlük olarak yazdırmak istiyorum.
Örneğin pazartesi günü a carisi toplam 10 adet yemek yemiş 50 tl borcu var
pazartesi günü b carisi 5 yemek yemiş 25 tl borcu var
salı günü a carisi 20 yemek yemiş toplam 100 tl borcu olacak
salı günü b carisi 3 yemek yemiş 15 tl borcu var

böyle günlük olarak hangi cari hangi günde kaç adet sabah öğle ve akşam yemeği yemiş hesaplatmak istiyorum.kullanılan tablolar cariler ve puantaj
puantaj tablomda cari kodu cari ismi sabah öğle akşam yemek adetleri toplam yemek adeti tarih alanım var
cariler tablosunda ise cari tipi puantaj durumu vs.var...
speed60
Üye
Mesajlar: 53
Kayıt: 07 Eki 2011 08:07

Re: sqlde tarihe göre kayıt girdirme

Mesaj gönderen speed60 »

INSERT INTO PUANTAJ(CARI_KOD,CARI_ISIM,SATIS_NO,SABAH_KAHVALTISI,
OGLE_YEMEGI,AKSAM_YEMEGI,YEMEK_TOPLAM_ADET,TARIH,KAYDEDEN_KULLANICI)
(SELECT CARI_KOD, CARI_ISIM, ID,
sum (BIRIMFIYAT2 * (3)) AS SABAH_KAHVALTISI,
sum (BIRIMFIYAT1 * (2)) AS OGLE_YEMEGI,
sum (BIRIMFIYAT1 * (5)) AS AKSAM_YEMEGI,
sum(3 + 2 + 5) AS YEMEK_TOPLAM_ADET,
TARIH,KAYDEDEN_KULLANICI FROM CARILER
WHERE (CARI_TIPI = 'ALICI') AND (PUANTAJ_DURUMU = 'VAR') AND (KILIT_DURUMU = 'AÇIK')
GROUP BY CARI_KOD,CARI_ISIM,ID,TARIH,KAYDEDEN_KULLANICI)
-------------------------------------------------------------------------------
bu kod senin istediğini yapar ama yemek adetlerini ben sayı olarak verdim sen nereden alacaksan onu ayarlarsın ayrıca bu kodu her çalıştırışında koşula uyan satırları tekrar ekler bunu ayrı bir yöntemle kontrol etmen gerekir
altuntas
Üye
Mesajlar: 13
Kayıt: 17 May 2009 11:36

Re: sqlde tarihe göre kayıt girdirme

Mesaj gönderen altuntas »

deneyeceğim speed60 teşekkürler yardımın için
Cevapla