Select from foutmelding

Status
Niet open voor verdere reacties.

anlag1

Gebruiker
Lid geworden
31 okt 2010
Berichten
144
Goedemiddag allemaal,

Heb het volgende stukje code:

Code:
strSQL = "SELECT LISTNUMBER FROM tbl_documents WHERE LOCATION = '" & _
        [Forms]![frm_connections]![lstCompositeLoc] & "' AND DOCID = 'CON'"
          Set rst = dbs.OpenRecordset(strSQL)
         txtConlst = rst!LISTNUMBER

Zolang er records aanwezig zijn die aan de criteria voldoen gaat het goed, als er echter geen relevante
records aanwezig zijn komt er een foutmelding.
Hoe kan ik deze melding opvangen zodat de code niet wordt onderbroken?

Andre
 
Je opent de recordset en gaat gelijk naar het eerste record. Ik zou dus eerst checken met een If of er wel iets te halen is.
Code:
With Currentdb.Openrecordset(strSQL)
     If Not .EOF And .BOF Then Me.txtConlst = .Fields("ListNumber")
End With
Bijvoorbeeld
 
Sorry, was een beetje te enthousiast geloof ik.
ik heb een msgbox onder End With geplaatst om de waarde uit te lezen
Krijg de melding oneigelijk gebruik van Null
de code ziet er nu zo uit

Dim dbs As DAO.Database
Dim strSQL As String

Code:
Set dbs = CurrentDb
   
    strSQL = "SELECT LISTNUMBER FROM tbl_documents WHERE LOCATION = '" & _
        [Forms]![frm_connections]![lstCompositeLoc] & "' AND DOCID = 'CON'"
 
    With CurrentDb.OpenRecordset(strSQL)
        If Not .EOF And .BOF Then Me.txtConlst = .Fields("ListNumber")
    End With
dbs.Close


André
 
Mag de vraag op <Opgelost> :)
 
Mijn vorige post was ongeveer gelijk met die andere vraag van jou :)
overigens zie ik geen extra msgbox. Wat moet die doen, en waar staat die dan? En nog iets: de Set regel kan er uit.
 
Idd msgbox vergeten,

Code:
Dim dbs As DAO.Database
Dim strSQL As String
 
    strSQL = "SELECT LISTNUMBER FROM tbl_documents WHERE LOCATION = '" & _
        [Forms]![frm_connections]![lstCompositeLoc] & "' AND DOCID = 'CON'"
 
    With CurrentDb.OpenRecordset(strSQL)
        If Not .EOF And .BOF Then Me.txtConlst = .Fields("LISTNUMBER")
    End With
    MsgBox Me.txtConlst

dbs.Close

André
 
Ik neem aan dat de msgbox wel werkt, want die is net gevuld. Wat de fout zou kunnen zijn (en waarschijnlijk is) is dat je nog twee regels mag weghalen. En wel die met dbs. Je sluit namelijk iets (dbs.Close) wat niet geopend is. En dat kan niet.
 
Wat ik ook doe, krijg in alle gevallen IsNull met onderstaande code.
wat is er is mis met deze paar regels?

Code:
Dim strSQL As String

    strSQL = "SELECT LISTNUMBER FROM tbl_documents WHERE LOCATION = '" & _
        [Forms]![frm_connections]![lstCompositeLoc] & "' AND DOCID = 'CON'"
 
    With CurrentDb.OpenRecordset(strSQL)
        If Not .EOF And .BOF Then Me.txtConlst = .Fields("LISTNUMBER")
    End With
    
    If IsNull(Me.txtConlst) Then
    MsgBox "IsNull"
    End If


André:confused:
 
Maar doet de code het wel zonder de msgbox? Zoals je eerder aangaf?
 
In een formulier staat een listbox [lstCompositeLoc] daarbij een textbox [txtConlst].
als een listnumber gevonden wordt moet dit zichtbaar worden in de textbox.
wordt een listnumber niet gevonden dan moet de textbox leegblijven.
De bovenstaande code geeft geen foutmelding, maar de inhoud van de textbox is altijd "IsNull" en blijft dus ten alletijde leeg.
Dit terwijl ik weet dat er listnumbers aanwezig zijn, en worden ook getoont met de code waarmee ik deze topic ben begonnen.
En om je vraag te beantwoorden, met of zonder msgbox maakt bij deze code niet uit.

André
 
Denk dat de strSQL niet goed is, maar mijn kennis is niet geweldig.
Probeer dit eens.

Code:
strSQL = "SELECT LISTNUMBER FROM tbl_documents " _
 & "WHERE ((LOCATION) ='" & me.lstCompositeLoc & "'") AND ((DOCID) = 'CON')"
 
Niet zozeer een kwestie van weinig kennis van SQL, als wel niet kunnen tellen van haakjes ;)
Code:
& "WHERE (LOCATION ='" & Me.lstCompositeLoc & "'" AND DOCID = 'CON')"
 
Was op goede weg :).

Als je een query maakt in de ontwerpweergave en vervolgens overschakelt naar de SQL weergave
zet Access wel al die haakjes neer.

Waarschijnlijk zal hij met die haakjes ook werken, maar ze zijn blijkbaar overbodig. Dus weghalen maar.
 
Laatst bewerkt:
Bij Microsof zijn ze gek op haakjes; als je een query maakt met een criterium vind je meer haakjes in de code dan een gemiddelde visclub per jaar verslijt. Ik gooi de overbodige meestal gelijk weg, zodat de code leesbaarder wordt, en je ziet waar een haakje bij hoort (functies bijvoorbeeld).
 
Ook de haakjes hebben geen verbetering gebracht.:confused:
heb een mdb bijgevoegd, hopelijk werpt dat een helder licht op dit probleem.

André
 

Bijlagen

Not vergeten bij .BOF


Code:
Dim strSQL As String


    strSQL = "SELECT LISTNUMBER FROM tbl_documents " _
    & "WHERE (LOCATION = '" & Me.lstCompositeLoc & "' AND DOCID = 'CON')"
    
    
    With CurrentDb.OpenRecordset(strSQL)
        If Not .EOF And Not .BOF Then
                Me.txtConlst = .Fields("LISTNUMBER")
        End If
    End With
 
Hoe simpel kan het zijn,
Bedankt heren voor jullie reply's
Gr.
André
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan