• Offizieller Beitrag

    DAO Tabelle öffnen und auslesen

    Eine Tabelle mit DAO öffnen und das erste Datenfeld aller Datensätze im Direktbereich ausgeben

    Code
    Dim rs As Recordset                      'Variable für Recordset definieren
    Dim strSQL As String                     'Variable für SQL-Statement definieren
    strSQL = "SELECT * FROM Tabellenname;"   'SQL-Statement auf Variable schreiben
    Set rs = CurrentDb.OpenRecordset(strSQL) 'Recordset öffnen
    Do Until rs.EOF                          'Schleife bis zum letzten Datensatz
      Debug.Print rs.Fields(0).Value         '1.Feld ausgeben
      rs.MoveNext                            'nächster Datensatz auswählen
    Loop
    rs.Close                                 'Recordset schliessen
    Set rs = Nothing                         'Variable rs wieder frei geben
    • Offizieller Beitrag

    ADO Tabelle öffnen und auslesen

    Eine Tabelle mit ADO öffnen und das erste Datenfeld aller Datensätze im Direktbereich ausgeben

    • Offizieller Beitrag

    ADO Connection Strings

    Je nach Datenbankform brauch man einen anderen Provider

    Code
    MS-Access 97                  "Microsoft.Jet.OLEDB.3.51"
    MS-Access ab 2000             "Microsoft.Jet.OLEDB.4.0"
    MS-Access ab 2007     	      "Microsoft.ACE.OLEDB.12.0"
    MS-Sharepoint (OLEDB)         "Microsoft.ACE.OLEDB.12.0"
    MS-SQL-Server (OLEDB) 	      "SQLOLEDB.1"          oder "SQLOLEDB"
    MS-SQL-Server (ODBC)  	      "MSDASQL.1"           oder "MSDASQL"
    Oracle-DB (Quelle: Oracle)    "OraOLEDB.Oracle.1"   oder "OraOLEDB.Oracle"
    Oracle-DB (Quelle: Microsoft) "MSDAORA.1"           oder "MSDAORA"
    MySQL (OLEDB)                 "MySQLProv"

    Es gibt 2 Möglichkeiten wie man einen Connection String definieren kann

    1.

    Code
    Dim cnn As ADODB.Connection
    Set cnn = New ADODB.Connection
    cnn.Provider = "SQLOLEDB.1"                           'oder "SQLOLEDB" ohne Versionsnummer
    cnn.Properties("Data Source") = "ADRESSE-SQL-SERVER"  'Adresse des SQL-Servers
    cnn.Properties("Initial Catalog") = "DATENBANKNAME"   'Name der Datenbank
    cnn.Properties("Integrated Security") = "SSPI"        'SSPI wenn ohne Username und Passwort
    cnn.Open
    cnn.Close
    Set cnn = Nothing


    2.

    Code
    Dim cnn As ADODB.Connection
    Set cnn = New ADODB.Connection
    cnn.ConnectionString = "Provider='SQLOLEDB.1';Data Source='ADRESSE-SQL-SERVER';" & _
       "Initial Catalog='DATENBANKNAME';Integrated Security='SSPI';"
    cnn.Open
    cnn.Close
    Set cnn = Nothing

    einfache Anführungszeichen (') sind Optional

    Weitere Parameter:

    Code
    cnn.ConnectionTimeout = 30   'Verbindungstimeout

    Beispiele:

    • Offizieller Beitrag

    Anzahl Datensätze ermitteln

    Eine alternative Möglichkeit zur Eigenschaft .RecordCount die Anzahl der Datensätze eines Recordsets zu ermitteln.

    Über DAO

    Code
    Dim rs As Recordset
    Dim strSQL As String
    strSQL = "SELECT COUNT(*) FROM Tabellenname;"
    Set rs = CurrentDb.OpenRecordset(strSQL)
    Debug.Print rs.Fields(0).Value
    rs.Close
    Set rs = Nothing

    Über ADO


    oder

    Code
    Dim cnn As ADODB.Connection
    Set cnn = CurrentProject.Connection
    Dim rs As New ADODB.Recordset
    rs.Open "SELECT COUNT(*) FROM _AnzahlDSaetze;", cnn, adOpenStatic, adLockReadOnly
    Debug.Print rs.Fields(0).Value
    rs.Close
    cnn.Close
    Set rs = Nothing
    Set cnn = Nothing

    Über ADO COMMAND

    Code
    Dim cnn As ADODB.Connection
    Set cnn = CurrentProject.Connection
    Dim cmd As New ADODB.Command
    cmd.CommandText = "SELECT COUNT(*) FROM _AnzahlDSaetze;"
    cmd.ActiveConnection = cnn
    Debug.Print cmd.Execute.Fields(0).Value
    cnn.Close
    Set cmd = Nothing
    Set cnn = Nothing