AND in IF functie

Status
Niet open voor verdere reacties.

jwaque

Verenigingslid
Lid geworden
16 aug 2006
Berichten
443
Ik zit even vast. Ik wil records toevoegen aan een tabel maar alleen als twee velden niet leeg zijn. Voor mijn gemak heb ik de velden tijdelijk gevuld met het woord "leeg".

Poging1:
Code:
If VNaamBeoordelaar = VNaamAutorisator = "leeg" Then
geeft error: type komen niet over een

poging2:
Code:
    If VNaamBeoordelaar = "leeg" Then
    If VNaamAutorisator = "leeg" Then
        r.MoveNext
    Else
         r2.AddNew
         r2("Naamautorisator") = VNaamAutorisator
        r2("beoord") = VNaamB
        r2("gedaan") = VNaamGedaan
        r2("beoordeeld door") = r("beoordeeld door")
        r2("naambeoordelaar") = VNaamBeoordelaar        
        r2.Update
        r.MoveNext
    End If
    End If
lijkt te werken maar alles werkt ineens heel traag. Is er een betere manier om als de twee velden beide "leeg" zijn door te gaan met het volgend record en alleen een record toe tevoegen als een van beide of beide niet "leeg" is?

alvast bedankt.
 
Laatst bewerkt:
Waarom een record procedure? Een toevoegquery is toch vele malen makkelijker? Kun je ook nog eens veel simpeler filteren, want dat is de crux: records die niet in de selectie zitten, hoef je ook niet te testen, en die actie neemt derhalve ook geen tijd meer in beslag. Iets dat overigens ook al in de Recordset kan, want als je die op voorhand filtert, kan de IIF constructie ook al weg.
 
Misschien even bij het begin beginnen. Ik heb een tabel met oa een kolom met beoordelaars erin. Helaas staan er meerdere beoordelaars in een kolom. Hun namen maar ook hun voor en achternameg worden gescheiden door komma's. Super slecht maar dit is de aangeleverde data.
dus jan, janssen, piet, cornelissen, pieter, storm
Nu wil ik een overzicht voor ieder persoon een apart overzicht te maken. Ik ben begonnen met de naam op te zoeken in de kolom en deze dan weg te schrijven in een andere kolom en dit wilde ik herhalen voor iedereen. Maar dan houdt ik met mijn methode een hoop records over die ik niet wil en ik wilde die eruit filteren.
misschien moet ik het in het begin al doen
Code:
hele code:Private Sub NaamToevoegen()
'**********************************
'***     J. M 050913   ***
'***                            ***
'**********************************
'*** Overzicht autorisatie en beoordelingen uit idoc
'**********************************

'stap 1 sql code in een tabel laten zetten.
'stap 2 sql laten runnen voor alle mensen in een tabel en dit steeds toevoegen aan de tabel
'stap 3 rapport maken
'stap 4 rapport emailen naar gewenste persoon

'***selecteren van de gegevens
    
    Dim Recordselectie As String
    Recordselectie = "SELECT blad1.autorisator, blad1.Titel, blad1.Versie, blad1.Status, blad1.Beoordelaar, blad1.[beoordeeld door] FROM blad1;"

'***bepalen of naam (voor test Piet) voorkomt in de lijst autorisator of beoordelaar
    Dim r As Recordset
    Dim r2 As Recordset
    Dim VNaamAutorisator As String
    Dim VNaamB As String
    Dim VNaamGedaan As String
    Dim VNaamBeoordelaar As String
    
    
    Set r = CurrentDb.OpenRecordset(Recordselectie, dbOpenSnapshot)
    Set r2 = CurrentDb.OpenRecordset("TblDocumentenPerNaam")
    
    r.MoveFirst
    Do Until r.EOF
            If r("autorisator") Like "*Piet, Cornelissen*" Then
                VNaamAutorisator = "Piet, Cornelissen"
            Else
                VNaamAutorisator = "leeg"
            End If
    
                If r("beoordelaar") Like "*Piet, Cornelissen*" Then
                    VNaamB = "Piet, Cornelissen"
                Else
                    VNaamB = "leeg"
                End If
    
            If r("beoordeeld door") Like "*Piet, Cornelissen*" Then
                VNaamGedaan = "Piet, Cornelissen"
            Else
                VNaamGedaan = "leeg"
            End If
            
                If VNaamB = VNaamGedaan Then
                    VNaamBeoordelaar = "leeg"
                Else
                    VNaamBeoordelaar = "Piet, Cornelissen"
                End If
    
 'wegschrijven naar hulptabel
 'alleen wegschrijven als er iets staat
'    If VNaamBeoordelaar = "leeg" Then
'    If VNaamAutorisator = "leeg" Then
'        r.MoveNext
'    Else
         r2.AddNew
         r2("Autorisator") = r("autorisator")
         r2("Titel") = r("titel")
         r2("Versie") = r("versie")
         r2("Status") = r("status")
        r2("beoordelaars") = r("beoordelaar")
        r2("Naamautorisator") = VNaamAutorisator
        r2("beoord") = VNaamB
        r2("gedaan") = VNaamGedaan
        r2("beoordeeld door") = r("beoordeeld door")
        r2("naambeoordelaar") = VNaamBeoordelaar
        r2.Update
        r.MoveNext
'    End If
'    End If
Loop
 
Ik herhaal mijn eerdere opmerking: filter eerst je Recordset.
 
dank je wel. Filteren eerst scheelt een hoop werk later.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan