VB 5/6-Tipp 0440: ADO Zugriff auf Access 97 DB und Darstellung in ListView + DataGrid
von Peter K. Sauer
Beschreibung
Öffnet die Nordwind-Datenbank und zeigt deren Inhalt in ListView oder DataGrid an. Gutes Beispiel für Anfänger.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: keine | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------ Anfang Projektdatei ADO_Listview_Datagrid.vbp ------ ' Es muss ein Verweis auf 'Microsoft ActiveX Data Objects 2.5 Library' gesetzt werden. ' Es muss ein Verweis auf 'Microsoft ADO Ext. 2.5 for DDL and Security' gesetzt werden. ' Die Komponente 'Microsoft Windows Common Controls 6.0 (SP6) (MsComCtl.ocx)' wird benötigt. ' Die Komponente 'Microsoft DataGrid Control 6.0 (OLEDB) (MSDATGRD.OCX)' wird benötigt. '--- Anfang Formular "Testbereich" alias Testbereich.frm --- ' Steuerelement: Schaltfläche "Command2" ' Steuerelement: DataGrid "DataGrid1" ' Steuerelement: Textfeld "Text1" ' Steuerelement: Schaltfläche "Command1" ' Steuerelement: Listenanzeigesteuerungselement "ListView1" ' Steuerelement: Beschriftungsfeld "Label1" '########################################################################### ' ADO Zugriff auf Datenbank Access 97 und Darstellung in ListView + DataGrid ' ' peter.k.sauer@web.de 12.2001 ' ' einbinden über Projekt ... Verweise.... ' Microsoft ActiveX Data Object 2.x Library ' Microsoft ADO Ext. 2.5 for DDL and Security ' ' 1 Form, 1 Listview, 1 Datagrid, 1 Textbox, 1 Label, 2 Commandbutton ' ' verwendet wird die Nordwind.mdb aus Access ' '############################################################################ Option Explicit Private CnA As New ADODB.Connection Private RsA As New ADODB.Recordset Private Sub Command1_Click() Dim sSql As String Dim li As ListItem Me.MousePointer = vbHourglass 'SQL-String aufbauen sSql = "Select * From Kunden Where Firma Like '" & _ Trim(Text1.Text) & "%' Order by Firma" With RsA 'Recordset bei Wiederholung schliessen If .State = adStateOpen Then 'Recordset abhängen Set DataGrid1.DataSource = Nothing 'schliessen .Close End If .CursorType = adOpenKeyset .LockType = adLockPessimistic .Open sSql, CnA If .RecordCount = 0 Then MsgBox "nix gefunden" .Close Me.MousePointer = vbDefault Exit Sub End If .MoveFirst End With 'Listview füllen With ListView1 .ListItems.Clear Do While Not RsA.EOF Set li = .ListItems.Add(, , GetFld(RsA.Fields("Kunden-Code"))) li.SubItems(1) = GetFld(RsA!Firma) li.SubItems(2) = GetFld(RsA!Kontaktperson) li.SubItems(3) = GetFld(RsA!Land) li.SubItems(4) = GetFld(RsA!Plz) li.SubItems(5) = GetFld(RsA!Ort) li.SubItems(6) = GetFld(RsA!Strasse) RsA.MoveNext Loop If .Visible Then .SetFocus End If End With 'Recordset an Datagrid binden With DataGrid1 Set .DataSource = RsA RsA.MoveFirst End With Me.MousePointer = vbDefault End Sub Private Sub Command2_Click() 'wechseln zwischen ListView und Datagrid If DataGrid1.Visible = False Then ListView1.Visible = False DataGrid1.Visible = True Command2.Caption = "zeigen ListView" DataGrid1.SetFocus Else ListView1.Visible = True DataGrid1.Visible = False Command2.Caption = "zeigen DataGrid" ListView1.SetFocus End If End Sub Private Sub DataGrid1_HeadClick(ByVal ColIndex As Integer) 'Sortieren Datagrid Static Sorter As String With RsA If Sorter = "Desc" Then .Sort = .Fields(ColIndex).Name & " Asc" Sorter = "Asc" Else .Sort = .Fields(ColIndex).Name & " Desc" Sorter = "Desc" End If End With End Sub Private Sub Form_Load() Dim myPath As String Me.Height = (600 - 30) * Screen.TwipsPerPixelY Me.Width = 800 * Screen.TwipsPerPixelX myPath = App.Path If Right(myPath, 1) <> "\" Then myPath = myPath & "\" End If With ListView1 .Left = 0 .Top = 3000 .View = lvwReport .FullRowSelect = True .LabelEdit = lvwManual .ColumnHeaders.Clear .ColumnHeaders.Add , , "Code", 800 .ColumnHeaders.Add , , "Firma", 2400 .ColumnHeaders.Add , , "Kontaktperson", 2400 .ColumnHeaders.Add , , "Land", 600 .ColumnHeaders.Add , , "Plz", 700 .ColumnHeaders.Add , , "Ort", 2400 .ColumnHeaders.Add , , "Strasse", 2400 End With With DataGrid1 .Left = 0 .Top = ListView1.Top .Visible = False End With With Text1 .Width = 1500 .Height = 315 .Left = 300 .Top = 2400 .Text = "A" End With With Label1 .Top = 2100 .Left = 300 .Height = 210 .Width = 1500 .Caption = " Firma" End With With Command1 .Width = 1500 .Height = 375 .Left = 2100 .Top = 2400 .Caption = "Daten lesen" End With With Command2 .Width = 1500 .Height = 375 .Left = 3900 .Top = 2400 .Caption = "zeigen Datagrid" End With Me.Show 'Connection zur Nordwind.mdb im Applikationspfad With CnA .CursorLocation = adUseClient .Mode = adModeShareDenyNone ' für Access 97: 3.51 für 2000: 4.0 .Provider = "Microsoft.Jet.OLEDB.3.51" .ConnectionString = "Data Source=" & myPath & "NWIND.MDB" Debug.Print .ConnectionString .Open End With End Sub Private Sub Form_Resize() 'Listview und Datagrid dynamisch anpassen With ListView1 .Width = Me.ScaleWidth .Height = Me.ScaleHeight - .Top End With With DataGrid1 .Width = Me.ScaleWidth .Height = Me.ScaleHeight - .Top End With End Sub Private Sub Form_Unload(Cancel As Integer) If RsA.State = adStateOpen Then 'Recordset abhängen Set DataGrid1.DataSource = Nothing 'schliessen RsA.Close 'Object zerstören Set RsA = Nothing End If 'Connection schliessen CnA.Close End Sub Private Function GetFld(Field As Variant) As String 'Check dB-Field auf NullString If IsNull(Field) Then GetFld = "" Else GetFld = Field End If End Function Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader) ' sortieren Listview With ListView1 .SortKey = ColumnHeader.Index - 1 If .SortOrder = lvwAscending Then .SortOrder = lvwDescending Else .SortOrder = lvwAscending End If .Sorted = True .ListItems(1).Selected = True End With End Sub '---- Ende Formular "Testbereich" alias Testbereich.frm ---- '------- Ende Projektdatei ADO_Listview_Datagrid.vbp -------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 14 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Jürgen Böhmler am 22.04.2009 um 14:30
Hallo, ich habe auf einem anderen Rechner die Routine kopiert - läuft. Dann mitgenommen und auf meinem Rechner versucht - nix. Mein grundlegendes Problem als "Jungprogrammierer" ist: die Nachladung von Verweisen.
Ich benötige die Installation der genannten Dateien, da in meinem Verweiskatalog die benötigten Eintragungen fehlen.
Ich habe zwar Service Pack 6 installiert, aber das hat nichts genützt - wer kann mir helfen ???
mfg Jürgen Böhmler
Kommentar von am 02.01.2007 um 05:29
hi, ich habe access2003
brauche ich die nordwinddatenbank im 97 format ?
oder wie kann ich das beispiel starten?
die connection ...open..geht nicht
danke
roland_k
Kommentar von Bernd Ellermann am 19.10.2006 um 21:33
Hallo,
kann ich mit dem Program auch eine dBase Datei öffnen?
.Provider = "Microsoft.Jet.OLEDB.3.51" scheint nicht zu funktioniern.
Welchen Provider muss ich eingeben?
Mit frundlichem Gruß
Bernd
Kommentar von Gerhard am 02.06.2006 um 15:02
hallo,
ich hab ein paar fragen die mich beschäftigen.
Was bedeutet Recordset?
Wie binde ich die datenbank unter Adodb ein ?
Kommentar von am 22.02.2006 um 09:54
Hallo,
ich verwende xp und VB6 inkl allem was benötigt wird.
wenn man bei der exe-Datei auf die "Minimieren-Schaltfläche" klickt und danach wieder auf in der Taskleiste auf die exe dann kommt folgende Fehlermeldung:
Run-time errror 380
Invalid property value
was könnte das Problem sein?
Mfg
Meier
Kommentar von Stefan R am 24.03.2005 um 12:54
An Peter Schmid:
Dazu muss man auf Projekt/Komponenten gehen und die Komponente Microsoft Windows Common Controls 6.0" ins Projekt aufnehmen. Dann findet man auch ein ListView.
Kommentar von aaaaa am 05.01.2005 um 21:14
i want download ADO Data Control
Kommentar von am 23.04.2003 um 16:17
Wie kann ich, wenn ich zwei gleiche Zeilen im DataGrid habe, diese nur einmal anzeigen lassen?
Kommentar von Christoph Rall am 27.03.2003 um 09:57
Funktioniert sehr gut, musste nur die Zeile:
.FullRowSelect = True
deaktivieren
Kommentar von slainte am 13.03.2003 um 11:54
das prinzip habe ich verstanden. meine frage ist, wie lese ich die markierten zeilen des listview aus und füge sie formatiert in ein word-dokument? wahrscheinlich geht das über einen string. aber wie mache ich das (mit welcher methode)?
für schnelle hilfe wäre ich dankbar...
ciao, slainte
Kommentar von Janusz am 28.09.2002 um 00:02
Good
Kommentar von Marc Michalak am 14.05.2002 um 15:45
Das Steuerelement Listview ist nicht die Listbox.
Einstellung in VBA: als "Zusätzliche Steuerelement" (rechter Mausklick in der "Werkzeugsammlung") es heisst u. a.:
Microsoft ListView Control 6.0 Sp(4).
- - -
Einstellung in VB 6.0:
als Steuerelement in der "Werkzeugsammlung"es heisst: Microsoft Windows Common Controls 6.9 (SP4)
Viel Erfolg
Kommentar von Bernd Kistenmacher am 30.04.2002 um 14:33
Hallo,
vielen Dank für die nützlichen Tipps. Mich beschäftigt folgendes Problem. In Access 97 habe ich eine Tabelle angelegt, die neben "normaler" Strings auch ein OLE-Feld enthält, an das ich Bitmaps gebunden habe (CD-Verwaltung). Nun habe ich über Data-Environment eine Verbindung hergestellt. Der SQL-Code wird auch korrekt erzeugt. Wenn ich aber nun die Daten in einem Formlar sichtbar machen will, kommt eine Fehlermeldung bzgl. der Anbindung genau dieses OLE-Feldes. Er findet die Daten nicht und kann folglich auch kein Bild darstellen. Ich wüßte jetzt auch nicht, wie ich später ein Bitmap aus der VB-Anwendung heraus in genau diese Tabelle ablegen könnte. Haben Sie eine Idee und können Sie mir weiterhelfen?
Vielen Dank im Voraus.
Mit freundlichen Grüßen
Bernd Kistenmacher
Kommentar von Peter Schmid am 11.03.2002 um 10:39
Ich kann in VB6 kein Steuerelement Listview finden. Wie bekomme ich es? Ist evtl. die Listbox gemeint?