[Access-DB] mehrspaltige Einträge

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Andreas Five.

    [Access-DB] mehrspaltige Einträge

    Meine DB beeinhaltet folgende Tabellen:

    - Studienrichtung (NameStudienrichtung[Text], ID-Studienrichtung[AutoNumber]
    - Klassen (Klassenname[Text], ID-Studienrichtung[Text], ID-Klasse[AutoNumber]
    ...weitere glaube nicht zwingend erwähnenswerte...

    In die Tabelle „Studienrichtung“, kann ich den Eintrag in die Spalte „NameStudienrichtung“ ohne Problem mit dem folgenden Code eintragen. Die „ID-Studienrichtung“ ist vom Datentyp her eine „AutoNumber“ , diese wird ohne Probleme generiert.


    VB.NET-Quellcode

    1. Function SpeichereNeueStudienrichtung(ByVal NeueStudienrichtung As String) As Object Dim
    2. NeuerDatensatz As DataRow = ds.Tables("Studienrichtung").NewRow
    3. NeuerDatensatz("NameStudienrichtung") = NeueStudienrichtung
    4. ds.Tables("Studienrichtung").Rows.Add(NeueStudienrichtung)
    5. Dim cb As New OleDb.OleDbCommandBuilder(DatenAdapterStudienrichtung)
    6. DatenAdapterStudienrichtung.UpdateCommand = cb.GetUpdateCommand()
    7. DatenAdapterStudienrichtung.Update(ds, "Studienrichtung")
    8. Return 0 End Function



    Beim Füllen der Tabelle "Klasse" sollte nun ein neuer "Klassenname" sowie die dazugehörende "Studienrichtung" eingetragen werden. Die "ID-Klasse" wird mir wahrscheindlich keine Sorgen bereiten.
    Die beiden Werte erhalte ich in der Funktion ohne Probleme, ersichtlich in der erscheinenden MsgBox.
    Doch ist dies mit dem folgenden Code nicht möglich, es erscheint dauernd die Fehlermeldung "Syntaxfehler in der INSERT INTO-Anweisung".


    VB.NET-Quellcode

    1. Function SpeichereNeueKlasse(ByVal NeueKlasse As String, ByVal ZugehörigeStudienrichtung As String) As Object
    2. Dim NeuerDatensatz As DataRow = ds.Tables("Klassen").NewRow
    3. NeuerDatensatz("Klassenname") = NeueKlasse
    4. MsgBox(NeueKlasse & ZugehörigeStudienrichtung)
    5. ds.Tables("Klassen").Rows.Add(NeueKlasse)
    6. Dim cb As New OleDb.OleDbCommandBuilder(DatenAdapterKlassen)
    7. DatenAdapterKlassen.UpdateCommand = cb.GetUpdateCommand()
    8. DatenAdapterKlassen.Update(ds, "Klassen")
    9. Return 0



    (die beiden "ID-Studienrichtung" sind eigentlich durch eine 1:n Relation miteinander verbunden, wobei die ID aus der Tabelle "Studienrichtung" den Primär-Schlüssel trägt. Selbst wenn die Relation gelöscht wurde, entsteht das selbe Problem.)

    So, ich kann zwar erkennen, das im zweiten Code (Function SpeichereNeueKlasse) die zweite Variable, "ID-Studienrichtung, nicht verwendet wurde. Wie müsste diese eingebunden werden? Ich hab schon so einiges versucht, doch leider erfolgslos...


    Die beiden Funktion befinden sich beide in der Klasse "Datenzugriff". Folgender Code ist Global gültig:


    VB.NET-Quellcode

    1. Public Class Datenzugriff
    2. Dim Datenbankverbindung As New OleDb.OleDbConnection(System.Configuration.ConfigurationManager.ConnectionStrings.Item(1).ToString)
    3. Dim DatenAdapterStudienrichtung As New OleDb.OleDbDataAdapter("select * from Studienrichtung", Datenbankverbindung.ConnectionString)
    4. Dim DatenAdapterKlassen As New OleDb.OleDbDataAdapter("select * from Klassen", Datenbankverbindung.ConnectionString)
    5. Dim ds As New DataSet("KlassenDS")
    6. Dim studTable As DataTable = ds.Tables.Add("Klassen")

    ...

    End Sub

    Bin euch dankbar für eure Hilfe!, Pascali




    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Pascali“ ()