Ongeldig gebruik van Null

Status
Niet open voor verdere reacties.

noukie1989

Gebruiker
Lid geworden
6 feb 2010
Berichten
21
Hallo,

Ik moet voor stage met Access werken, maar nu ben ik een probleem tegen gekomen.
Ik heb verder niet echt veel ervaring met Access dus ik heb geen idee wat het betekend en ik hoop dat jullie me hiermee kunnen helpen.

Ik heb gegevens in het bestaande bestand ingevoerd, dit ging allemaal goed.
Alleen wanneer ik nu het wil opslaan/afsluiten geeft het programma de foutmelding: Ongeldig gebruik van Null, foutcode 94.

Hieronder staat de code die die dan geeft:

Private Sub update_image()
Dim Image As String
Dim aspect_letter As String
Dim aspect As String
Dim n_aspects As Integer
Set qAspects = CurrentDb.CreateQueryDef("", _
"SELECT aspect, aspect_letter FROM Aspects")

Set rsAspects = qAspects.OpenRecordset

Set qAddCell = CurrentDb.CreateQueryDef("", _
"SELECT * FROM cells WHERE AutoMatch='C'")

Set rsAddCell = qAddCell.OpenRecordset
If Not rsAddCell.EOF Then
rsAddCell.MoveFirst
While Not rsAddCell.EOF
Image = rsAddCell("image")
aspect = rsAddCell("aspect")
If aspect = "none" Then
rsAddCell.Edit
rsAddCell("AutoMatch") = "X"
rsAddCell.Update
Else
rsAspects.MoveFirst
n_aspects = 0
While Not rsAspects.EOF
If InStr(aspect, rsAspects("aspect")) Then
n_aspects = n_aspects + 1
If n_aspects = 1 Then
rsAddCell.Edit
rsAddCell("aspect") = rsAspects("aspect")
rsAddCell("aspect_letter") = rsAspects("aspect_letter")
rsAddCell("cell") = Image & "_" & rsAspects("aspect_letter")
rsAddCell("AutoMatch") = "E"
rsAddCell.Update
Else
rsAddCell.AddNew
rsAddCell("aspect") = rsAspects("aspect")
rsAddCell("aspect_letter") = rsAspects("aspect_letter")
rsAddCell("image") = Image
rsAddCell("cell") = Image & "_" & rsAspects("aspect_letter")
rsAddCell("AutoMatch") = "E"
rsAddCell.Update
End If
End If
rsAspects.MoveNext
Wend
End If
rsAddCell.MoveNext
Wend
End If
End Sub

Hoe kan ik dit oplossen?

Alvast bedankt,

Groetjes Anouk
 
Hallo Anouk,

Om te beginnen: zou je de code (alsnog) in de Code tag (# knop) willen zetten? Dat houd de tekst een stuk leesbaarder. Ten tweede: als een procedure vastloopt, wordt de foutieve regel geel gemarkeerd. Dus de vraag is: bij welke regel stopt hij?
 
Bedankt voor je snelle reactie, ik heb de de foutmelding nu rood gemaakt.

Code:
Private Sub update_image()
Dim Image As String
Dim aspect_letter As String
Dim aspect As String
Dim n_aspects As Integer

Set qAspects = CurrentDb.CreateQueryDef("", _
    "SELECT aspect, aspect_letter FROM  Aspects")
    
Set rsAspects = qAspects.OpenRecordset
    
Set qAddCell = CurrentDb.CreateQueryDef("", _
    "SELECT * FROM cells WHERE AutoMatch='C'")
    
Set rsAddCell = qAddCell.OpenRecordset

If Not rsAddCell.EOF Then
    rsAddCell.MoveFirst
    While Not rsAddCell.EOF
        [COLOR="red"]Image = rsAddCell("image")[/COLOR]
        aspect = rsAddCell("aspect")
        If aspect = "none" Then
            rsAddCell.Edit
            rsAddCell("AutoMatch") = "X"
            rsAddCell.Update
        Else
            rsAspects.MoveFirst
            n_aspects = 0
            While Not rsAspects.EOF
                If InStr(aspect, rsAspects("aspect")) Then
                    n_aspects = n_aspects + 1
                    If n_aspects = 1 Then
                        rsAddCell.Edit
                        rsAddCell("aspect") = rsAspects("aspect")
                        rsAddCell("aspect_letter") = rsAspects("aspect_letter")
                        rsAddCell("cell") = Image & "_" & rsAspects("aspect_letter")
                        rsAddCell("AutoMatch") = "E"
                        rsAddCell.Update
                    Else
                        rsAddCell.AddNew
                        rsAddCell("aspect") = rsAspects("aspect")
                        rsAddCell("aspect_letter") = rsAspects("aspect_letter")
                        rsAddCell("image") = Image
                        rsAddCell("cell") = Image & "_" & rsAspects("aspect_letter")
                        rsAddCell("AutoMatch") = "E"
                        rsAddCell.Update
                    End If
                End If
                rsAspects.MoveNext
            Wend
        End If
        rsAddCell.MoveNext
    Wend
End If

End Sub
 
En je weet 100% zeker dat er wel een waarde staat in het veld [image]?
 
Ik weet bijna zeker dat er overal een waarde staat.
Maar ik heb al heel veel gegevens ingevoerd en ik weet niet over welk veld het precies gaat dat hij een foutcode geeft. Kan ik dit op één of andere manier opzoeken? Dan kan ik dit controleren.
 
noukie1989,

wijzig in je code deze regel

Code:
Dim Image As String

in

Code:
Dim Image As Variant

Toelichting

Een variabele gedefinieerd als string mag namelijk niet gelijk zijn aan null, vandaar je foutmelding.
Een variabele gedefinieerd als variant mag wel gelijk zijn aan null.

Tardis
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan