vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Unterformular a`la Access 
Autor: srcdbgr
Datum: 12.10.06 11:37

Eine Möglichkeit, hierarchisch strukturierte Daten in einem Formular anzuzeigen ist das SQL SHAPE. Dazu musst Du aber auf das DataEnvironment verzichten und Connection und Recordsets manuell erstellen etc. Ist aber nicht wirklich schwer. Anbei ein Codebeispiel zum Einfügen in ein Modul. Der Aufruf der Prozeduren erfolgt dann aus dem Formular.
Option Explicit
 
'Deklarationen
Public oCon As New adodb.Connection	'Datenbankverbindung
Public oRs As adodb.Recordset		'Recordset
 
'Verbindung zur Datenbank aufbauen
Public Sub OpenCon()
    'Deklarationen
    Dim strConnectionString As String
 
    'ConnectionString erstellen
    strConnectionString = "PROVIDER=MSDataShape;" & _
                          "Data PROVIDER=Microsoft.Jet.OLEDB.4.0;" & _
                          "Data Source=" & Laufwerk & Verzeichnis & "myDB.mdb;" _
                           'hier vollständigen Pfad zur DB einfügen (wie auch 
                          ' immer Du das darstellst)
 
    With oCon
        If .State = adStateOpen Then .Close
        .CursorLocation = adUseClient
        .Open strConnectionString
    End With
End Sub
 
'Tabellen hierarchisch lesen
Public Sub GetData()
    'Recordset Verbindung zuweisen
    Set oRs = New Recordset
    Set oRs.ActiveConnection = oCon
 
    'Recordsets öffnen
    With oRs
        If .State = adStateOpen Then .Close
        .ActiveConnection = oCon
        .LockType = adLockOptimistic
        .Source = "SHAPE {select HauptTabelle.* from HauptTabelle Order by" & _
          "Feld1} AS ParentCMD APPEND ({select FeldA1,FeldA2,FeldA3 from" & _
          "UnterTabelleA Order by FeldA1} AS ChildCMD1 RELATE Feld1 TO FeldA1)" & _
          "AS ChildCMD1, ({select FeldB1,FeldB2,FeldB2 from UnterTabelleB Order" & _
          "by FeldB1} AS ChildCMD2 RELATE Feld1 TO FeldB1) AS ChildCMD2"
        .Open 'Tabelle öffnen
    End With
End Sub
 
'Tabellendaten hierarchisch anzeigen
Public Sub ShowData()
    'Deklarationen
    Dim oText As TextBox
 
    'Textfelder an Datenprovider binden
    For Each oText In myForm.txtFields
        Set oText.DataSource = oRs
    Next
 
    'Datagrids an Datenprovider binden (Funktion wie Unterformulare)
    Set myForm.grdDataGridA.DataSource = oRs("ChildCMD1").UnderlyingValue
    Set myForm.grdDataGridB.DataSource = oRs("ChildCMD2").UnderlyingValue
End Sub
 
'Tabellen schließen
Public Sub CloseCon()
    'Aufräumen
    If oRs.State = adStateOpen Then
        oRs.Close
        Set oRs = Nothing
    End If
    If oCon.State = adStateOpen Then
        oCon.Close
        Set oCon = Nothing
    End If
End Sub
Achtung: SHAPE funktioniert nicht mit jeder Datenbank !

Gruß,
Michael

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. (Brian W. Kernighan)

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Unterformular a`la Access1.241kps12.10.06 09:10
Re: Unterformular a`la Access958srcdbgr12.10.06 11:37

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel