Erklärung DataTable, DataSet mit zwei Datenbanktabellen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von lris08.

    Erklärung DataTable, DataSet mit zwei Datenbanktabellen

    Hallo,

    ich bitte euch mal um Hilfe, weil ich da was nicht verstehe... und alles lesen hilft mir grad nicht weiter...

    Als Beispiel:
    Habe zwei Datenbanktabellen: Positionen und Rabatte

    Nun möchte ich bei Tabellen füllen, habe also zwei Dataset's und DataTable's.
    Wie schaffe ich es nun, den Inhalten von Rabatte zu sagen, dass sie zu Position X gehören, wo doch im Vorfeld in der Datenbanktabelle Positoinen noch gar keine ID vergeben ist, die ich als Referenz bei den Rabatten hinterlegen kann...

    Vielleicht könnt Ihr mir das erklären... verstehs sonst einfach nicht...

    Unterm Strich müssten beide Tabellen von einander abhöngig gemacht werdne und auch so gespeichert werden...


    Lg lris
    Die gehören in ein Dataset, und man muß eine DataRelation einrichten, bzw. generieren lassen.

    inne SampleSolution von "Datenbank in 10 Minuten" auf Movie-Tuts kannste sone DataRelation angugge, unds Tut zeigt auch haarklein, man dran rumfummeln kann.
    Oder in meim neuesten Werk: [VB 2008] DBExtensions
    Hallo ErfinderDesRades...

    Habe mich heute mal noch intensiev mir dem ganzen Thema gefasst. Ich werde mich jetzt dann an einem Test waagen ;)

    Habe aber noch eine Frage dazu...

    Wenn ich DGV1 und DGV2 erfolgreich verbunden habe... möchte ich einen Artikel hinzufügen, möchte ich dies aber nicht über die direkte Eingabe in dem DGV machen sondern über eine Form mit Textboxen etc. - siehe Bild


    Kurze Erklärung...

    - wähle den Artikel im TreeView (links) aus
    - Artikel wird in die Textboxen übernommen, gleichzeitig wird aus den Artikelstammdaten ein Std.-Rabatt übergeben, der gleich in das DGV (grün umrandet) eingefügt werden soll. Der Berarbeiter hat aber weiterhin noch die möglichkeit weitere Rabatte oder Nachlässe in Form von Euros einzugeben Ich gehe mal davon aus, dass der Artikel bereits in DGV1 (großes DGV) eingefügt werden soll, weil doch noch keine Verbindung zwschen dem großen und kleinen DGV besteht, oder???
    - Wenn Button übernehmen gedrückt wird, soll der ARtikel endgültig übernommen werden.

    Dementsprechend soll auf eine Bearbeitung des Artikel und das löschen möglich sein.

    So... :) und nun wirst du sagen, dass dies nur mit einem mega Aufwand und extremes Wissen möglich ist-stimmts ?

    Hoffe nur das dies überhautp umsetzbar ist und dass ich das irgendwie schaffen kann...
    Sonst bleibt mir nur ein beschissener Umweg... den ich mir überlegen muss...


    Danke für deine Mühe...

    Lg lris
    Bilder
    • pos.jpg

      145,89 kB, 1.012×714, 192 mal angesehen

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

    lris08 schrieb:

    sondern über eine Form mit Textboxen etc.

    Das ist ebenfalls ein Standard-View, gugge das Tutorial EinzelblattView.

    Über das mit dem Canceln mussichnachdenken - eiglich müsstedas per BindingSource.CancelEdit() gehen.

    nee. Damit cancelt man die Eingabe von Änderungen, ein Adden kannman nicht canceln.
    Also ist BindingSource.RemoveCurrent() durchzuführen.

    Das mit deine vielen Rabatte habichnich geschnallt, und auf dem Bild erkenn ich auch nix davon. Aber eins nachm anneren.

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

    :)

    Im Artikelstamm ist bereits ein Std.-Rabatt hinterlegt. Rufe ich den Artikel im TreeView auf, wird übernommen in die Textboxen und soll ebenso gleich einen Eintrag in DGV2 (kleines) machen, also den ersten Rabatt anlegen. Das Problem dabei was ich sehe, DGV2 ist ja dan an DGV1 (großes) angebunden, aber wenn da noch kein Eintrag vorhanden ist, wird der erste angelegte Rabatt keine Zuordnung haben.

    So meinte ich das...

    Klar wenn der User nen 2 o. 3. Rabatt anlegt, passiert eigentlich das gleiche - weil ja in DGV1 noch keine Position vorhanden ist... steht ja noch alles in den Textboxen - da noch nicht übernehmen grückt wurde.

    Wie würdets du den vorgehen ? Würdest du einen anderen weg gehen als die DGV mit Relation zu verbinden ????



    Ich schaue mir gerade ganz intensiv dein Demo an, M_N_Relatoin und versuche die Schritte nachzuvollziehen...

    lris08 schrieb:

    Wie würdets du den vorgehen ? Würdest du einen anderen weg gehen als die DGV mit Relation zu verbinden ????

    Erstmal weg von DGV und Controls überhaupt dran zu denken!

    du musst ein stimmiges Datenmodell erstellen - erst danach kannst du dir Gedanken über die Anzeige machen.

    Was ist ein Artikelstamm?
    Artikelstamm... ? Wie meinst du das ?

    Der Artikelstamm ist ebenfalls eine Datenbanktabelle...

    Wird derzeit so eingelesen:

    VB.NET-Quellcode

    1. ' Artikelstamm
    2. Private dt_Artikel As New DataTable
    3. Private da_Artikel As OleDbDataAdapter
    4. Private ds_Artikel As New DataSet
    5. Private bs_Artikel As New BindingSource
    6. Private Sub Laden__Warengruppen_U_Artikel()
    7. Dim ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & Archiv & "; Jet OLEDB:database Password=" & DBPass & ";"
    8. Dim Con As New OleDbConnection(ConStr)
    9. da_WarGru = New OleDbDataAdapter("SELECT PrA_Warengruppe FROM Provisionsartikel GROUP BY PrA_Warengruppe;", Con)
    10. ds_WarGru.Tables.Add(dt_WarGru)
    11. da_WarGru.Fill(dt_WarGru)
    12. da_Artikel = New OleDbDataAdapter("SELECT * FROM Provisionsartikel ORDER BY PrA_Warengruppe", Con)
    13. ds_Artikel.Tables.Add(dt_Artikel)
    14. da_Artikel.Fill(dt_Artikel)
    15. tv_Artikel.Nodes.Clear()
    16. Me.fuellen__tv_Artikel_Hauptnode()
    17. Me.tv_Artikel.Sort()
    18. Me.tv_Artikel.CollapseAll()
    19. End Sub
    entschuldige bitte...

    Also der Artikelstamm ist die Datenbanktabelle Provisionsartikel. Das stammt aus der Vergangenheit. In dieser Tabelle sind alle Artikel enthalten.
    Das Programm soll ja auch keine Auftragsverwaltung sein, sondern ein Kontrollorgan. Rechnungen kommen zu den Aussdendienstmitarbeiter(Handelsvertreter) die geben den Kunden in einer vorhergehenden Form an + paar andere Angaben, dann gehts weiter zu dem o. g. Form mit den DGV etc.
    Da geben die dann den Artikel an und berechnen so dan Ihre Provision und kontrollieren da dan auch gleich die Rechnung mit.
    Ebenso besteht die möglichkeit einen Auftrag im Vorfeld zu erfassen z.B. zu bestimmten Konditionen etc. der dan an anderer Stelle ausgedruckt werden kann und der jeweiligen Firma/Sachbearbeiter gegeben werden kann - der dan in der Warenwirtschaft des eigentlichen Unternehmens nen Auftrag erfasst.
    Kommt die Rechnung aus den vorher erstellten "Auftrag", kann der Außendienst auf einen Blick ersehen, was richtig is und was nicht...

    Halte das ganze Thema für mega komplex... glaube ich werde da noch viel lernen müssen ggf. Bücher kaufen :) ... und Dir vielleicht mal meine Telefonnummer geben. Danke langsam, dass es Dir fast schon zu viel wird hier mit mir zu schreiben und gar mir dabei zu helfen meine Problem zu lösen 8|