Fonksiyonda İki Kritere Göre Düzeltme

13/12/2021, 00:11

SeferŞANLI

Kod:
Public Function NobetHaftaIciSonu(kimo, Zaman As Long, Hangi As String) As Integer
Dim Veri As New ADODB.Recordset, Sayac, Hft(1), Hane As Long
Veri.Open "SELECT TblNobet.* FROM TblNobet " & _
"WHERE (((TblNobet.OgretmenId)=" & kimo & ") AND ((Format(" & IIf(CLng(Right(Zaman, 2)) > 0, "[donem],'yyyymm'", "[donem],'yyyy'") & "))=" & IIf(CLng(Right(Zaman, 2)) > 0, Zaman, Left(Zaman, 4)) & ")) Order By [donem]", CurrentProject.Connection, adOpenKeyset, adLockReadOnly
If CLng(Right(Zaman, 2)) = 0 Then Debug.Print Veri.Source
If Veri.RecordCount = 0 Then Exit Function
Do Until Veri.EOF
    For Sayac = 1 To 31
        If Veri("G" & Sayac) = "N" Then
            Hane = IIf(Eval(Weekday(DateSerial(Left(Zaman, 4), Right(Zaman, 2), Sayac), vbMonday) & " In (5,6,7)"), 1, 0)
            Hft(Hane) = Hft(Hane) + 1
        End If
    Next Sayac
Sayac = 1
Veri.MoveNext
Loop
Veri.Close
Set Veri = Nothing
NobetHaftaIciSonu = Hft(IIf(Hangi = "N", 0, 1))
End Function


Kod:
If Veri("G" & Sayac) = "N" Then

burada N harfine göre veri araması yapıyor; peki hem "N" hemde "B" için nasıl bir düzenleme olması gerekir.

Kod:
If Veri("G" & Sayac) = "N"  or "B" Then

yazdım ama hata alıyorum.
13/12/2021, 00:13

berduş

If Veri("G" & Sayac) = "N" or Veri("G" & Sayac) ="B" Then
13/12/2021, 00:17

SeferŞANLI

Teşekkür ederim Sayın Hocam. Konu çözüldü. Kod çalıştı.
13/12/2021, 00:30

berduş

burada eval() fonksiyonunu da kullanabilirdiniz onu neden kullanmadınız? mesajınızdaki kodda kullanmışsınız:
Hane = IIf(Eval(Weekday(DateSerial(Left(Zaman, 4), Right(Zaman, 2), Sayac), vbMonday) & " In (5,6,7)"), 1, 0)

If Eval("'" & Veri("G" & Sayac) & "' in (""N"",""B"")") Then
gibi
13/12/2021, 00:36

SeferŞANLI

Hocam bu kodlar sizin kodlar idi, ben revize ederek çalışmamda kullanıyorum. Siz de taktir edersiniz ki o kadar ileri düzeyde değilim
13/12/2021, 00:48

berduş

siz de ben de 2014 yılında başlamışız ve bu işin eğitimini almamışız yani sorun düzeyde değil amaçta gibime geliyor
öğrenmeye yada anlamaya çalışmıyorsunuz gibime geliyor