[SORGU] Sorgu için IF yapısının yeterli olmadığı kombinasyonlarda hangi yapı kullanılabilir?
#1
Merhaba,
bir tablodaki 4 farklı alanı IF yapısı ile kontrol etmeye çalışıyorum. ancak 25 farklı durum olduğundan sonuca gidemiyorum. sorgular için bu gibi çoklu sonuçları kontrol etmenin IF yapısından başka bir alternatif var mıdır?
If ile yapmaya çalışınca sorguda alan boyutu yetersizliğine dair uyarı alıyorum, çözüm için alternatifi nasıl bulabilirim?



  Alıntı
Bu mesajı beğenenler:
#2
Merhaba..

Modül içindeki bir fonksiyonda şartları Select Case karar yapısı kullanarak oluşturabilirsiniz.. Basit bir örnek eklerseniz üzerinde gösterebilirim..



  Alıntı
Bu mesajı beğenenler:
#3
Sayın Taruz,
basit bir örnek hazırlayarak ekledim.
temel mantık şu; ürünün yeri, miadı, üretim tarihi temel bilgiler. bir de ürüne ilişkin işlemlerin kayıtlarının bulunduğu 4 adet tarih alanı var. bu alanların tümü doldurulmak zorunda değil ancak miadı ve yeri ile uyumlu olması gerekir. örneğin "yeri = bakıma alındı" ise bakım tarihinin girilmiş olması gerekir, yada "Yeri = imha edildi" ise imha tarihinin girilmiş olması gerekir gibi. ya da miadı dolmuş ise imha edilmiş olması gerekir vs., vs. kombinasyonlarla kafanızı karıştırmak istemiyorum fakat alternatif çözüm hakkında örnek üzerinde gösterebilirseniz sanıyorum gerisini halledebilirim.



  Alıntı
Bu mesajı beğenenler:
#4
Merhaba..

Select Case önermiştim ama sizin şartlarda kullandığınız alanlar birbiri ile koşul bağlantısı içeriyor.. Bu şekilde çözelim..:

Bir modüle bu fonksiyonu kaydediniz..:

Visual Basic
  1. Public Function hatadenetim(yil, uretrh, baktrh, imhatrh, testrh, yer) As String
  2.  
  3. skt = DateAdd("yyyy", Nz(yil, 0), CDate(uretrh)) 'son kullanım tarihi
  4.  
  5. If Date > skt And IsNull(imhatrh) And yer <> "imha Edildi" Then _
  6. msj = "Miadı dolmuş ancak imha tarihi girilmemiş ve yeri için imha edildi girilmemiş"
  7.  
  8. If CDate(uretrh) > CDate(Nz(imhatrh)) And yer = "imha edildi" Then _
  9. msj = "Dikkat hata üretim tarihinden önce imha edilmiş"
  10.  
  11. If Len(testrh) > 0 And yer <> "Teslim Edildi" Then _
  12. msj = "Dikkat hata teslim tarihi girilmiş ancak " & yer & " görünüyor"
  13.  
  14. If Nz(testrh, "") = "" And yer = "Teslim Edildi" And Nz(yil, "") = "" Then _
  15. msj = "Dikkat hata teslim edildi bilgisi var ancak teslim tarihi girilmemiş, Miat bilgisi girilmemiş"
  16.  
  17.  
  18. If Nz(msj, "") = "" Then msj = "Sorun yok"
  19.  
  20.  
  21. hatadenetim = msj
  22. End Function



Sorguda yeni bir alanda veya formdaki metin kutusunun denetim kaynağında bu şekilde kullanabilirsiniz..:

SQL
  1. =hatadenetim([Miat(Yil)];[uretimtarihi];[BakimTarihi];[imhaTarihi];[TeslimTarihi];[Yeri])



IF satırlarını diğer şartlarınıza göre çoğaltabiliriniz.. Yukarıdaki prosedür eklediğiniz dosyadaki kayıtlarda belirttiğiniz şartlara göre hazırlanmıştır..



  Alıntı
Bu mesajı beğenenler:
#5
Sayın üstadım,
mesaiye gitmeden bakayım diye foruma girdim ve cevabınızı gördüm, inanın o kadar şaşırdım ki? gece 02:00 de cevap yazıyorsunuz ... insanların sorunlarını çözmelerine katkıda bulunuyorsunuz.. ve bunu yaparken neredeyse sorunun sahibinden daha çok fedakarlıkta yapıyorsunuz.. Lütfen bunları nezaket icabı söylenen iltifatlar olarak algılamayın. en içten minnet duygularımın, şükranlarımın ifadesi ...
çok ama çok teşekkür ederim.
hemen deneyeceğim ama önce teşekkürlerimi iletmek istedim.
iyi ki varsınız..



  Alıntı
Bu mesajı beğenenler:
#6
Sayın Taruz,
bahsettiğiniz yöntemi uygulayarak öncelikle koşulların kombinasyonlarını çıkardım, toplamda 500'ün üzerinde olan olasılıkları gruplandırmalar yaparak 250 seviyesine kadar indirdim, 250 satırlık kodu modüle yazıp derleme yaptığımda "procedure too large" şeklinde hata uyarısı alıyorum.
satırlardaki hata mesajlarını kısaltarak sorunu çözmeye çalıştım ancak bu defa da hata mesajlarının anlaşılmasında sıkıntı yaşıyorum. her satırdaki ortalama karekter sayısı 200-250 civarında genel toplamda (250 satırlık modülün) 52.000 karakter mevcut. karekter sayısı 53.000 geçince yukarıdaki hata uyarısını alıyorum. bu sorunun çözümü için önerebileceğiniz bir alternatif var mıdır?



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  [FORM] Kargo Firması Için Sql Server (ödev Için) SimpleAnarchist 0 830 16-08-2020, 18:05
Son Mesaj: SimpleAnarchist
  [SORGU] Tabloda Bir Alan Için Sorgu Oluşturmaya çalışıyorum. Ertansay 1 418 26-04-2020, 18:57
Son Mesaj: onur_can
  [SORGU] Sorgu Içinde Birden Fazla Sorgu Oluşturmak footprinting 2 797 04-02-2020, 11:45
Son Mesaj: footprinting
  [SORGU] Sorgu Yaparken Il Ilçe Tabalolarını Sorguda Hem Nüfus Hem Ikamet Için Kullanma wassubii 4 815 08-11-2019, 15:51
Son Mesaj: wassubii
  [FORM] Sorgu ölçütünde IIf komutuya sorgu coyote79 2 1.633 27-12-2017, 14:03
Son Mesaj: alperalper
  [FORM] formlarda değer olmadığı zaman göstermiyor ksy1981 1 943 19-04-2017, 16:06
Son Mesaj: onur_can
  [SORGU] 2 tablo/sorgu ile her kayda ait son değerden oluşan tablo yada sorgu oluşturma Gurselgu 5 2.635 02-09-2016, 15:29
Son Mesaj: Gurselgu
  [SORGU] formdaki sorgunun daha hızlı çalışması için alternatif sorgu husem 1 1.995 06-05-2016, 23:38
Son Mesaj: dsezgin

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi