Home Windows ecommerce Treiber Server Entwicklung Software Security Internet Hardware Nicht IT Mobile Nintendo Suchen Multimedia Virtualisierung Kopie von Navi01b Provider


Access

Uebersicht
MS Office
MS Visio
CAO Faktura
Bildbearbeitung
Security
WysiGot
7zip
Synchronisieren
RDP Apple Mac
Videobearbeitung
WebEditor
-->Word Access Outlook Excel Installation

 

 

SMTP Mail senden
http://www.freeaccess.de/downloaddetails.asp?ID=19

 

DB Zugriff mit

dim DB as ADODB.Connection

dim rs as ADODB.Recordset

dim strSQL as String



DB.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data " & _

"Source=" & App.Path & "\datenbank.mdb;" 'fuer Access 2000

REM Daten Schreiben
strSQL = "INSERT INTO Tabelle1 (Name, Alter) VALUES ('" & VarNameEin & "', '" & VarAlterEin & "')"



rs.Open strSQL, DB, adOpenStatic, adLockReadOnly

REM Daten holen
strSQL = "SELECT * FROM Tabelle1"   



rs.Open strSQL, DB, adOpenStatic, adLockReadOnly


REM Daten einzeln lesen
rs.MoveFirst ' Zeiger auf den Anfang stellen

VarName1 = rs.Fields![Name]

VarAlter1 = rs.Fields![Alter]

rs.MoveNext

VarName2 = rs.Fields![Name]

VarAlter2 = rs.Fields![Alter]

rs.MoveNext

VarName3 = rs.Fields![Name]

VarAlter4 = rs.Fields![Alter]


REM Daten frei geben
rs.Close

 

 

Anderes Beispiel

Sub BOFX()

   Dim dbsNorthwind As Database
   Dim rstCategories As Recordset
   Dim strMessage As String

   Set dbsNorthwind = OpenDatabase("Northwind.mdb")
   Set rstCategories = _
      dbsNorthwind.OpenRecordset("Categories", _
      dbOpenSnapshot)

   With rstCategories
      ' Populate Recordset.
      .MoveLast
      .MoveFirst

      Do While True
         ' Display current record information and get user 
         ' input.
         strMessage = "Category: " & !CategoryName & _
            vbCr & "(record " & (.AbsolutePosition + 1) & _
            " of " & .RecordCount & ")" & vbCr & vbCr & _
            "Enter 1 to go forward, 2 to go backward:"

         ' Move forward or backward and trap for BOF or EOF.
         Select Case InputBox(strMessage)
            Case 1
               .MoveNext
               If .EOF Then
                  MsgBox _
                     "End of the file!" & vbCr & _
                     "Pointer being moved to last record."
                  .MoveLast
               End If

            Case 2
               .MovePrevious
               If .BOF Then
                  MsgBox _
                     "Beginning of the file!" & vbCr & _
                     "Pointer being moved to first record."
                  .MoveFirst
               End If

            Case Else
               Exit Do
         End Select

      Loop

      .Close
   End With

   dbsNorthwind.Close

End Sub

 

Noch anderes Beispiel

Zugriff auf Access-Datenbanken

Objekthierarchie

In Visual Basic finden sich eine Reihe von Klassen, mit deren Hilfe man auf Datenbanken zugreifen kann. Zum einen wäre da die Klasse DATABASE. In einer Instanz eines Datenbankobjekts befinden sich eine Reihe von Unterobjekte. Diese Unterobjekte sind zum größten Teil Auflistungen, auf deren Elemente man im einzelnen zugreifen kann. Die folgenden Auflistungen sind für uns relevant:

 

TableDefs QueryDefs Relations Recordsets
Tabellen
definitionen

 

Abfrage
definitionen
Relationen Datensatz
mengen


Und auch alle geöffneten Datenbanken sind in einer Auflistung DATABASES enthalten, die wiederum in einer Auflistung WORKSPACES (Arbeitsbereiche) enthalten ist. Wir werden im Folgenden aber vorerst nur eine Datebank und einen Arbeitsbereich verwenden.

Wir werden zum einfachen Zugriff auf Tabellen oder Abfragen Recordsets verwenden. Mit Hilfe einer solchen Datensatzmenge kann man durch die Tabelle oder Abfrage navigieren, Datensätze hinzufügen, Datensätze verändern, etc.
Ein solches Recordset besitzt dann eine Auflistung FIELDS.

Wie kann man nun auf Auflistungen zugreifen?

Verwendung von Auflistungen

Hat man eine Auflistung C (im Englischen wird auch der Begriff Container benutzt), so gibt es die Eigenschaft COUNT, welche die Anzahl der Objekte in dieser Aufistung enthält. Sie ist vom Typ LONG INTEGER.
Man kann nun indiziert auf die einzelnen Objekte mit C(i) zugreifen, wobei i bei Null anfängt, also zwischen Null Und COUNT - 1 liegt.
Hat ein einzelnes Objekt einen Namen, so kann man auch über C("name") darauf zugreifen.

Beispiel: Indizierter Zugriff auf eine Auflistung
Dieses Beispiel gibt alle Tabellennamen in der Datenbank "test.mdb" mit Hilfe einer MessageBox aus.

DIM db AS DATABASE
DIM i AS LONG

SET db = OPENDATABASE("test.mdb")

FOR i = 0 TO db.TABLEDEFS.COUNT - 1
	MsgBox db.TABLEDEFS(i).Name
NEXT i 

db.Close

Mit der SET-Anweisung wird das Datenbankobjekt zugewiesen, in unserem Beispiel öffnen wir eine bestehende Datenbank. (Hier könnte man mit Hilfe von CREATEDATABASE auch eine neue Datenbank erstellen.) Dann gehen wir schrittweise die Tabellendefinitionen durch und geben für jede Tabelle den Namen aus.

Beispiel: Zugriff über Namen auf eine Auflistung
Dieses Beispiel gibt die Anzahl der Felder in der Tabelle "tabelle1" zurück.

DIM db AS DATABASE

SET db = OPENDATABASE("test.mdb")

MsgBox Str$(db.TABLEDEFS("tabelle1").FIELDS.COUNT)

db.Close

Zugriff auf bestehende Tabellen

Zuerst müssen wir die Datenbank öffnen. Dies geschieht wie im vorigen Beispiel mit OPENDATABASE.

SET Datenbankobjekt = workspace.OpenDatabase
    (dbname[, exclusive[, read-only[, source]]])

Für uns ist erst nur der Datenbankname dbname relevant. Das Objekt workspace kann weggelassen werden, dann wird die Datenbank im aktuellen Arbeitsbereich und nicht etwa in einem anderen geöffnet.

Dann öffnen wir ein Recordset-Objekt mit dem Befehl OPENRECORDSET.

SET variable = Datenbank.OpenRecordset(quelle[, typ[, optionen]])

Auch hier ist vorerst nur der Parameter quelle relevant, der den Tabellen- oder Abfragenname angibt.

Nun kann man mit dem Recordset-Objekt beispielsweise durch die Tabelle navigieren. Dies geschieht mit den folgenden Methoden:

 

MoveFirst Gehe zu erstem Datensatz
MoveNext Gehe zu nächsten Datensatz
MovePrevious Gehe zu vorherigen Datensatz
MoveLast Gehe zu letztem Datensatz
BOF Begin of File (ist bereits der erste Datensatz erreicht?)
EOF End of File (ist bereits der letzte Datensatz erreicht?)


Der Zugriff auf einzelne Felder kann durch die Auflistung FIELDS geschehen, aber auch schnell durch die folgende Abkürzung, wobei bei Feldnamen mit Sonderzeichen(z.B. Leerzeichen) eckige Klammern [] um den Feldnamen angegeben werden müssen:

Recordset!Feldname
bzw. Recordset![Feldname]

Beispiel: Navigieren in einem Recordset
Das nun folgende Beispiel gibt für jeden Datensatz in der Tabelle "tabelle1" der Datenbank "test.mdb" die Felder "Feld1" und "Feld mit Blanks" in jeweils einer MessageBox aus.
Zuerst wird eine Datenbank und einen Recordset geöffnet, dann zum ersten Datensatz gegangen. Solange nun nicht das Dateiende erreicht ist, werden die Informationen ausgegeben und zum nächsten gegangen.

DIM db AS DATABASE, rs AS RECORDSET
DIM i AS LONG

SET db = OPENDATABASE("test.mdb")
SET rs = db.OpenRecordset("tabelle1")

rs.MoveFirst

WHILE NOT rs.EOF
	MsgBox rs!Feld1
	MsgBox rs![Feld mit Blanks]
	rs.MOVENEXT
WEND

db.CLOSE

Das Hinzufügen von neuen Datensätzen geschieht durch ein ADDNEW, das verändern der Feldinhalte und einen nachfolgenden UPDATE.

Beispiel: Anfügen von Datensätzen

DIM db AS DATABASE, rs AS RECORDSET
DIM i AS LONG

SET db = OPENDATABASE("test.mdb")
SET rs = db.OpenRecordset("tabelle1")

rs.AddNew
rs!Feld1 = "TEST"
rs![Feld mit Blank] = "TEST"
rs.UPDATE

db.CLOSE

Das Ändern von bestehenden Datensätzen geschieht durch ein EDIT, das verändern der Feldinhalte und einen nachfolgendem UPDATE.

Beispiel: Ändern von Datensätzen

DIM db AS DATABASE, rs AS RECORDSET
DIM i AS LONG

SET db = OPENDATABASE("test.mdb")
SET rs = db.OpenRecordset("tabelle1")

rs.MoveFirst

rs.EDIT
rs!Feld1 = "TEST"
rs![Feld mit Blank] = "TEST"
rs.UPDATE

db.CLOSE

 

 

Access Datenbank öffnen und ein Makro/Modul starten

Problem: Sie wollen aus Access heraus (oder auch aus einer anderen Anwendung) eine Access Datenbank öffnen und einen dort drinn enthaltenen Programmcode ausführen.

Lösung:

Sub CallAccessMacro()
   Dim accApp As Object
   Dim sFile As String
   sFile = "D:\MeineDatenbank.mdb"
   Set accApp = CreateObject("Access.Application")
   accApp.OpenCurrentDatabase sFile
   accApp.Run "subMeldung"
   accApp.CloseCurrentDatabase
   Set accApp = Nothing
End Sub
 

 

 

 


Ihre Werbung hier

 

Haftungsausschluss: Verwendung der Informationen auf Ihre eigene Gefahr. Wir übernehmen keinerlei Haftung. Beachten Sie auch den Haftungsausschluss.


Wenn Sie Wünsche, Anregungen, Verbesserungen, Korrekturen oder sonstige Vorschläge zu dieser FAQ haben: . Wir freuen uns auf Ihr Mail.


 Und jetzt noch ein bisschen Werbung...

Stellensuche, Jobangebote unter www.notizia.ch/stellensuche