Tabellenstruktur in Datenbank

  • VB.NET

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

    Tabellenstruktur in Datenbank

    Hallo,

    vorab möchte ich dazu sagen das ich mit SQL-Server-Express2005 arbeite für Datenbanktabellen so jetzt meine Frage:

    Ich habe derzeitig Warengruppen Untergruppen und Artikel-Tabellen mit folgender Struktur: Ein DB-Profi wird jetzt warscheinlich die Hände über den Kopf zusammenschlagen, Sorry.

    - Warengruppe
    - Artikel in Warengruppe
    -- Untergruppe01
    -- Artikel in Untergruppe01
    --- Untergruppe02
    --- Artikel in Untergruppe02
    .
    .
    .
    ---------- Untergruppe20
    ---------- Artikel in Untergruppe20

    ich denke das versteht sich von allein.
    Problem ich habe insgesamt 41 Tabellen um zu realisieren das ich Untergruppen in Warengruppen erstellen kann bzw von der obersten bis zur untersten Ebene Artikel zufügen kann.
    Über ein Datagridview und ein paar cellclickereignisse lässt sich das ganze sogar sehr gut realisieren. Seltsam aber es geht nur ist der Verwaltungsaufwand zu hoch bzw. bricht auch irgendwann meine WinFormOberfläche von den Vielen Datagrids und Tables zusammen.

    Ich möchte weiterhin Warengruppen Untergruppen und Artikel für jede Gruppe über ein Datagridview meiner Datenbanktabellen zuführen ich weiss jedoch das es sicherlich mit wesentlich weniger Tabellen möglich ist, und ich wäre euch extrem dankbar mir eine Idee zu bieten wie ich die Tabellen definieren muss und wie die Beziehung auszusehen hat.

    Vielen Vielen Dank
    Warum schreibst du nicht in deinem alten Thema weiter? -> TreeView mit Datenbankanbindung
    Warum schreibst du nicht alle Untergruppen und Warengruppen in einer einzigen Tabelle wie in dem anderen Thread vorgeschlagen??
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Sorry, hab ich nicht aufgepasst.

    Weil ich es irgendwie nicht verstehe. Du gehst davon aus das bereits Untergruppen und Warengruppen während der Entwicklung der Datenbank entstehen aber theoretisch existieren nur leere Tabellen die dann über ein Form mit einem Datagridview gefüllt werden. Das ist mein Problem ich komm irgendwie nicht drauf wie man mit einer Tabelle später Warengruppen Untergruppen und Artikel selektieren bzw editieren kann.

    nochmals Entschuldigung wegens dem Thread.
    Sicher ist die Tabelle am Anfang leer. Aber was hindert dich daran, während der Laufzeit neue Datensätze einzufügen? Wenn kein Knoten im Treeview angeklickt wurde, kannst du einfach eine Warengruppe ohne Vorgänger anlegen, wenn eine WG oder UG angeklickt wurde, erstellst du eine Gruppe die als Vorgänger die ausgewählte Gruppe hat usw. Dazu musst du bei jedem Knoten die ID aus der Datenbank hinterlegen (Key bzw Name-Eigenschaft) damit du die Knoten auch eindeutig zuordnen kannst. Auf diese Weise hast du nur EINE Tabelle und kannst unendlich Untergruppen anlegen.
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Agent“ ()

    Quellcode

    1. Imports System.Data.SqlClient
    2. Public Class Form2
    3. Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    4. Dim connstr As String
    5. connstr = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\EC24_2007_Database.mdf;Integrated Security=True;User Instance=True"
    6. Dim conn As New SqlConnection(connstr)
    7. Dim cmd As New SqlCommand("SELECT * FROM WG", conn)
    8. conn.Open()
    9. Dim dr As SqlDataReader = cmd.ExecuteReader
    10. While dr.Read
    11. Dim tn As TreeNode = New TreeNode
    12. tn.Text = dr("WG").ToString
    13. tn.Name = dr("ID").ToString
    14. TreeView1.Nodes.Add(tn)
    15. End While
    16. dr.Close()
    17. conn.Close()
    18. End Sub
    19. End Class


    Ich habe eine Tabelle angelegt mit ID Warengruppe und Vorgänger zusätzlich eine Beziehung die von ID auf Vorgänger geht. Beim Start werden nun alle Warengruppen ausgelesen sollte das Programm hier nicht die Obergruppen nur öffnen?
    Du musst dir ein rekursive (sich selbst aufrufende) Funktion schreiben:

    Pseudocode:
    ladeGruppen("NULL")

    prozedur ladeGruppen(vorgänger as string)
    ..."select * from WG where vorgänger=" & vorgänger
    mit schleife alle einträge durchlaufen
    füge untergruppe in treeview ein
    ladeGruppen(aktuelleGruppe) 'Untergruppen!!!
    schleifenende
    prozedurende
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau