Zum Inhalt springen

Access Tabelle nach VB6 exportieren


Empfohlene Beiträge

Geschrieben

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!

Geschrieben

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? ;)

Geschrieben
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

Geschrieben

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

Geschrieben

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:

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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 ;)

Geschrieben
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.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...