Skip to main content

AccessTr.neT


iki tarih arası sorguda IIf kullanımı

iki tarih arası sorguda IIf kullanımı

Çözüldü #1
Sayın hocalarım
Örnekteki deneme formunda, ilk tarih ve son tarih alanları var.
iki tarih sorgusunda

Between [Formlar]![deneme]![ilktarih] And [Formlar]![deneme]![sontarih]

Ölçüt yazılı güzel, çalışıyor
Ama ben istiyorum ki;
bo alanlar boş olduğunda liistenin tamamını göstersin
Ve ilk tarih dolu olduğunda o tarihten sonrasını
Ve son tarih dolu olduğunda da o tarihten öncesini göstersin.

IIf(([Tbl_FisKaydi].[Fis_Tarihi])=(IsNull([Formlar]![deneme]![ilktarih])) And ([Tbl_FisKaydi].[Fis_Tarihi])=(IsNull([Formlar]![deneme]![sontarih]));([Tbl_FisKaydi]![Fis_Tarihi]);(([Tbl_FisKaydi].[Fis_Tarihi]) Between [Formlar]![deneme]![ilktarih] And [Formlar]![deneme]![sontarih]))

bu ölçütü yazdım. Ama
IIf(ilk tarih dolu son tarih boş ise ; ilk tarihten sonrasını; IIf(son tarih dolu , ilk tarih boş ise ;son tarihden öncesini;IIf(her ikiside boş ise;tüm listeyi; değil ise ikitarih arasını göster)))
demek istiyorum. Öncesi sonrası IIF leri bilemedim.Icon_rolleyes
Hoş bu ölçütte alanlar boş olduğunda listenin tamamını göstermiyor.
Yanlışım nerede ?
İlk trarihden sonrasını
son tarihden öncesini
nasıl ifare edebilirim?
İlgilenebilirseniz çok sevinirim.

(Örneği eklayamadim.Açılır pencere engellendi diyor ayarlarında kapalı değil ama açılır pencereye izin vermedi.)
Çok basit bir örnekti sanırım sorunumu anlatabildim.
Filtrelemede Ölçüt
Like"*"&[metin kutusu]&"*"
Cevapla
Çözüldü #2
Ben örneğinize çok fazla girmeden yöntem
tavsiye etmek istiyorum. Uygulamalarımızın bir çok
yerinde ( form, rapor, sorgu ) tarih aralığına ihtiyacımız
oluyor. Ben varsayılan ilk tarihi kullanıcının ayarlardan
girmesi yöntemini kullanıyorum

[Resim: ekranresmi00011.jpg]

varsayılan son tarih için ise Bugün + kaç yıl tercihini belirtmesini
istiyorum

Artık tarih aralığı gerektiren alanlara bu iki değeri varsayılan olarak
getiriyorum

Diğer bir yöntem ise görüntülenecek kayıtların tablosundan DMin ile ilk
tarih değerini DMax ile son tarih değerini getirmek gayet pratik

Tarih alanlarının boş ya da Null olması çok sağlıklı değil
diye düşünüyorum. Form üzerindeki bu denetimlerin "dolu"
olmasını koşullamanız ve yukarıdikelere benzer bir yöntem kullanmanız
daha iyi olabilir

Kolay gelsin
okileturc, 18-03-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
Çözüldü #3
Hocam İlgilendiğiniz için teşekkür ederim. Başta oldukça acemi olduğumu söylemek isterim.
Sizin bahsettiğiniz resimde gösterdiğiniz ayarların yerini bile bulamadım.
Varsayılan nereden ayarlanıyor?
Ayrıca bu tarih değişken olmalı , istediğim zaman geçen yılın istediğim zaman geçen ayın verilerini almalıyım.
Sonrada bunların toplamlarıı alarak karşılaştırmalarını yapmalıyım.
Form üzerinden tarih girerek yapmak daha uygun geliyor ancak sizin tavsiyenizi de öğrenmek isterim belki burada belki de başka yerde işime yarar.
Tekrar ilgilenirseniz sevinirim.
Filtrelemede Ölçüt
Like"*"&[metin kutusu]&"*"
Cevapla
Çözüldü #4
Özür dilerim, elbette ben yanlış ya da eksik anlatmış olabilrim
Benim bahsettiğim varsayılan tarih bilgilerinin yazılımcı
tarafından oluşturulacak bir tablo üzerinde tutulmasına yönelikti.
Access te böyle bir ayar maalesef yok.

Şöyle yapalım, siz örneğinizi ekleyin onun üzerinde yardımcı olmaya çalışalım
( Ben karmaşık yapılı bir IIF sorusuyla karşılaşınca benzer düzeyde çözümlere yöneldim )


Kolay gelsin
okileturc, 18-03-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
Çözüldü #5
Hocam Allah'a şükür IIF lı sorguları kavradım. Ama çok yeniyim.
Başka bilgisayara geçtim ve örneği gönderiyorum.
Hocam
>[Formlar]![deneme]![ilktarih]
yazdığım hatlı bir ölçüt mü?
Çalışıyor ama sonuç yok
İlk tarih kutusuna girdiğim tarihden büyüğünü yada
soh tarihe girdiğim tarihden küçüğünü sorgulamak istersem nasıl ifade etmeliyim?
.rar iki tarih arası IIf.rar (Dosya Boyutu: 15,97 KB | İndirme Sayısı: 57)
Filtrelemede Ölçüt
Like"*"&[metin kutusu]&"*"
Son Düzenleme: 14/05/2009, 16:12, Düzenleyen: firdevs.
Cevapla
Çözüldü #6
O zaman Between kullanmayın sorgu kriterine
>Forms!Formadi!ILKTARIH And <Forms!Formadi!SONTARIH
yazın
ayni formülü
>=Forms!Formadi!ILKTARIH And <=Forms!Formadi!SONTARIH
şekinde yazarsanız zaten between ile ayni işi yapar
Kolay gelsin
Formunuzdaki IIF butonuna
aşağıdaki kontrolü koydum
Kod:
Private Sub ııf_Click()
If Len(ilktarih) > 0 And Len(sontarih) > 0 Then
    DoCmd.OpenQuery "ikitarih", acNormal, acEdit
    Exit Sub
Else
   Forms!deneme!ilktarih = DMin("[Fis_Tarihi]", "Tbl_FisKaydi")
   Forms!deneme!sontarih = DMax("[Fis_Tarihi]", "Tbl_FisKaydi")
   MsgBox "Tekrar deneyin"
End If
End Sub

Yani tarihlerden biri boşsa tablodan en küçük ve en büyük
değerleri getirecek
tarih alanlarının varsayıllan değerlerine de ayni işlemi yaptım
sorgunuza da > And < kodunu yazdım
bir inceleyin
Kolay gelsin
.rar 2tariharasi_okileturc.rar (Dosya Boyutu: 18,39 KB | İndirme Sayısı: 98)
okileturc, 18-03-2009 tarihinden beri AccessTr.neT üyesidir.
Son Düzenleme: 14/05/2009, 17:08, Düzenleyen: okileturc.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da