Dieser Artikel zeigt Ihnen, wie man mit VB eine Verbindung zu einer Access 97 Datenbank herstellt, wie man durch die einzelnen Datensätze navigiert und wie das Ausdrucken des DataGrid funktioniert.
Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform,
sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc
zu kontaktieren.
Eine Verbindung zu einer Access 97 Datenbank herstellen (ADO)
Mit ADO (ActiveX Data Objects) kann man z.B. auf eine Access 97 Datenbank und der enthaltenen Tabellen, Datensätze und Abfragen zugreifen. Dieser Artikel zeigt Ihnen, wie man eine Verbindung zu einer Access 97 Datenbank herstellt.
Da ADO auf Objekten basiert, ist auch das Verbindungsobjekt, im Code Cn, ein Objekt. Verschiedene Eigenschaften müssen festgelegt werden, damit ADO weiß, welcher Datenbanktyp zu öffnen ist. Vor der Verwendung von ADO muss im Menü Projekt - Verweise… ein Verweis auf die Microsoft ActiveX Data Objects 2.x Library eingerichtet werden.
Option Explicit
Public Cn As New ADODB.Connection
Public Sub InitConnection97(Filename As String)
Cn.Provider = "Microsoft.Jet.OLEDB.3.51" 'Access97
Cn.ConnectionString = Filename 'Datenbankpfad
'z.B. "C:\Programme\Microsoft Visual Studio\VB98\Biblio.mdb"
Cn.CursorLocation = adUseClient
Cn.Mode = adModeReadWrite 'zum lesen und schreiben öffnen
Cn.Open 'Verbindung herstellen
End Sub
Navigation durch Datensätze einer Tabelle (ADO)
In diesem Artikel geht es darum, wie man mit Hilfe von ADO durch die Datensätze einer Tabelle navigiert. Dabei wird von einer gültigen Verbindung zu einer Datenbank und von einer geöffneten Tabelle ausgegangen. Der Einfachheit halber habe ich die Erklärungen direkt als Kommentar hinter die betreffenden Codezeilen gestellt.
Option Explicit
Public Cn As New ADODB.Connection
Public Rs As New ADODB.Recordset
Public Sub NextDataRecord() 'Datensatzcursor vorwärts bewegen
On Error Resume Next
Rs.MoveNext
If Rs.EOF = True Then 'Wenn Ende der Tabelle überschritten
Rs.MoveLast 'Datensatzcursor zum letzten Datensatz bewegen
End If
End Sub
Public Sub PreviousDataRecord()'Datensatzcursor zurück bewegen
On Error Resume Next
Rs.MovePrevious
If Rs.BOF =True Then 'Wenn Anfang der Tabelle unterschritten
Rs.MoveFirst 'Datensatzcursor zum ersten Datensatz bewegen
End If
End Sub
Public Sub LastDataRecord()
On Error Resume Next
Rs.MoveLast 'Datensatzcursor zum letzten Datensatz bewegen
End Sub
Public Sub FirstDataRecord()
On Error Resume Next
Rs.MoveFirst 'Datensatzcursor zum ersten Datensatz bewegen
End Sub
DataGrid ausdrucken (ADO)
Das DataGrid selbst bietet uns leider nicht direkt die Möglichkeit den Inhalt auszudrucken. Dies kann man aber mit einem kleinen Trick dennoch schaffen, denn wir speichern die Anzeige des DataGrids vorher in einer PictureBox, die wir dann nachher zu Papier bringen können. Es sei aber ausdrücklich darauf hingewiesen, dass diese Methode nur den sichtbaren Bereich des DataGrids druckt, eine andere Möglichkeit gibt es leider bisher nicht. Erklärungen habe ich wie immer als Kommentare hinter den betreffenden Zeilen eingefügt.
Option Explicit
Public Sub PrintDataGrid(dGrid As DataGrid, Pic As PictureBox)
Dim RecSel As Boolean 'Zeilenselektor
Dim ScrBars As Integer 'Bildlaufleisten
Dim BackCol As Long 'Hintergrundfarbe
Dim DivStyle As Integer 'Gitternetztyp
Dim Margin As Integer 'Rand
'Einstellungen speichern
RecSel = dGrid.RecordSelectors
ScrBars = dGrid.ScrollBars
BackCol = dGrid.BackColor
DivStyle = dGrid.RowDividerStyle
'Eigenschaften des DataGrid für den Druck optimieren
dGrid.RecordSelectors = False
dGrid.ScrollBars = dbgNone
dGrid.BackColor = vbWhite
dGrid.RowDividerStyle = 1 'schwarze Gitternetzlinien
dGrid.Refresh 'Anzeige aktualisieren
'Aktuelle Anzeige in Bild speichern
Pic.Picture = dGrid.CaptureImage
'Einstellungen rückgängig machen, damit der Anwender nichts
'merkt
dGrid.RecordSelectors = RecSel
dGrid.ScrollBars = ScrBars
dGrid.BackColor = BackCol
dGrid.RowDividerStyle = DivStyle
dGrid.Refresh
'Breite Tabellen besser im Querformat drucken
Printer.Orientation = vbPRORLandscape
'Bild drucken
'Margin = Printer.ScaleWidth \ 10
Printer.PaintPicture Pic.Picture, Margin, Margin, Margin
+ dGrid.Width, Margin + dGrid.Height
'Ausdruck starten
Printer.EndDoc
End Sub