ADO VBA, was wenn kein Treffer gegen die Datenbank erfolgt
Hallo,
eigentlich habe ich was ganz einfaches vor:
Check in der Excel-Zeile ob Artikel xy in der Tabelle 'Artikeletiketten' vorhanden ist. Wenn ja, dann die Zelle des Wertes rot einfärben, wenn nicht, dann transparent lassen, oder nach erfolgter Nachbesserung von rot auf transparent wechseln.
Das Problem ist natürlich, dass er bei einem Artikel "zzzzzz" keinen Treffer gegen die Datenbank findet. Und damit sofort der Recordset EOF ist, die Schleife "Do until" gar nicht durchlaufen wird.
Wie kann ich sowas abfangen, wenn die Abfrage keinen Datensatz zu Tage fördert?
eigentlich habe ich was ganz einfaches vor:
Check in der Excel-Zeile ob Artikel xy in der Tabelle 'Artikeletiketten' vorhanden ist. Wenn ja, dann die Zelle des Wertes rot einfärben, wenn nicht, dann transparent lassen, oder nach erfolgter Nachbesserung von rot auf transparent wechseln.
For intSchleife = 2 To intZ
If intZ >= 2 Then strSQLQuery_CheckArtikelvorhanden = "Select Artikelnummer from ArtikelEtiketten where Artikelnummer = '" & Daten.Cells(intSchleife, intcolumn + 1) & "'"
rst.Open strSQLQuery_CheckArtikelvorhanden
Do Until rst.EOF
If Daten.Cells(intSchleife, intcolumn + 1).Value = rst.Fields("Artikelnummer").Value And Daten.Cells(intSchleife, intcolumn) = "" Then
Daten.Cells(intSchleife, intcolumn + 1).Interior.Color = RGB(230, 50, 50)
Elseif Daten.Cells(intSchleife, intcolumn + 1).Interior.ColorIndex = xlNone
bFArtikel = True
End If
rst.MoveNext
Loop
rst.Close
Das Problem ist natürlich, dass er bei einem Artikel "zzzzzz" keinen Treffer gegen die Datenbank findet. Und damit sofort der Recordset EOF ist, die Schleife "Do until" gar nicht durchlaufen wird.
Wie kann ich sowas abfangen, wenn die Abfrage keinen Datensatz zu Tage fördert?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 314467
Url: https://administrator.de/contentid/314467
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo,
Noch ein Elseif vor dein Do Until einbauen welches dann das tut was du möchtest wenn eben kein Treffer erzielt wird.
Oder ein if rst.count <=0 dann eben gar nicht erst dein Do Loop....
Deiner Phantasie sind in der Umsetzung keinerlei grenzen gesetzt.
Gruß,
Peter
Noch ein Elseif vor dein Do Until einbauen welches dann das tut was du möchtest wenn eben kein Treffer erzielt wird.
Oder ein if rst.count <=0 dann eben gar nicht erst dein Do Loop....
Deiner Phantasie sind in der Umsetzung keinerlei grenzen gesetzt.
Gruß,
Peter
For this to work you need to movelast first then check the property RecordCount and then rewind the cursor.
https://dbwiki.net/wiki/Access_Anfänger:_RecordCount_liefert_falsch ...
But a simple
before your loop does the same work.
Regards
https://dbwiki.net/wiki/Access_Anfänger:_RecordCount_liefert_falsch ...
But a simple
If rs.EOF then
'...
End if
Regards
Hallo,
Dann würde dein rst.Movenext ebenfalls nicht funktionieren sowie deine Do Loop Schleife. Schau dir das noch mal genauer an.
Bevor du dein rst.RecordCount machst solltest du ein rst.MoveLast machen und dann erst dein rst.RecordCount.
Gruß,
Peter
Dann würde dein rst.Movenext ebenfalls nicht funktionieren sowie deine Do Loop Schleife. Schau dir das noch mal genauer an.
Bevor du dein rst.RecordCount machst solltest du ein rst.MoveLast machen und dann erst dein rst.RecordCount.
Gruß,
Peter