Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Access Tabelle nach VB6 exportieren

Empfohlene Antworten

Veröffentlicht

Hallo zusammen,

bin dabei ein "Wer wird Millionär" Spiel zu programmieren in VB6. Die Fragen liegen in einer Access Datenbank. Wie kann ich beides miteinander verknüpfen um von meiner VB6 Anwendung auf die Fragen in der Tabelle zugreifen zu können?

Danke schonmal!

wahlweise mit ADO/DAO/ODBC oder deiner bevorzugten zugriffsmethode.

ansonsten bitte mehr informationen. willst du die daten nur darstellen oder auch bearbeiten können?

ansonsten, zum einlesen: VB-Tec / Daten / Datenbank - Datenbank. findet sich übrigens über google ;)

s'Amstel

Mit ADO oder DAO oder so hab ich noch nie was gemacht. Was ist das genau?

Die Daten sollen in meinem VB6 Formular nur dargestellt werden. Wird ja ein Wer wird Millionär Spiel und dafür muss ich die Fragen aus der Access Datenbank Tabelle wo sie drin stehen auslesen können!

Brauchst du noch weitere Informationen? ;)

Mit ADO oder DAO oder so hab ich noch nie was gemacht. Was ist das genau?

grob gesagt, sind ADO und DAO zwei modelle, wie man auf (relationale) daten sowie metadaten (tabellen, spalten, felder, ...) zugreifen kann. eine kurze recherche dazu wird dir genaue informationen liefern, wie die beiden modelle arbeiten.

realisiert wird das in VB/VBA so, dass du die entsprechenden DLLs/OCXes bei den verweisen/projekteigenschaften einbindest und dort dann arbeitest. für dich als programmierer stehen dann objekte wie Recordset, Connection, Command, usw. zur verfügung.

wenn du mit ADO arbeiten willst, fang da an:

ActiveVB - Der große ADO-Kurs - Seite 1

Brauchst du noch weitere Informationen? ;)

nö, belassen wirs mal dabei :floet:

s'Amstel

Irgendwie blick ich da nicht durch und funktionieren tuts bei mir auch nicht :(

die aussage "funktionieren tuts nicht" ist halt leider dann doch etwas zu magere information - was funktioniert nicht? was hast du denn schon, sprich: was ist deine (derzeitige) ausgangslage? hast du dir die beiden links angesehen und versucht zu verstehen?

s'Amstel

Ja die Links hab ich angeschaut! Der erste Link geht doch um SQL oder? Hab ja ne Access Datenbank.

Bei dem zweiten blick ich das nicht so ganz!

Momentan hab ich nur folgendes (sehr mager, ich weis, aber ich blick absolut nicht durch):


Option Explicit


Dim con As New ADODB.Connection

Dim rst As New ADODB.Recordset

Dim com As New ADODB.Command


Private Sub Form_Load()


con.Provider = "Microsoft.Jet.OLEDB.4.0"

con.Properties("Data Source") = "C:\Dokumente und Einstellungen\ljunginger\Desktop\WWM\FrageDB.mdb"


End Sub

Ich hab so n Adodc Object von VB6 im Formular eingebunden. Hab wo anders gelesen das man es auch damit machen kann... :confused:

du bist schon auf dem richtigen weg. basierend auf der Connection kannst du ja jetzt ein Recordset verwenden, um mit den daten umzugehen, oder ein Command, um eben einen SQL-befehl direkt in die datenbank zu "schiessen", wobei die ergebnisse des letzteren nicht in DS-form verarbeitbar sind.

s'Amstel

OK ich werds mal versuchen.

Kann ich das Recordset genauso aufbauen/schreiben wie wenn es intern in Access wäre? (Habe in Access schon Recordsets verwendet um etwas aus einer tabelle zu holen, war aber alles in access, nicht so wie jetzt mit VB).

Bin grad so am ausprobieren (hab das im Internet entdeckt).

Bekomme aber den Fehler "Das Microsoft Jet Datenbank Modul findet die Eingangstabelle "tblFragen" nicht. Stellen Sie sicher das sie existiert und der Name richtig eingegeben wurde!" ... :confused:

Wenn ich dann auf Debuggen klick, wird das .Open beim Recordset markiert.

Dim Cnn As ADODB.Connection

Dim RS As ADODB.Recordset

Dim strFileName As String

Dim strDBPassword As String

Dim strSQL As String

Dim CursorLocation As CursorLocationEnum

Dim CursorType As CursorTypeEnum

Dim LockType As LockTypeEnum

Dim CommandTimeOut As Long



Private Sub Form_Load()


' \\\ Öffnen der Connection (Datenbank öffnen)

strFileName = "C:\Dokumente und Einstellungen\ljunginger\Desktop\WWM\FrageDB.mdb"


CursorLocation = adUseClient


    Set Cnn = New ADODB.Connection

    With Cnn

        .Provider = "Microsoft.Jet.OLEDB.4.0"

        .Properties("Data Source") = strFileName

        If CommandTimeOut > 0 Then

            .CommandTimeOut = CommandTimeOut

        End If

        If Len(strDBPassword) Then

            .Properties("Jet OLEDB:Database Password") = strDBPassword

        End If

        If CursorLocation <> 0 Then

            .CursorLocation = CursorLocation

        End If

        .Properties("Persist Security Info") = False

        .Open

    End With


    If (Cnn.State And adStateOpen) = adStateOpen Then


        ' \\\ Öffnen des Recordsets

        strSQL = "Select * From tblFragen"

        CursorType = adOpenStatic

        LockType = adLockOptimistic


        Set RS = New ADODB.Recordset

        With RS

            Set .ActiveConnection = Cnn

            .Source = strSQL

            .CursorType = CursorType

            .CursorLocation = CursorLocation

            .LockType = LockType

            .Properties("IRowsetIdentity") = True

            .Open

        End With



        If (RS.State And adStateOpen) = adStateOpen Then



            ' *******************************************

            ' hier erhält Dein DataControl nun _

             einen Verweis auf das Recordset



            Set Adodc.Recordset = RS



            ' *******************************************

            ' *******************************************

            ' Du kannst Deine Controls aber genausogut _

              gleich direkt an das Recordset binden, ohne _

              überhaupt ein DataControl zu verwenden.

            ' *******************************************



            ' \\\ Recordset z.B. an ein DataGrid binden

            Set DataGrid.DataSource = RS



            ' \\\ Recordset z.B. an  Textboxen binden

''            txtX(0).DataField = RS.Fields(0).Name

''            txtX(1).DataField = RS.Fields(1).Name

''

''

''            Set txtX(0).DataSource = RS

''            Set txtX(1).DataSource = RS

        End If

    End If

End Sub

Hi,

ersteinmal schmeiß das ADODC wieder raus, denn gebundene Steuerelemente bringen nur Ärger und Du lernst dabei nix!

Zudem hast Du ja schon den richtigen Anfang mit ADODB.Recordst und Connection gemacht, brauchst also das ADODC nicht mehr.

Zur Fehlermeldung:

Die sagt klar und deutlich aus, was falsch ist, nämlich der Tabellenname, sprich die Tabelle heißt anders oder ist gar nicht vorhanden.


Private Sub Form_Load()


' \\\ Öffnen der Connection (Datenbank öffnen)

strFileName = "C:\Dokumente und Einstellungen\ljunginger\Desktop\WWM\FrageDB.mdb"


CursorLocation = adUseClient


    Set Cnn = New ADODB.Connection

    With Cnn

        .Provider = "Microsoft.Jet.OLEDB.4.0"

        .Properties("Data Source") = strFileName

        If CommandTimeOut > 0 Then

            .CommandTimeOut = CommandTimeOut

        End If

        If Len(strDBPassword) Then

            .Properties("Jet OLEDB:Database Password") = strDBPassword

        End If

        If CursorLocation <> 0 Then

            .CursorLocation = CursorLocation

        End If

        .Properties("Persist Security Info") = False

        .Open

    End With

 'unnötig:

    If (Cnn.State And adStateOpen) = adStateOpen Then

   ' funktioniert auch so:

    If Cnn.State = adStateOpen Then

        ' \\\ Öffnen des Recordsets

        strSQL = "Select * From tblFragen"

        CursorType = adOpenDynamic

        LockType = adLockOptimistic


        Set RS = New ADODB.Recordset

        With RS

            Set .ActiveConnection = Cnn

            .Source = strSQL

            .CursorType = CursorType

            .CursorLocation = CursorLocation

            .LockType = LockType

            .Properties("IRowsetIdentity") = True

            .Open

        End With



        'unnötig:

        'If (RS.State And adStateOpen) = adStateOpen Then

        ' funktioniert auch so:

        If RS.State = adStateOpen Then


            ' *******************************************

            ' hier erhält Dein DataControl nun _

             einen Verweis auf das Recordset

            ' brauchst du nicht mehr

           ' Set Adodc.Recordset = RS

            ' *******************************************

            ' *******************************************

            ' Du kannst Deine Controls aber genausogut _

              gleich direkt an das Recordset binden, ohne _

              überhaupt ein DataControl zu verwenden.

            ' *******************************************

            ' \\\ Recordset z.B. an ein DataGrid binden

            Set DataGrid.DataSource = RS



            ' \\\ Recordset z.B. an  Textboxen binden

''            txtX(0).DataField = RS.Fields(0).Name

''            txtX(1).DataField = RS.Fields(1).Name

''

''

''            Set txtX(0).DataSource = RS

''            Set txtX(1).DataSource = RS

        End If

    End If

End Sub

Ich würde zudem, zumindest unter VB 6, wie gesagt keine gebundenen Controls verwenden.

Schreib Dir eine Methode, die Dein Recordset durchläuft und die Daten über

"Rs.Fields("FeldName").Value" in die entspr. Steuerelemente setzt.

Schau Dir dies Beispiel mal an:

http://www.activevb.de/cgi-bin/upload/download.pl?id=2444

OK hab das ADODC Object wieder vom Formular gelöscht.

Aber die Tabelle gibt es definitiv und die heißt auch so! Das ist ja das komische... :confused:

Edit: Die Tabelle hieß nur "Fragen". Hab sie jetz mal umgeändert, mal gucken obs geht! Bin es gewohnt das man bei uns Tabellennamen mit "tbl" beginnt, von daher hab ich angenommen das es da auch so ist ;)

OK hab das ADODC Object wieder vom Formular gelöscht.

Sehr gut ;)

Edit: Die Tabelle hieß nur "Fragen". Hab sie jetz mal umgeändert, mal gucken obs geht! Bin es gewohnt das man bei uns Tabellennamen mit "tbl" beginnt, von daher hab ich angenommen das es da auch so ist ;)

Finde ich auch richtig.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.