SQL, CxGrid, İki Tablo, 3 Kriter

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

SQL, CxGrid, İki Tablo, 3 Kriter

Mesaj gönderen csyasar »

merhaba arkadaşlar;

bir programımda DÖVİZ ve KUR bilgileriyle ilgili bir problemim vardı. elimizdekileri ve yapmam gerekenleri yazayıp:

Program, Arayüz:
Delphi 7, Firebird 1.5.2, QuantumGrid5

Tablolar ve alanlar:
DOVIZ: DV_KOD_NUM, DV_SEMBOL, DV_ADI
KURLAR:KR_DV_KOD_NUM, KR_ALIS, KR_SATIS, KR_TARIH

yapmam gereken şey şu:

benim cxgridde 5 adet row(tanımlı döviz sayısı kadar) görünecek. + olarak kayıt eklenemeyecek. ve bu döviz bilgileri değiştirilemeyecek çünki bu grid kurların girişi ile ilgili. neyse döviz adlarının yanında alış satış kurları yazcak. bir de bunların üstüne kurlar tarih sıralı gözükücek. aynen şu ekran görüntüsünde olduğu üzre:
Resim

gördüğünüz gibi solda farklı bir tablodan döviz adını alıyor. sağda ise kurlar tablosundan kurları alıyor. üstteki date time comboboxtan ise seçilen tarihe göre kurları sorguluyor.

bunun için benim yazdığım kod şu:

Kod: Tümünü seç

SELECT D.*, K.* FROM DOVIZ D, KURLAR K WHERE D.DV_KOD_NUM=K.KR_DV_KOD_NUM AND K.KR_TARIH=28.12.2005
gibi. ama sorgu sonucu 0 kayıt dönüyor bunu nasıl yaparız arkadaşlar??
snofru
Üye
Mesajlar: 204
Kayıt: 19 Ağu 2004 02:57
Konum: /local/usr/src
İletişim:

Mesaj gönderen snofru »

Kod: Tümünü seç

select 
  d.*, 
  k.* 
from DOVIZ d
left outer join KURLAR k on D.DV_KOD_NUM=K.KR_DV_KOD_NUM
Where K.KR_TARIH=28.12.2005
Yanlış anlamadıysam çalışması lazım, kolay gelsin...
metinkorkmaz
Üye
Mesajlar: 46
Kayıt: 25 May 2005 09:08
Konum: izmir

Mesaj gönderen metinkorkmaz »

Yapmak istedigin şu galiba:
- Döviz giriş penceresi oluşturmak istiyorsun.
- O tarihteki dövizleri sorguyla seçiyorsun.
0 kayıt alıyorsun, çünkü zaten table boş, sen döviz bilgileri gireceksin:)

Yapılabilecekler:
1 ) Yöntemlerden biri her tarih seçildiginde uygulanır:
Tarih seçilince, kur adedi kadar satır oluşturabilirsin. Rakamlar için null veya 0 verirsin. Table da bilgi girilebilecek alanlar oluşturulmuş olur. Ama kullanıcı vazgeçince de bunu kontrol edip kayıt girişlerini iptal etmen gerekebilir.

2 ) Başka bir yöntem sene başında tüm döviz kurları için yılın her gününe denk gelecek kayıtları oluştarabilirsin. Böylelikle her tarihte kayıt oldugundan bilgi girişi basitleşir. Bu yöntemle veritabanı dosyası biraz büyüyebilir.

Ayrıca:
- Kullanıcı yeni kayıt girme istersen OnBeforeInsert içinde raise ile exception atıp yeni girişleri engelleyebilirsin.
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

Mesaj gönderen csyasar »

snofru yazdı:

Kod: Tümünü seç

select 
  d.*, 
  k.* 
from DOVIZ d
left outer join KURLAR k on D.DV_KOD_NUM=K.KR_DV_KOD_NUM
Where K.KR_TARIH=28.12.2005
kardes bu kodu datasetin selectine yazdim. su sekilde:

Kod: Tümünü seç

select D.DV_KOD_NUM, D.DV_KOD_STR, D.DV_ULKE, D.DV_SEMBOLU, D.DV_AD,  K.* FROM DOVIZ D LEFT OUTER JOIN KURLAR K ON D.DV_KOD_NUM=K.KR_DV_KOD_NUM
insert, vs kodlarimni otomatik oluturdum. ama veri giremiyorum. mesela otomatik olusan update kodlari asagidaki gibi.

Kod: Tümünü seç

update KURLAR
set
  KR_D_ALIS = :KR_D_ALIS,
  KR_D_SATIS = :KR_D_SATIS,
  KR_DV_KOD_NUM = :KR_DV_KOD_NUM,
  KR_EF_ALIS = :KR_EF_ALIS,
  KR_EF_SATIS = :KR_EF_SATIS,
  KR_TARIH = :KR_TARIH
where
  KR_KOD_NUM = :OLD_KR_KOD_NUM
digerleri de ayni sekilde devam ediyor. acaba update ederken de join olmak mi gerekiyor.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
sanırım select işlemini hallettin.
update ve insert işlemi için datasetin update ve insert sql lerine sanki ayrı bir tquery billeşeni kullanıyormuş gibi kodlar yazın. atyorum

Kod: Tümünü seç

update kurlar
set kr_alis=Ikr_alis,
vs...
where kr_dv_kod_num=Ikr... and
kr_tarih=Ikr_tarih
gerekli parametreleri set etmeyi unutmayın
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

tarihi tırnaklar arasında yaz
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla