VBA vereenvoudigen, indien mogelijk

Status
Niet open voor verdere reacties.

rebirth

Gebruiker
Lid geworden
17 jun 2008
Berichten
170
Ik heb momenteel in mijn database onder andere een tabel waar ingelezen waarden van een vingerscantoestel ingelezen worden. Deze bevat per persoon een soort ID nummer.
Daarenboven heb ik een tabel van kinderen, waar ik in velden de vingerafdruk ID heb van mensen die hun kindje komen ophalen, en die dus op die manier een link vormen tussen de importtabel van de vingerscan en de tabel van de kinderen.

Ik heb momenteel een stukje code waarmee ik uitzoek welke vingerafdruk bij welk kindje hoort, en het is misschien niet de meest correcte of beste manier om dit te doen, maar dit werkt vrij behoorlijk. Alleen heb ik momenteel 2 vingerafdrukID's per kindje, maar dit wil ik uitbreiden naar 4, omdat er soms wel eens oma's, opa's of andere mensen de kinderen komen ophalen, en deze dus ook aan dat kindje gekoppeld zouden moeten worden. Maar dan moet ik m'n code op dezelfde manier verder gaan uitbreiden, en daarom vroeg ik me af of er eigenlijk geen eenvoudiger manier is om per kind te gaan kijken of die vingerscanID in 1 van de 4 velden zou voorkomen. Kan iemand me misschien op weg helpen naar een eventueel simpelder/korter/eenvoudiger oplossing?

Momenteel doe ik het als volgt:

Code:
        If IsNull(DLookup("[KindID]", "Kind", "[FP_id mama] = '" & rs1!veld6 & "'")) Then
           
                If IsNull(DLookup("[KindID]", "Kind", "[FP_id papa] = '" & rs1!veld6 & "'")) Then
                   MsgBox "Vingerafdruk " & rs1!veld6 & " van " & rs1!veld7 & " komt niet in de database voor. Gelieve deze eerst toe te voegen bij het kindje, vooraleer verder te gaan met de het importeren. De import werd stopgezet."
                   Exit Sub
                Else
                   getresult = DLookup("[KindID]", "Kind", "[FP_id papa] = '" & rs1!veld6 & "'"
                End If           
        Else
           getresult = DLookup("[KindID]", "Kind", "[FP_id mama] = '" & rs1!veld6 & "'")
           'MsgBox getresult
        End If
 
Als het om duidelijkheid gaat is deze regel
Code:
"Vingerafdruk " & rs1!veld6 & " van " & rs1!veld7 & " komt niet in de database voor."
niet echt een schoolvoorbeeld van hoe het moet. Kanppe jongen die gelijk weet wat er in de velden staat. Waarom niet gelijk goede veldnamen gebruiken? Of, als je van cryptische oplossingen houdt, ons niet vertellen waar de velden voor staan, zodat we een nette oplossing kunnen bijdragen? Nu blijft het toch weer gokken... Nu moet ik er dus maar vanuit gaan dat Veld7 de KindID is, en Veld6 de vingerscan.
Op basis daarvan zou je deze richting op kunnen denken. Zonder db is er uiteraard niks te testen, dus dat mag je zelf doen. Zo weet ik niet hoe je rs1 maakt en vult.
Code:
Function getResult()
Dim rst As Recordset
Dim strSQL As String
Dim i As Integer
    strSQL = "SELECT [FP_id mama],[FP_id papa],[FP_id opa],[FP_id oma] FROM Kind WHERE  [KindID] = '" & rs1!veld7 & "'"
    Set rst = CurrentDb.OpenRecordset(strSQL)
    With rst
        Do Until .Fields(i) = rs1!veld6 And i <= rst.Fields.Count
            getResult = .Fields(i)
            i = i + 1
            Exit Do
        Loop
        .MoveNext
    End With

    If getResult = vbNullString Then
       MsgBox "Vingerafdruk " & rs1!veld6 & " van " & rs1!veld7 & " komt niet in de database voor." & vbLf _
            & "Gelieve deze eerst toe te voegen bij het kindje, vooraleer verder te gaan met de het importeren." & vbLf _
            & "De import werd stopgezet."
       Exit Function
    End If
End Function
 
Laatst bewerkt:
Het was niet de bedoeling een mysterie ofzo te creëren hoor. Die veldnamen, tjah, gewoon het resultaat van een allereerste importtestje waarbij ik niet meer de moeite gedaan heb de benaming te veranderen omdat dit toch een 'tijdelijke' tabel was. Ik dacht gewoon dat dit voldoende was, omdat het me eerder te doen was om te weten te komen of ik de "if" toestanden op de één of andere manier wat eenvoudiger kon maken. Allesbehalve geheimzinnigheid dus. Ik wil morgen gerust wel even de originele tabellen delen.

Wat ik er trouwens nog wel aan wil toevoegen: ik vermoed zelf ook wel dat mijn database en VBA in het bijzonder niet een schoolvoorbeeld zijn van hoe het moet. Ik probeer steeds maar weer wat verder dingen uit, en dingen in elkaar te prutsen.. Dat deze niet altijd zijn hoe het optimaal zou moeten, besef ik maar al te goed. Maar als ze werken, ben ik vaak al een gelukkig man. :o
 
En wie ben ik om jouw geluk ter discussie te stellen :). Maar werkt het?
 
Nee, het lukt me helaas nog niet. Waarschijnlijk omdat je idd een stuk van de code ontbreekt, die het geheel weer wat ingewikkelder maakt. Ik heb er toch maar even de database bijgeplaatst, zodat je m'n geknoei kan zien. De 2 velden FP_id opa en oma zijn bij mij trouwens gewoon FP_id 3 en 4, maar die had ik bij het testen zelf vervangen, dus daaraan ligt het alvast niet.

Bekijk bijlage Kinderopvang - kopie HM.zip
 
Zie ik het goed, en heb je ook nog geen poging gedaan? En als ik verkeerd kijk, waar staat de code dan?
 
Nee, dat is die met mijn originele code. Ik heb em uiteraard wel toegepast en getest hoor, daar hoef je echt niet aan te twijfelen. Heb je graag dat ik deze met de wijzigingen ook eens post? De database, of enkel de code?
 
Als ik weet in welk formulier, dan zet ik mijn code er zelf wel tussen.
 
Het zit in het formulier "FP bestand importeren", onder de knop "Importeren". Alvast bedankt Michel.
 
Hey Michel, zou je misschien al es tijd gehad hebben om mijn wirwar wat uit te vlooien?
 
Ik ben aan het puzzelen, maar als ik de structuur en denkwijze niet snap, dan is het lastig.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan