Skip to main content

AccessTr.neT


Çalışanların Kronik Hastalıklarına Göre İstatistik Çıkarmak

Çalışanların Kronik Hastalıklarına Göre İstatistik Çıkarmak

Çözüldü #1
20 yıllık bir firmanın çeşitli bölümlerinde çalışan personelin farklı kronik hastalıkları var. Seçtiğimiz bölümde Belirlediğimiz zaman aralığında hangi hastalıktan kaç kişi çalışmış listelemek istiyoruz
mesela bulacağımız sonuçlardan birisi şöyle olacak
Firmanın A bölümünde 07.11.2011 ile 08.02.2016 tarihleri arasında 6 adet diabet hastası çalışmış. gibi
binlerce çalışan farklı tarihlerde giriş çıkış yapmış farklı farklı hastalıkları var.
gidiş yolumuz nasıl olmalı ki verilen kriterlere uyan çalışanlardan 
kaç tanesinde hangi hastalıklardan ne kadar sayıda var bulabilelim

problemi arkadaşaların gayretiyle çözülmüş oldu
tüm emeği geçen arkadaşlara çok teşekkürler
örnek çözülmüş son hali
.rar kronik_son_acc.rar (Dosya Boyutu: 71,34 KB | İndirme Sayısı: 3)
@benbendedeilem
Son Düzenleme: 28/03/2020, 11:45, Düzenleyen: accessman.
Cevapla
#2
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ız
personel tablosu, hastalık adı tablosu ve personel hastalık tablosu oluşturup ilişkilendirmeliisiniz
Cevapla
#3
(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ız
personel tablosu, hastalık adı tablosu ve personel hastalık tablosu oluşturup ilişkilendirmeliisiniz
bende 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

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

[Resim: do.php?img=9959]
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") & "#;"
@benbendedeilem
Son Düzenleme: 27/03/2020, 15:26, Düzenleyen: accessman.
Cevapla
#4
Filtre ile aramada isimlerdemi listelenecek bunu merak ediyorum.
Listede nasıl sonuç çıkacağını tabloda gösterseniz bence konuyu uzatmadan çözülür.
Cevapla
#5
isimler listelenmeyecek kişi sayısı  bulunacak
daibetli 5 kişi
Hipertansiyonlu 10 kişi vs
Cevapla
#6
Daha önce aynı soruyu Tablodaki "," İle Ayrılan Verileri Saymak  bağlantısında sordunuz, size yardımcı olmak isteyenler çözüm bulmak için bir ton cevap yazdı. Şimdi bu konuyu farklı örnek ekleyip yeniden niye açıyorsunuz?

İki tarih arası için kullanmanız gereken kod aşağıdadır.

    strSQL = "SELECT id, isimler,kronik, firma, bastarih, bittarih FROM Tablo1" & _
        " WHERE firma='" & [Metin13] & "'" & _
        " AND not isnull(kronik)" & _
        " AND ((bastarih >= #" & Format([ilktarih], "dd-mm-yyyy") & "# or bastarih <= #" & Format([sontarih], "dd-mm-yyyy") & "#)" & _
        " AND (bittarih >= #" & Format([ilktarih], "dd-mm-yyyy") & "# or bittarih <= #" & Format([sontarih], "dd-mm-yyyy") & "#));"
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task