Datenbankzugriff mit DAO konstant Private Sub Befehl0_Click() Dim db As DAO.Database Dim ta As DAO.Recordset Set db = CurrentDb() Set ta = db.OpenRecordset("person") ta.AddNew ta!pnr = 99 ta!pname = "Zuse" ta.Updatex ta.Close End Sub Private Sub Befehl1_Click() Dim db As DAO.Database Dim ta As DAO.Recordset Set db = CurrentDb() Set ta = db.OpenRecordset("person") ta.MoveFirst While Not ta.EOF MsgBox ta!pnr MsgBox ta!pname MsgBox "weiter?" ta.MoveNext Wend ta.Close End Sub Mit Formularfeldern Private Sub Befehl6_Click() 'Tabelle anlegen Dim db As DAO.Database Dim df As DAO.TableDef Dim fe1 As DAO.Field Dim fe2 As DAO.Field Set db = CurrentDb() Set df = db.CreateTableDef("person") Set fe1 = df.CreateField("pnr", DB_INTEGER) Set fe2 = df.CreateField("pname", DB_TEXT, 20) df.Fields.Append fe1 df.Fields.Append fe2 db.TableDefs.Append df End Sub Private Sub Befehl0_Click() 'Zeile eintragen Dim db As DAO.Database Dim ta As DAO.Recordset Set db = CurrentDb() Set ta = db.OpenRecordset("person") ta.AddNew ta!pnr = Text2 ta!pname = Text4 ta.Update ta.Close End Sub Private Sub Befehl1_Click() 'alle Zeilen lesen Dim db As DAO.Database Dim ta As DAO.Recordset Set db = CurrentDb() Set ta = db.OpenRecordset("person") ta.MoveFirst While Not ta.EOF Text2 = ta!pnr Text4 = ta!pname MsgBox "weiter?" ta.MoveNext Wend ta.Close End Sub Private Sub Befehl7_Click() 'Zeilen mit Bedingung lesen Dim db As DAO.Database Dim ta As DAO.Recordset Dim bedingung As String Set db = CurrentDb() bedingung = "pnr > 10" Set ta = db.OpenRecordset("person", dbOpenDynaset) ta.FindFirst bedingung While Not ta.NoMatch Text2 = ta!pnr Text4 = ta!pname MsgBox "weiter?" ta.FindNext bedingung Wend ta.Close End Sub Private Sub Befehl1_Click() 'Zeilen löschen Dim db As DAO.Database Dim ta As DAO.Recordset Set db = CurrentDb() Set ta = db.OpenRecordset("person") ta.MoveFirst While Not ta.EOF Text2 = ta!pnr Text4 = ta!pname ergebnis = MsgBox("löschen?", vbYesNo, "MsgBox-Beispiel") If ergebnis = vbYes Then ta.Edit ta.Delete End If ta.MoveNext Wend ta.Close End Sub Datenbankzugriff mit SQL > Erstellen -> Abfrageentwurf, Fenster schliessen, „SQL“ erscheint -> SQL-Kommando eingeben -> ! (ausführen) Es ist immer nur ein Befehl möglich. Oder programmieren in VBA: Private Sub Befehl4_Click() Dim db As DAO.Database Dim cmd As String Set db = CurrentDb() cmd = "insert into person values (" + Text5 + ",'" + Text7 + "'," + Text9 + ")" MsgBox cmd db.Execute (cmd) End Sub Private Sub Befehl11_Click() 'Deklarationen Dim db As DAO.Database Dim ergebnis As DAO.Recordset Set db = CurrentDb() 'Datenbankzugriff Dim cmd As String cmd = "select pnr, pname, palter from person" Set ergebnis = db.OpenRecordset(cmd) 'Reaktion ergebnis.MoveLast ergebnis.MoveFirst For i = 1 To ergebnis.RecordCount Text5 = ergebnis!pnr Text7 = ergebnis!pname Text9 = ergebnis!palter MsgBox "weiter" ergebnis.MoveNext Next End Sub Konzeptueller Unterschied DAO und SQL DAO hauptspeicherorientiert, die Daten werden in den Hauptspeicher geholt, dort bearbeitet und dann zurückgeschrieben SQL die Kommandos sind komplex, werden versandt und dezentral bearbeitet Programmierunterschiede ACCESS-VBA und Java In Java ist nötig SQL-Bibliotheken einbinden Panel erzeugen Listener erzeugen Datasource definieren und benutzen Methoden für Panel und Resultset benutzen In VBA nicht nötig Die Programme haben also eine geringere Zeilenzahl wegen der engen Verklammerung von ACCESS-VBA mit dem eigenen ACCESSDatenbanksystem. ODBC Anlegen einer Datenquelle In Windows -> Systemsteuerung -> Verwaltung -> Datenquellen/ODBC Treiber, Name, Ort angeben Beim Anlegen einer ACCESS7-Datenbank als Datenquelle ist darauf zu achten, dass der ACCESS7-Datenbanktreiber den Typ accdb kann. Beim SQL_Server müssen noch der Serverort und die Datenbank angegeben werden. Ausserdem muss man sich einloggen. Eine Systemdatenquell kann nur vom Administrator angelegt werden. Eine Benutzerdatenquelle geht auch. Access - Access -> Externe Daten -> Access -> importieren oder verknüpfen -> Ort im Dateisystem suchen, Tabellen werden angezeigt Access – SQL Server -> Externe Daten -> Doppelbildchen -> ODBC-Datenbank -> verknüpfen, Datenquelle auswählen