Bei einer Acces-Datenbank mehrere TABELLEN verwalten

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von CrazyFruit.

    Bei einer Acces-Datenbank mehrere TABELLEN verwalten

    Guten Abend

    Schon seit langem suche ich nach einer Lösung für mein Problem, doch in diesem tollen Forum fand ich leider auch nicht was
    mein Problem betrifft :| Zu meinem Problem:

    Zurzeit programmiere ich an einem Wörter-Vokabeltrainer. Ich habe nun eine Acces-Datenbank erstellt und kann auch mit meinem Programm in diese Datenbank Tabellen anlegen. Der Sinn der Tabellen -> Einzelne Lektionen aufzurufen.
    Das Abfragen funktioniert super, aber nur bei einer Tabelle bei der ich die Verbindung eingerichtet habe :( Wie kann ich nun in eine ANDERE Tabelle Wörter eintragen und verwalten? Macht das überhaupt Sinn?

    Es wäre sehr nett wenn ihr mir helfen könntet :thumbsup:

    CrazyFruit
    hi griasdi!

    hab ich das richtig verstanden, dass du nicht in andere Tabellen schreiben kannst, sondern nur in eine einzige Tabelle?

    Also bei mir läuft das so, dass ich einfach die Connection zu meiner AccessDB aufmache, und dann mit stinknormalen SQL-Queries arbeite.. Und bei denen kannst ja auch deine Tabellennamen angeben. Schon probiert?

    Kann auch sein dass ich dich grad vollkommen falsch verstanden hab.. Is ja noch mitten in der Nacht :D

    greez
    vanGoo

    CrazyFruit schrieb:

    Macht das überhaupt Sinn?

    Mein Gedankenlesegerät ist zwar gerade in Urlaub, aber ich vermute: NEIN

    Jedenfalls macht es KEINEN Sinn, verschiedene "Lektionen" in unterschiedlichen Tabellen zu speichern. Stattdessen verwendet man EINE mit entsprechenden Indizes zum auswerten. Bsp.

    UID, Wort, Loesung, Lektion, Sprache

    Über Lektion und Sprache kann jetzt selektiert werden.

    vanGoo schrieb:

    hi griasdi!

    hab ich das richtig verstanden, dass du nicht in andere Tabellen schreiben kannst, sondern nur in eine einzige Tabelle?

    Also bei mir läuft das so, dass ich einfach die Connection zu meiner AccessDB aufmache, und dann mit stinknormalen SQL-Queries arbeite.. Und bei denen kannst ja auch deine Tabellennamen angeben. Schon probiert?

    Kann auch sein dass ich dich grad vollkommen falsch verstanden hab.. Is ja noch mitten in der Nacht :D

    greez
    vanGoo
    Hi vanGoo!

    Danke für die rasche Antwort :thumbup: Also ich arbeite auch mit SQL-Queries. Nur das Problem ist (vermute ich) dass ich dann wie eine neue Connection dafür eröffnen muss :huh:

    VB.NET-Quellcode

    1. Me.VokabelTableAdapter.Fill(Me.LernenDataSet.vokabel)

    Die Verbindung spricht die Tabelle vokabel an aber ich will dort auch mit anderen Tabellen eine Verbindung herstellen. Ich weiss auch nicht wo das Problem besteht... :S
    Hm.. also ich arbeite grad an nem etwas größerem softwareverteilungstool bei dem ich neben MySQL und SQL auch ne AccessDB als Quelle-Option anbiete. Damit ich die Queries von SQL übernehmen kann hab ich das so gelöst:

    VB.NET-Quellcode

    1. Dim DBConn As New System.Data.OleDb.OleDbConnection
    2. Dim DBSelectStr, ConnectionStr as String
    3. Dim DBTable As New DataTable
    4. ConnectionStr = "" 'Hier der Pfad zu deiner AccessDB
    5. DBConn.ConnectionString = ConnectionStr
    6. DBSelect = "SELECT * FROM MeineTabelle"
    7. Dim DBCommand As New System.Data.OleDb.OleDbCommad(DBSelectStr, DBConn)
    8. Dim DBAdapter As New System.Data.OleDb.OleDbDataAdapter(DBCommand)
    9. Try
    10. DBConn.Open()
    11. DBDataSet.Clear()
    12. DBAdapter.Fill(DBDataSet, "MeineTabelle")
    13. DBConn.Close()
    14. Catch ex As Exception
    15. MsgBox("Fehler: " & ex.ToString)
    16. End Try


    Wenn du das Ganze noch als Funktion machst und das DataSet zurückgibst, dann kannst das Ganze weiterverwenden wie du willst.

    Hoffe ich hab dir nen bissl helfen können, auch wenn picoflop recht hat. Mach kein "Jede-Lektion-eine-Tabelle"-Design. Da schwillt deine DB ganz schnell an.

    greez.

    picoflop schrieb:

    CrazyFruit schrieb:

    Macht das überhaupt Sinn?

    Mein Gedankenlesegerät ist zwar gerade in Urlaub, aber ich vermute: NEIN

    Jedenfalls macht es KEINEN Sinn, verschiedene "Lektionen" in unterschiedlichen Tabellen zu speichern. Stattdessen verwendet man EINE mit entsprechenden Indizes zum auswerten. Bsp.

    UID, Wort, Loesung, Lektion, Sprache

    Über Lektion und Sprache kann jetzt selektiert werden.

    picoflop schrieb:

    CrazyFruit schrieb:

    Macht das überhaupt Sinn?

    Mein Gedankenlesegerät ist zwar gerade in Urlaub, aber ich vermute: NEIN

    Jedenfalls macht es KEINEN Sinn, verschiedene "Lektionen" in unterschiedlichen Tabellen zu speichern. Stattdessen verwendet man EINE mit entsprechenden Indizes zum auswerten. Bsp.

    UID, Wort, Loesung, Lektion, Sprache

    Über Lektion und Sprache kann jetzt selektiert werden.

    vanGoo schrieb:

    Hm.. also ich arbeite grad an nem etwas größerem softwareverteilungstool bei dem ich neben MySQL und SQL auch ne AccessDB als Quelle-Option anbiete. Damit ich die Queries von SQL übernehmen kann hab ich das so gelöst:

    VB.NET-Quellcode

    1. Dim DBConn As New System.Data.OleDb.OleDbConnection
    2. Dim DBSelectStr, ConnectionStr as String
    3. Dim DBTable As New DataTable
    4. ConnectionStr = "" 'Hier der Pfad zu deiner AccessDB
    5. DBConn.ConnectionString = ConnectionStr
    6. DBSelect = "SELECT * FROM MeineTabelle"
    7. Dim DBCommand As New System.Data.OleDb.OleDbCommad(DBSelectStr, DBConn)
    8. Dim DBAdapter As New System.Data.OleDb.OleDbDataAdapter(DBCommand)
    9. Try
    10. DBConn.Open()
    11. DBDataSet.Clear()
    12. DBAdapter.Fill(DBDataSet, "MeineTabelle")
    13. DBConn.Close()
    14. Catch ex As Exception
    15. MsgBox("Fehler: " & ex.ToString)
    16. End Try


    Wenn du das Ganze noch als Funktion machst und das DataSet zurückgibst, dann kannst das Ganze weiterverwenden wie du willst.

    Hoffe ich hab dir nen bissl helfen können, auch wenn picoflop recht hat. Mach kein "Jede-Lektion-eine-Tabelle"-Design. Da schwillt deine DB ganz schnell an.

    greez.

    vanGoo schrieb:

    Hm.. also ich arbeite grad an nem etwas größerem softwareverteilungstool bei dem ich neben MySQL und SQL auch ne AccessDB als Quelle-Option anbiete. Damit ich die Queries von SQL übernehmen kann hab ich das so gelöst:

    VB.NET-Quellcode

    1. Dim DBConn As New System.Data.OleDb.OleDbConnection
    2. Dim DBSelectStr, ConnectionStr as String
    3. Dim DBTable As New DataTable
    4. ConnectionStr = "" 'Hier der Pfad zu deiner AccessDB
    5. DBConn.ConnectionString = ConnectionStr
    6. DBSelect = "SELECT * FROM MeineTabelle"
    7. Dim DBCommand As New System.Data.OleDb.OleDbCommad(DBSelectStr, DBConn)
    8. Dim DBAdapter As New System.Data.OleDb.OleDbDataAdapter(DBCommand)
    9. Try
    10. DBConn.Open()
    11. DBDataSet.Clear()
    12. DBAdapter.Fill(DBDataSet, "MeineTabelle")
    13. DBConn.Close()
    14. Catch ex As Exception
    15. MsgBox("Fehler: " & ex.ToString)
    16. End Try


    Wenn du das Ganze noch als Funktion machst und das DataSet zurückgibst, dann kannst das Ganze weiterverwenden wie du willst.

    Hoffe ich hab dir nen bissl helfen können, auch wenn picoflop recht hat. Mach kein "Jede-Lektion-eine-Tabelle"-Design. Da schwillt deine DB ganz schnell an.

    greez.

    vanGoo schrieb:

    Hoffe ich hab dir nen bissl helfen können, auch wenn picoflop recht hat. Mach kein "Jede-Lektion-eine-Tabelle"-Design. Da schwillt deine DB ganz schnell an.

    Ja ich denke jetzt auch dass dies besser sein wird :rolleyes: Ich danke dir vielmals für deine Bemühung! Du hast mir sehr weitergeholfen :thumbsup: