none
Mit VBA ausgeführter Abfrage liefert kein Ergebnis RRS feed

  • Frage

  • Hallo

    mit folgenden Sript will ich mit VBA prüfen ob ein bestimmter Datensatz vorhanden ist.
    Leider bekomme ich kein Ergebnis obwohl der gesuchte Datensatz vorhanden ist.

    Selbst wenn ich den Filter weg lasse bekomme ich kein Ergebnis aber auch keinen Fehler.

    Function checkConnection() As Boolean
    Dim db              As Object
    Dim rs              As Object
    
        On Error GoTo ERR_checkConnection
        Set db = CreateObject("ADODB.Connection")
        Set rs = CreateObject("ADODB.RecordSet")
    
        db.Open ("Provider=SQLOLEDB; Server=MyServer; Database=MyDatabase; Trusted_Connection=yes;")
        rs = db.Execute("SELECT * FROM MyTable WHERE MyField = 'MyValue'"
    	if rs.recordCount > 0 then
    	   	checkConnection = TRUE
    	else
    		checkConnection = FALSE
    	end if
    Exit_checkConnection:
        rs.Close      'Recordset schließen
        Set rs = Nothing
        db.Close  'Verbindung zum SQL Server schließen
        Set db = Nothing
        Exit Function
        
    ERR_checkConnection:
    	debug.print Err.Number & " _ " & Err.Description
        Resume Exit_checkConnection
    End Function

    Hat jemand eine Idee was da falsch löuft?

    Gruß

    cheapy

    Dienstag, 28. Juli 2020 13:27

Antworten

  • Dies liegt an der CursorLocation-Eigenschaft. Diese liegt per Default auf Server.
    Nach dem rs.Open musst du rs.EOF abfragen, bei False kannst du dann auf den Puffer zugreifen.
    Beim Server-Cursor ist Recordcount immer -1!
    Du kannst die CursorLocation des Connect-Objects auf Client setzen, dann stimmt auch RecordCount wieder.
    Der Nachteil hierbei ist, dass erst das komplette Recordset geladen wird, auch wenn du nur 1 Satz brauchst.


    • Bearbeitet Der Suchende Mittwoch, 29. Juli 2020 19:51
    • Als Antwort vorgeschlagen Der Suchende Mittwoch, 29. Juli 2020 19:51
    • Als Antwort markiert Cheaptrick_la Donnerstag, 30. Juli 2020 04:43
    Dienstag, 28. Juli 2020 14:49