Sevgili Hocalarım;
Bilgi birikimlerinizden yıllardır faydalanıyoruz hepinize öncelikle teşekkür ederim.
Sizlerden ricam yine bu siteden hocalarımdan sayın ozguryasin hocamın yıllar evvel paylaşmış olduğu PUANTAJ programını hobi amaçlı geliştirmek istiyorum. Öğrenme ve bilgi edinme adına bir çalışma yapmak istiyorum. Yapmak istediğim kısımları aşağıda açıklamaya çalışacağım.
1-Puantaj girişindeki değerleri 1 2 gibi rakamlar ile değil "X","Yİ","Mİ","İ","D", Gibi değerler girmek istiyorum. puantajda çalışanın toplam geldiği günler toplarken şu işlemi yapsın istiyorum.
X=Çalıştığı Gün
İ= Yıllık İzin
Y=Yarım Gün Yıllık İzin
Mİ= Mazeret İzni
D=Devamsız Gelmediği Gün
Ü=Ücretsiz İzin
H=Hafta Tatili
RT=Resmi Tatil
R=Raporlu
HR=Raporlu(3 Gün ve üzerindeki raporların yazıldığı durumlarda)
Yapmak istediğim şöyle Personelin geldiği günlerin ve hasta yada raporlu yada ücretsiz izin aldığı durumlarda şu işlemi yapsın istiyorum.
excel de kullandığım puantaj formunu özgür hocamın yaptığı
Access formunda kullanmak istiyorum.
Hem
Excel hemde acces örnekleri ektedir.
Not: Avans gibi parasal kısımların hiçbirini eklemeye gerek duymuyorum çünkü sadece personelin raporlarını ve geldiği gelmediği günleri saysın yeterli.
Merhaba, X için Gün alanına X Sayısını toplatmak için,
- G01 den G31'e kadar tüm metin kutularının isimlerini değiştir, metin kutusunun denetim kaynağı G11 ise metin kutusunun adı da G11 olmalı, şu anda alt formda denetim kaynağı G10 olan metin kutusunun adı Metin107. Metin107 değil G10 olacak.
- Calisan_Puantaj_Hes tablosundaki G01, G02.... G31 şeklindeki alanların veri türünü metin olarak değiştir. bu tabloya Gun adında yeni alan ekle,
- Calisan_Puantaj_Hes 1 isimli alt formun satır kaynağına eklenen Gun : G01 + G02 şeklinde alan var bu alanı iptal et, yerine tablodaki Gun alanını ekle.
- Calisan_Puantaj_Hes 1 isimli alt forma
Sub Hesapla()
Dim GSayi As Integer
GSayi = 0
For ss = 1 To 31
ss = Format(ss, "00")
If Controls("G" & ss).Value = "X" Then
GSayi = GSayi + 1
End If
Next ss
Me.Gun = GSayi
End Sub
kodu ekle,
Alt formun geçerli olduğunda olayına ve G01, G02 isimli metin kutularının (G31'e kadar) güncelleştirme sonrasında olayına
Call Hesapla
Kodu ekle. Bu şekilde, metin kutusuna X yazdığında Gun alanına X toplamını yazar.
Anlaşılmayan durum var ise belirtin.
Ozan Hocam kolay gelsin hayırlı işler dilerim.
Dediklerinizi yaptım fakat sanırım bi yeri yanlış mı yaptım nedir anlamadım yaptığım örnek ektedir. acaba yardımcı olabilirmisiniz?
daha sonrasında yövmiyeleri felan silecem onların yerine raporlu hasta raporlu gibi devamsız gibi alanlar ekleyecem ama öncelikli olarak X leri toplatmayı beceremedim. saygılarımla.
1- ) Yazdığınız kod
Private Sub Form_Current()
Sub Hesapla()
Dim GSayi As Integer
GSayi = 0
For ss = 1 To 31
ss = Format(ss, "00")
If Controls("G" & ss).Value = "X" Then
GSayi = GSayi + 1
End If
Next ss
Me.Gun = GSayi
End Sub
bu şekilde kod yazım şekli yok. Doğru kod;
Private Sub Form_Current()
Call Hesapla
End Sub
Sub Hesapla()
Dim GSayi As Integer
GSayi = 0
For ss = 1 To 31
ss = Format(ss, "00")
If Controls("G" & ss).Value = "X" Then
GSayi = GSayi + 1
End If
Next ss
Me.Gun = GSayi
End Sub
Ayrıca, formdaki alt formunun kaynak nesnesi "Calisan_Puantaj_Hes" isimli form olmasına rağmen siz kodu "Calisan_Puantaj_Hes1" isimli alt forma eklemişsiniz.
2- Önceki mesajımda "Calisan_Puantaj_Hes 1 isimli alt formun satır kaynağına eklenen Gun : G01 + G02 şeklinde alan var bu alanı iptal et, yerine tablodaki Gun alanını ekle." şeklinde ibare var. Eklediğiniz örnekte alt formun satır kaynağındaki sorguda halen
Gun: ([G01]+[G02]+[G03]+[G04]+[G05]+[G06]+[G07]+[G08]+[G09]+[G10]+[G11]+[G12]+[G13]+[G14]+[G15]+[G16]+[G17]+[G18]+[G19]+[G20]+[G21]+[G22]+[G23]+[G24]+[G25]+[G26]+[G27]+[G28]+[G29]+[G30]+[G31])*1
Şeklinde kod mevcut, bunun silinip Sadece Gun yazılması gerekiyor.
Bunları düzeltirseniz çalışır,
Ozan Hocam;
Dediklerinizi yaptım sanırım oldu bi kontrol edebilir misiniz?
Şimdi bir sonraki aşama olan Gun= "X"+"H"+"RT"+"İ"+"Mİ"+"R" Harfleri olsa bile Toplam gün sayımız 30 ise yine 30 kalması lazım. Yani ahmet kişisinin 1 ay içinde tüm günleri "x" de olsa günlerinin içinde hem "x" hemde "i" harfleri olsa bile toplam gün sayısının değişmemesi 30 olması lazım.
Ayrıca diğer bir aşama ise eğer günlerin içinde yukardaki yazdıklarımın dışında "HR","D","Ü" Yazdığımız zaman toplam gün sayısınından düşmesini istiyorum. Yardımcı olabilirmisiniz. Örnek ektedir.
(22/02/2019, 16:25)IceMan7 yazdı: Şimdi bir sonraki aşama olan Gun= "X"+"H"+"RT"+"İ"+"Mİ"+"R" Harfleri olsa bile Toplam gün sayımız 30 ise yine 30 kalması lazım. Yani ahmet kişisinin 1 ay içinde tüm günleri "x" de olsa günlerinin içinde hem "x" hemde "i" harfleri olsa bile toplam gün sayısının değişmemesi 30 olması lazım.
If Controls("G" & ss).Value = "X" Then
üstteki kodu
If Controls("G" & ss).Value = "X" or Controls("G" & ss).Value = "h" Then
şeklinde değiştirirsen X ile birlikte h yi de sayar, bu koda diğer koşulları da eklemelisiniz.
(22/02/2019, 16:25)IceMan7 yazdı: Ayrıca diğer bir aşama ise eğer günlerin içinde yukardaki yazdıklarımın dışında "HR","D","Ü" Yazdığımız zaman toplam gün sayısınından düşmesini istiyorum.
Hesaplama işlemindeki koşulda HR, D ve Ü harfleri sayılmadığı için zaten gün hesabına dahil olmuyor.