strSQL = "SELECT * From Srg WHERE süz=" & cmbMonth & "" & cmbYear belli bir ay ve yıla ait kayıt var mı onu kontrol eder
Set rst = db.OpenRecordset(strSQL)
If rst.RecordCount = 0 Then eğer kayıt yoksa aşağıdaki blok ile kaydı ekler
Dim intI As Integer, intJ As Integer, strnum As String
intMonth = Me!cmbMonth
intYear = Me!cmbYear
intFirst = 1
intLastDay = Day(DateAdd("m", 1, DateSerial(intYear, intMonth, 1)) - 1)
DateSerial(intYear, intMonth, 1): girilen yıl ve ayın 1. gününü bulur
DateSerial (yıl, ay, gun) fonksiyonu girilen rakamları tarihe cevirir
DateAdd("m", 1, DateSerial(intYear, intMonth, 1)) dateSerial ile bulununa tarihe 1 ay ekleyerek bir sonraki ayın ilk gününü bulur
Dateadd(aralikturu, eklenecek miktar, tarih) fonksiyonu ile belli bir tarihe gün ay yıl ...saniye ekleyip çıkartabilirsiniz
Day(DateAdd("m", 1, DateSerial(intYear, intMonth, 1)) - 1) bu fonksiyon ile de önce ayın son gününü bulup o ayın kaç gün çektiği hesaplanıyor
Mesela acilir kutularda 2020 yılı ve 7. ayi var
DateSerial(2020,7,1)->1.7.2020
Dateadd("m",1, 1.7.2020)-->m kullanıldığı için fonksiyon girilen 1.7.2020 tarihine 1 ay ekler ve yeni tarihimiz
1.8.2020 cikar
Day(DateAdd("m", 1, DateSerial(intYear, intMonth, 1)) - 1)-->>day(1.8.2020 -1)-->>day(31.7.2020)-->>31
Böylece o ay 31 gün olduğundan tabloya 31 kayıt eklememiz gerektiği ortaya çıkar aşağıdaki döngü bu ise yarar
intLast = intFirst + intLastDay - 1 1+31-1=31
intJ = 1
For intI = intFirst To intLast 1den31e kadar say
strnum = Format(intI, "00") gun 2 haneli olacak 09, 08,,,,05 gibi
rst.AddNew yeni kayıt ekle
rst![tarih] = strnum & "/" & cmbMonth & "/" & cmbYear eklenecek veri 01/07/2020
rst.Update recordset guncelle
Next intI sonraki sayıya git
Else eğer kayıt sayısı 0dan fazla ise uyarı ver ve fonksiyondan cik
MsgBox "Dikkat Bu Seçime Ait Tarih Bilgisi Daha Önce Aktarıldı"
Exit Sub
End If
rst.Close
db.Close
End Sub
Kabaca böyle birsey