(27/03/2020, 15:21)berduş yazdı: bence tablo yapınızı değiştirip hastalık kısmı için ayrı tablo oluşturmalısınız yada her defasında geçi bir tablo oluşturup orada hesaplama yapmalısınızbende düşündüm ama maalesef elimde hazır halde bu tablo var dediğim gibi yılların birikimi olarak oluşturulmuş bir tablo ve çalışan sayısı 5000 e yakın
personel tablosu, hastalık adı tablosu ve personel hastalık tablosu oluşturup ilişkilendirmeliisiniz
sn. @feraz ın yardımıyla çoğu bitmiş durumda sadece tarih filtrelemede isabetli bir Sql yazmaya kaldı
bu gibi durumlarda sn. @berduş berduşun dediği gibi id leri olan bir kronik hastalık tablosu olsa güzel olur tablo ilişkilendirip sadece id lerini personel tablosuna eklemek yeterli olmalı
hem eksoz gibi kelimelerin 10 farklı şekilde girilmesi önlenmiş olur hemde daha az yer kaplamış olur
ama bunun da sıkıntısı kronik tablosuna bir şey olsa tüm kronik hastalıklar bilgisi personel tablosunda çöpe dönüşecek
o yüzden hali hazırda bilgileri girilmiş bir tabloda olunca bunu kullanmak zorundayım
her çalışanın ilk ve son tarihe göre 6 ihtimalden birine dahil
1.ihtimal :başlama ve bitiş tarihi ilk ve son tarihden önce vb şekilde
diğerleride şekilden daha iyi anlaşılır
bizim için sayısını bulmamız gerekenler 2,3,4,5. ihtimale sahip olanlar
yani bir gün bile olsa ilk ve son tarih arasında çalışmış olanların sayısını bulmamız gerekir değil mi
şimdi gelelim Sql cümlemizi yazmaya
strSQL = "SELECT Tablo1.id, Tablo1.isimler,Tablo1.kronik, Tablo1.firma, Tablo1.bastarih, Tablo1.bittarih FROM Tablo1" & _
" WHERE Tablo1.firma='" & [Metin13] & "'" & _
" AND not isnull(kronik)" & _
" AND Tablo1.bastarih >= #" & Format([ilktarih], "dd-mm-yyyy") & "#" & _
" AND Tablo1.bastarih <= #" & Format([sontarih], "dd-mm-yyyy") & "#" & _
" AND Tablo1.bittarih >= #" & Format([ilktarih], "dd-mm-yyyy") & "#" & _
" AND Tablo1.bittarih <= #" & Format([sontarih], "dd-mm-yyyy") & "#;"
bu şekilde yazarsak 2,3,4,5. ihtimalleri kapsar mıeğer 1. ve 6 ihtimalleri içermeyenleri bulursak sanırım sorun çözülecek yani
1. ihtimal için (bastarih < ilktarih) And (bittarih < ilktarih)
6. ihtimal için (bastarih > sontarih) And (bittarih > sontarih)
bu iki ihtimali içermeyen Sql cümlesi nasıl olmalı
şöyle desek nasıl olur
bittarih >= bastarih olmak şartıyla
(bittarih >= ilktarih) And (bastarih <= sontarih)
bunu Sql cümlesi olarak ifade edersek
strSQL = "SELECT Tablo1.id, Tablo1.isimler,Tablo1.kronik, Tablo1.firma, Tablo1.bastarih, Tablo1.bittarih FROM Tablo1" & _
" WHERE Tablo1.firma='" & [Metin13] & "'" & _
" AND not isnull(kronik)" & _
" AND cDate(Tablo1.bastarih) <= cdate(Tablo1.bittarih)" & _
" AND Tablo1.bastarih <= #" & Format([sontarih], "dd-mm-yyyy") & "#" & _
" AND Tablo1.bittarih >= #" & Format([ilktarih], "dd-mm-yyyy") & "#;"