Satır Ve Sütun Koşullu Değerlendirme

1 2 3
26/06/2021, 22:56

berduş

aşağıdaki kodu dener misiniz?
Dim GSayi As Integer
Dim GTarih As Date

For GSayi = 1 To 30
GTarih = DateAdd("d", GSayi - 1, DateSerial(Year(Date), 7, 1))
CurrentDb.Execute "update tbl_PERSONEL set Tarih" & GSayi & "= '' " 'where SICILNO=" & rs(0)
Controls("Tarih" & GSayi & "_Etiket").Caption = Format(GTarih, "dd mmm")
Next GSayi

' Exit Sub
Dim rs As ADODB.Recordset

Set db = CurrentDb
Set rs = New ADODB.Recordset 'db.OpenRecordset("tbl_IZINLER") 'myTable is a MS-Access table created previously
txtSQL = "SELECT SICILNO, IZINBASLANGICTARIHI, IZINBITISTARIHI " & _
"FROM tbl_IZINLER order by SICILNO;"
rs.Open txtSQL, CurrentProject.Connection, 3, 1

'populate the table
rs.MoveLast
rs.MoveFirst
'Debug.Print rs.Fields.Count
Do While Not rs.EOF
' Debug.Print (rs(0)) 'myField is a field name in table myTable
For GSayi = 1 To 30
GTarih = DateAdd("d", GSayi - 1, DateSerial(Year(Date), 7, 1))
If GTarih >= rs(1) And GTarih <= rs(2) Then CurrentDb.Execute "update tbl_PERSONEL set Tarih" & GSayi & "='X' where SICILNO=" & rs(0)
Next GSayi
rs.MoveNext
Loop
27/06/2021, 00:13

temre

Çok teşekkür ederim.

Harika çözüm.
27/06/2021, 01:35

feraz

Bende başka türlü yapmıştım.Tarihler vs.. otomatik geliyordu işinize yarar belki.
Ama mausun tekerleğini oynatınca formdaki id felan değişiyor ama kodlara çalışmıyor aramada ve alttaki kayıtlara gitmelere tıklayınca kod çalışıyor.


https://resim.accesstr.net/do.php?img=11113

Private Sub Form_Current()
    Dim basTarih, bitisTarih, i As Byte, fark As Integer

    If Me.ID = "" Or IsNull(ID) Then Exit Sub
    If Me.ID = DLast("ID", "tbl_PERSONEL") Then Exit Sub
    If IsNull(Me.SICILNO.Value) Or Me.SICILNO.Value = "" Then GoTo son

    basTarih = Dlookup ("IZINBASLANGICTARIHI", "tbl_IZINLER", "[SICILNO]=" & Me.SICILNO.Value)
    bitisTarih = Dlookup ("IZINBITISTARIHI", "tbl_IZINLER", "[SICILNO]=" & Me.SICILNO.Value)
   
    If IsNull(basTarih) Or basTarih = "" Then GoTo son
    If IsNull(bitisTarih) Or bitisTarih = "" Then GoTo son
    fark = CLng(bitisTarih) + 1 - CLng(basTarih)

    For i = 1 To 30
        Controls("Tarih" & i & "_Etiket").Caption = basTarih - 1 + i
        Controls("Tarih" & i).Value = "X"
        If i = fark Then Exit For
    Next
   
    For i = i To 30
        Controls("Tarih" & i & "_Etiket").Caption = basTarih - 1 + i
    Next
    Exit Sub
son:
    For i = 1 To 30
        Controls("Tarih" & i & "_Etiket").Caption = Empty
        Controls("Tarih" & i).Value = Empty
    Next

End Sub

Private Sub txtsicilNo_Change()
    Dim say As Integer, rs As Object
    say = DCount("[SICILNO]", "tbl_PERSONEL", "[SICILNO]=" & Val(txtsicilNo.Text))
   
    If say > 0 Then
        Set rs = Me.Recordset.Clone
         rs.FindFirst "[SICILNO] = " & Val(Me.txtsicilNo.Text) & ""
        If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    End If
    Set rs = Nothing
End Sub
27/06/2021, 01:41

temre

(27/06/2021, 01:35)feraz yazdı: Bende başka türlü yapmıştım.Tarihler vs.. otomatik geliyordu işinize yarar belki.


https://resim.accesstr.net/do.php?img=11113

Private Sub Form_Current()
    Dim basTarih, bitisTarih, i As Byte, fark As Integer

    If Me.ID = "" Or IsNull(ID) Then Exit Sub
    If Me.ID = DLast("ID", "tbl_PERSONEL") Then Exit Sub
    If IsNull(Me.SICILNO.Value) Or Me.SICILNO.Value = "" Then GoTo son

    basTarih = Dlookup ("IZINBASLANGICTARIHI", "tbl_IZINLER", "[SICILNO]=" & Me.SICILNO.Value)
    bitisTarih = Dlookup ("IZINBITISTARIHI", "tbl_IZINLER", "[SICILNO]=" & Me.SICILNO.Value)
   
    If IsNull(basTarih) Or basTarih = "" Then GoTo son
    If IsNull(bitisTarih) Or bitisTarih = "" Then GoTo son
    fark = CLng(bitisTarih) + 1 - CLng(basTarih)

    For i = 1 To 30
        Controls("Tarih" & i & "_Etiket").Caption = basTarih - 1 + i
        Controls("Tarih" & i).Value = "X"
        If i = fark Then Exit For
    Next
   
    For i = i To 30
        Controls("Tarih" & i & "_Etiket").Caption = basTarih - 1 + i
    Next
    Exit Sub
son:
    For i = 1 To 30
        Controls("Tarih" & i & "_Etiket").Caption = Empty
        Controls("Tarih" & i).Value = Empty
    Next

End Sub

Private Sub txtsicilNo_Change()
    Dim say As Integer, rs As Object
    say = DCount("[SICILNO]", "tbl_PERSONEL", "[SICILNO]=" & Val(txtsicilNo.Text))
   
    If say > 0 Then
        Set rs = Me.Recordset.Clone
         rs.FindFirst "[SICILNO] = " & Val(Me.txtsicilNo.Text) & ""
        If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    End If
    Set rs = Nothing
End Sub

Teşekkür ederim Sn.feraz

Örneğinizden faydalanacağım.

Saygılar.
27/06/2021, 02:40

feraz

Rica ederiz abey.Kolay gelsin.
27/06/2021, 08:17

berduş

Rica ederim
Iyi çalışmalar
Not: çalışmada önce personel tablosundaki tüm izin tarihleri siliniyor, istenirse sadece belirli bir doneminki de silinebilir.
Not2: siz doğrudan 30 gün için ayarlamışsınız ama aya gore 28-31 arası olması gerekmez mi?
1 2 3