# Access Datenbank in DataGrid anzeigen



## neopayne (22. Januar 2004)

Hi,

ich möchte eine Access Datenbank in einem DataGrid anzeigen. Vielleicht kann mir jemand den passenden Code geben oder hat ein kleines Beispielprogramm.

thx neopayne


----------



## daDom (23. Januar 2004)

Hi!

Ich weiß nicht, ob du das über DataGrid machen kannst, aber ich habe diese Lösung:

Erstelle zum Datagrid auch eine *Ado DataControl*-Komponente.

Dann stellst du in den Eigenschaften unter "ConnectionString" den DB-Pfad ein.


Gruß
daDom


----------



## meg (23. Januar 2004)

*Hier ein Beispiel:*

Private Sub Btn_OK_click()
'Funktion zum öffnen der Datenbank
OpenAccessDatabase Datenbankpfad & "\" & Datenbankfile
'Funktion zum Öffnen des Recordset
OpenAccessRecordset "Select * from Tbl_ZeitenEingabetabelle WHERE fld_SB = '" & strCurrentUser & "' order by fld_uhrzeit desc"

'Funktion zum befüllen des Flexgrids
Grid_Fill MSFlexGrid1

End Sub

Hier die einzelnen Funktionen:

Public Function OpenAccessDatabase(strDatabase As String)
On Error GoTo weiter
With CnA

If CnA.State = adStateOpen Then
.Close
End If


        If Not CnA.State = adStateOpen Then
            .CursorLocation = adUseClient
            .Mode = adModeShareDenyNone
            ' für Access 97: 3.51  für 2000: 4.0
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source= " & strDatabase
            '.ConnectionString = "Data Source=" & App.Path & "\" & strDatabase
            'Debug.Print .ConnectionString
            .Open
        End If
End With
Exit Function
weiter:
    'frm_Connect_to_Database.Show

End Function

_____________________________________________________________

Public Function OpenAccessRecordset(ByVal SQLString As String)

With RSA
        'Recordset bei Wiederholung schliessen
        If .State = adStateOpen Then
            'Recordset abhängen
            .Close
        End If
        .CursorType = adOpenKeyset
        .LockType = adLockOptimistic
        .Open SQLString, CnA

        If .RecordCount = 0 Then
            Screen.MousePointer = vbDefault
            Exit Function
        End If

        .MoveFirst
End With

End Function

________________________________________________________________

Public Function Grid_Fill(ByVal Flexgridname As Object)

Dim y, strWert, x, i

Set RsA = Nothing
Set CnA = Nothing

'Pfad und file zum Öffnen der Datenbank
OpenAccessDatabaseServer DatenbankpfadServer & "\" & DatenbankfileServer

If CnA.State = adStateOpen Then 
'--determin the amount of cols and rows
Flexgridname.Cols = RSA.Fields.Count
Flexgridname.Rows = RSA.RecordCount + 1

'--Filling the headlines

    For y = 0 To RSA.Fields.Count - 1
        Flexgridname.TextMatrix(0, y) = RSA.Fields
    Next y

'--Filling the ValueRows
If NoRecordsEingabe = False Then
    For x = 1 To RSA.RecordCount 

        For y = 0 To RSA.Fields.Count - 1
            strWert = RSA.Fields.Value
            If IsNull(strWert) Then
                strWert = ""
            End If
            Flexgridname.TextMatrix(x, y) = strWert
        Next y

        RSA.MoveNext
    Next x
End If


End If

Im Declarationbereich darf halt folgendes nicht fehlen:

Public CnA As New ADODB.Connection
Public RSA As New ADODB.Recordset

Den Verweis "Microsoft ActiveX Data Objects 2.X" musst Du auch setzen.
[Projekt]-[Verweise]

Servus aus Salzburg


----------

