ForeignKeyConstraint FK_

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 81 Antworten in diesem Thema. Der letzte Beitrag () ist von Amelie.

    @Maffi
    Ich muss deins mal mit meinem vergleichen.
    Habe das fast genauso aufgebaut aber wenn ich ein Datensatz speichere, wird NUR in der Tabelle Kunden etwas gespeichert aber nicht in der Hilfstabelle....

    --------------------------
    EDIT:
    Also ich habe es nun genauso nachgebaut und es funktioniert leider nicht. Es wird in der Tabelle Kunden gespeichert wenn ich einen neuen anlege aber nirgends woanders. Lege ich ein Angebot an wir dies in der Tabelle Angebote gespeichert aber auch nirgends anders...

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub speichern()
    3. Me.Validate()
    4. Me.KundeBindingSource.EndEdit()
    5. Me.TableAdapterManager.UpdateAll(Me.MiniEARdbDataSet)
    6. Me.AGKUTableAdapter.Fill(Me.MiniEARdbDataSet.AGKU)
    7. Me.KundeTableAdapter.Fill(Me.MiniEARdbDataSet.Kunde)
    8. End Sub
    9. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    10. Me.AngeboteTableAdapter.Fill(Me.MiniEARdbDataSet.Angebote)
    11. Me.AGKUTableAdapter.Fill(Me.MiniEARdbDataSet.AGKU)
    12. Me.KundeTableAdapter.Fill(Me.MiniEARdbDataSet.Kunde)
    13. End Sub
    14. Private Sub btn_save_Click(sender As Object, e As EventArgs) Handles btn_save.Click
    15. speichern()
    16. End Sub
    17. Private Sub KundeBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles KundeBindingNavigatorSaveItem.Click
    18. Me.Validate()
    19. Me.KundeBindingSource.EndEdit()
    20. Me.TableAdapterManager.UpdateAll(Me.MiniEARdbDataSet)
    21. End Sub
    22. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    23. Form2.ShowDialog() ' Form um mal schnell ein Angebot zu speichern
    24. End Sub
    25. End Class
    Bilder
    • nm.jpg

      116,75 kB, 504×500, 99 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

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

    Maffi schrieb:

    In der Zwischentabelle 'AngebotKunde' soll sich ja auch nichts ändern, wenn du einen Kunden oder ein Angebot erstellst.


    Das hat sich jetzt irgenwie überschnitten...
    Muss mal überlegen wie das aus dem Video nun zu coden ist.

    -----------------------------------------
    EDIT!!
    Tja das klappt nicht .... siehe Anhang

    ----------------------------------------
    EDIT 2
    Nach einmal einfügen hängt sich alles auf...
    Hab das Project mal angehangen.
    Bilder
    • Unbenannt-1.jpg

      162,01 kB, 981×532, 92 mal angesehen
    Dateien
    • Uebung.zip

      (429,55 kB, 116 mal heruntergeladen, zuletzt: )
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

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

    Was ich auf deinen Bild erkenne: Deine Textboxen sind gebunden und du erstellst einen neuen Datensatz mittels gelben Plus aus dem BindingNavigator und speicherst ihn danach mit dem Diskettensymbol ebenfalls aus dem BindingNavigator. Ist das korrekt?

    Aber an welche Bindingsources sind deine zwei Comboboxen gebunden? Denn die bleiben ja leer.
    Ich habe das auf die Form gezogen und dann etwas code zum speichern gemacht.
    Das seltsame ist, ich kann ein Datensatz speichern und dann hängt das ganze.
    ------------------------------------------------------------------
    EDIT:
    So habe alles von gestern nochmal umgebaut und mich mit dem INNER JOIN befasst.
    So befülle ich nun ein Datagridview ohne das ganze Bindingzeugs auf die Form zu ziehen.
    Jetzt kann ich die beiden Tabellen so umgestallten das, so hoffe ich keine Redundanzen etc vorkommen wie es jetzt noch ist.
    Doppelte KundenNR Doppelte AngebotNr ....

    Warum die andere Variant sich immer aufhängt weiß ich nicht, finde da keinen Grund.


    VB.NET-Quellcode

    1. Private Sub dataview()
    2. Try
    3. Dim reader As SqlDataReader
    4. Dim constring As String = ConfigurationManager.ConnectionStrings("dbcon").ConnectionString
    5. Using conn As New SqlConnection(constring)
    6. conn.Open()
    7. Dim newstring As String = "Select Kunden.KundenNr, Kundenname, Kundentel, Kundenemail, PLZ_Ort, Datum, Anschreiben, Angebote.AngebotNr from Kunden INNER JOIN Angebote ON Angebote.KundenNR = Kunden.KundenNr"
    8. Dim cmd As New SqlCommand(newstring, conn)
    9. reader = cmd.ExecuteReader()
    10. Dim datable As New DataTable
    11. datable.Load(reader)
    12. DGView1.DataSource = datable
    13. conn.Close()
    14. End Using
    15. Catch ex As Exception
    16. MessageBox.Show(ex.Message)
    17. End Try
    18. End Sub
    Bilder
    • tabellen.jpg

      127,3 kB, 866×390, 90 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Amelie“ () aus folgendem Grund: Andere Herangehensweise ( ÜBUNG !! )

    @Maffi
    at ALL

    Hallo
    Habe nun mein Übungsprojekt nochmals von neuem gestartet. Das alte hat nicht richtig funktioniert und plötzlich war die DB irgendwie kaputt, Fehler kein Zugriff möglich. hmm...

    Datenbank erstellt mit SQL-Server Compact 4.0 in VisualStudio 2012
    Dort die Tabellen erstellt und dann jeweils die Tabellen für die FK und PK. Das hat alles soweit geklappt.

    Wenn ich nun ein neues Projekt beginne, die DB und Datenquellen einbinde sind in der Ansicht die Beziehungen irgendwie weg.
    Kann das schlecht erklären, ( das mit der Casscade usw ) anbei die Screenshoots.

    Weist du warum das so ist und was gäbe es an dem Model zu verbessern? ;)

    Eine weitere Frage habe ich zu den Tabeladaptern ( Bild ) ich habe im Netzt nichts brauchbares gefunden. Es wird oft so kompliziert beschrieben... ;(
    Was muss ich da an Code schreiben etc.

    Hoffe du kannst mir helfen :)
    Danke

    ------------------------
    Das habe ich bisher gemacht.
    KundenNr automatisch erstellen usw..

    VB.NET-Quellcode

    1. Public Class frm_kundeneu
    2. Public zahl As Integer
    3. Public Random As New Random
    4. Public KdNr As String
    5. Public Sub getKdNr()
    6. zahl = Random.Next(10000, 99999)
    7. KdNr = "XY-" & zahl
    8. End Sub
    9. Public Sub cleartxts(frm As Form)
    10. Dim Ctrl As Control
    11. For Each Ctrl In frm.Controls
    12. Select Case TypeName(Ctrl)
    13. Case "TextBox"
    14. Ctrl.Text = ""
    15. End Select
    16. Next Ctrl
    17. End Sub
    18. Private Sub frm_kundeneu_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    19. Me.AddressTableAdapter.Fill(Me.DB_1ds.Address)
    20. Me.KundenTableAdapter.Fill(Me.DB_1ds.Kunden)
    21. End Sub
    22. Private Sub btn_save_Click(sender As Object, e As EventArgs) Handles btn_save.Click
    23. Me.Validate()
    24. Me.KundenBindingSource.EndEdit()
    25. Me.AddressBindingSource.EndEdit()
    26. Me.TableAdapterManager.UpdateAll(Me.DB_1ds)
    27. End Sub
    28. Private Sub btn_new_Click(sender As Object, e As EventArgs) Handles btn_new.Click
    29. cleartxts(Me)
    30. Me.AddressBindingSource.AddNew()
    31. Me.KundenBindingSource.AddNew()
    32. getKdNr()
    33. KdNrTextBox.Text = KdNr
    34. End Sub
    35. End Class



    Bilder
    • dbexplorer.jpg

      450,26 kB, 1.383×909, 87 mal angesehen
    • dbquellen.jpg

      514,44 kB, 1.443×912, 88 mal angesehen
    • alles.jpg

      486,27 kB, 932×959, 93 mal angesehen
    • tableadapter.jpg

      433,61 kB, 1.005×767, 101 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

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

    @Maffi

    Habe nun den ganzen Tag damit verbracht hier den Fehler zu finden...
    Ich weiß nicht weiter ;(
    Bilder
    • fehler1.jpg

      346,81 kB, 1.320×522, 94 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Ok.
    Du kannst deine Kunden und Adressen eingeben und speichern?

    An welchen Bindingsources hängen deine beiden Comboboxen? Ich bin mir sicher das du die falschen Bindingsources verwendest.

    Ich gehe davon aus, dass du die Comboboxen aus den Datenquellen, aus der Zwischentabelle (KUAD) auf die Form gezogen hast.
    Dadurch sind die natürlich leer und du siehst in den Comboboxen nichts.

    Du brauchst die Bindingsources aus Kunden und aus Adressen. (Die GLEICHEN und nicht die SELBEN - Achtung!!!)
    @Maffi

    Du brauchst die Bindingsources aus Kunden und aus Adressen. (Die GLEICHEN und nicht die SELBEN - Achtung!!!)


    Verstehe grade nur Bahnhof ;)
    Und das Datagrid da habe ich schon soviel unterschiedliches gelesen und nix davon hat mich weitergebracht.

    Ich bin nun soweit das in den Comboxen immer nur ein Wert angezeigt wird... (der letzte der gespeichert wurde.)
    Bilder
    • fehler2.jpg

      219,29 kB, 370×699, 94 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Amelie“ () aus folgendem Grund: bild

    Du könntest dein Dataset auch mal als Xml abspeichern.
    Wenn du es dann abgespeichert hast, kannst du es danach auch wieder aus der Xml-Datei laden.
    Anschliessend kannst du die DB erstmal wegschmeissen, mindestens solange, bis sich das mit den Relationen, BindingSources, Databindigs etc. geklärt hat.
    Zur Klärung kannste dein Projekt dann auch zippen - inklusive Dataset-Xml-Datei.
    Vielleicht findet sich jemand, der das bei sich zum Laufen bringt, und dir da deine Fehler sucht und ausbügelt.

    Diese Möglichkeit - "Portabilität" genannt - ist einer der Vorzüge von DatasetOnly - Entwicklung von Datenverarbeitungen.
    Später kannst du immer noch eine Datenbank hinterlegen und dich damit auseinandersetzen.

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

    @ErfinderDesRades
    Hey
    Ich habe ja schon des öfteren dein 4views Model angesehen und versucht nachzustellen. Aber das mit den xmlund dm DataSet klappte leider noch weniger.
    Im aktl. Project bekomme ich ja zumindest die Daten in die verschiedenen Tabellen geschrieben. Nur das mit den PK und FK zuordnen und dann zur Anzeige zu bringen scheitert. ;(

    Wie ich schon öfter schrieb, gibt es zuhauf im web zu lesen und auf YT zusehen, leider das meiste nicht zu gebrauchen. ;(
    Thema Datenbanken da zeigen soviel immer das gleiche 1 Tabelle usw. Aber so richtig praktische Beispiele nicht zu finden und Erklärungen .... oft nur ein wildes "geklicke" mit grausamer Musik im Hintergrund.

    OK ich schweife ab.
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    Amelie schrieb:

    Im aktl. Project bekomme ich ja zumindest die Daten in die verschiedenen Tabellen geschrieben. Nur das mit den PK und FK zuordnen und dann zur Anzeige zu bringen scheitert.
    Ausserdem scheitert es, dein aktl. Projekt hier im Forum anzuhängen in einer Weise, dass jemand anderes es zum Laufen bringen und fixen könnte.
    Deswegen der gegebene Link - wenn du den mal guckst: es ist nicht der 4views-Link.

    Amelie schrieb:

    Wie ich schon öfter schrieb, gibt es zuhauf im web zu lesen und auf YT zusehen, leider das meiste nicht zu gebrauchen.
    Ja, da haste wohl recht.
    Sicherlich klingt es egozentrisch, wenn ich dir empfehle: Spar dir die Zeit mit web zuhauf und YT, und konzentriert dich auf meine Links.
    Da bekommst du immer ein Sample-Projekt, was funktioniert.
    Wenn du Probleme hast, es nachzustellen, beschäftige dich mit diesen Problemen - die sind lösbar, und sind genau das, was deinem KnowHow fehlt.
    Dass sie lösbar sind ist erwiesen, wenn mein Sample-Projekt funktioniert.

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

    Ich hab dir das mal von Beginn bis zum Combobox Binding aufgenommen.

    1. Video: mache ich die Datagridviews, die Textboxen und die Buttons. Die zwei Comboboxen mache ich separat aus der Toolbox. (Die binde ich später händisch!!!)
    vid1.zip

    2. Video: Random und Felder für die Kundennummer. Die Methode in der die Kundennummer generiert wird und eine Methode Speichern.
    vid2.zip

    3. Video: Deaktiviere ich die Textboxen in denen man keine Eingabe machen muss. Stelle ich im Dataset AutoIncrementSeed und Steep auf positive Zahlen.
    vid3.zip

    4. Video: Methode in der die Kundennummer "zusammengebaut" wird (die ersten beiden Buchstaben von Vor- und Nachname plus einer vierstelligen Zahl). Testdaten werden eingegeben.
    vid4.zip

    5. Video: Binde ich die Comboboxen händisch (Datasource). Vergebe den Displaymember und den Valuemember.
    vid5.zip

    Den BindingNavigator benutze ich in diesem Beispiel gar nicht mehr.
    Beim Random musst du aufpassen da intMin inklusive und intMax exklusive ist.

    In deinen Code machst du Next(10000, 99999) - heißt deine kleinste Zahl aus dem Random wär 10000 und deine größte 99998.

    Dass das ganze nicht OOP Konform ist - abgesichert (z.B. in die Textboxen etwas eingeben bevor der jeweilige Button 'Neu' gedrückt wurde) - das Datenmodel nicht optimal ist - man im Displaymember mehr als nur den Straßennamen anzeigen könnte, etc. - ist mir klar.
    Ich denke aber das Hauptaugenmerk lag ja beim Binding.

    Und der Code - ist halt leider C#.
    Spoiler anzeigen

    C#-Quellcode

    1. namespace WindowsFormsApp6
    2. {
    3. public partial class Form1 : Form
    4. {
    5. Random rnd = new Random();
    6. int i_kdnummer;
    7. string s_kdnummer;
    8. public Form1()
    9. {
    10. InitializeComponent();
    11. }
    12. private void Form1_Load(object sender, EventArgs e)
    13. {
    14. this.kundeAdresseTableAdapter.Fill(this.kundeAdresseDataSet.KundeAdresse);
    15. this.adresseTableAdapter.Fill(this.kundeAdresseDataSet.Adresse);
    16. this.kundeTableAdapter.Fill(this.kundeAdresseDataSet.Kunde);
    17. }
    18. private void kundeBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    19. {
    20. }
    21. private void Kundennummer()
    22. {
    23. i_kdnummer = rnd.Next(1000, 10000);
    24. }
    25. private void Speichern()
    26. {
    27. this.Validate();
    28. this.kundeBindingSource.EndEdit();
    29. this.adresseBindingSource.EndEdit();
    30. this.kundeAdresseBindingSource.EndEdit();
    31. this.tableAdapterManager.UpdateAll(this.kundeAdresseDataSet);
    32. }
    33. private void btnKundeNeu_Click(object sender, EventArgs e)
    34. {
    35. kundeBindingSource.AddNew();
    36. }
    37. private void btnKundeSpeichern_Click(object sender, EventArgs e)
    38. {
    39. string vn = vornameTextBox.Text;
    40. string nn = nachnameTextBox.Text;
    41. Kundennummer();
    42. s_kdnummer = vn.Length > 1 && nn.Length > 1 ? $"{vn.Substring(0,2)}{nn.Substring(0, 2)}-{i_kdnummer}" : "no valid number";
    43. DataRowView dv = (DataRowView)kundeBindingSource.Current;
    44. dv[1] = s_kdnummer;
    45. Speichern();
    46. }
    47. private void btnAdresseNeu_Click(object sender, EventArgs e)
    48. {
    49. adresseBindingSource.AddNew();
    50. }
    51. private void btnAdresseSpeichern_Click(object sender, EventArgs e)
    52. {
    53. Speichern();
    54. }
    55. private void btnKundeAdresseNeu_Click(object sender, EventArgs e)
    56. {
    57. kundeAdresseBindingSource.AddNew();
    58. }
    59. private void btnKundeAdresseSpeichern_Click(object sender, EventArgs e)
    60. {
    61. int kunde = Convert.ToInt32(cboKunde.SelectedValue);
    62. int adresse = Convert.ToInt32(cboAdresse.SelectedValue);
    63. DataRowView dv = (DataRowView)kundeAdresseBindingSource.Current;
    64. dv[1] = kunde;
    65. dv[2] = adresse;
    66. Speichern();
    67. }
    68. }
    69. }​

    Maffi schrieb:

    Ich hab dir das mal von Beginn bis zum Combobox Binding aufgenommen.


    Moin moin @Maffi

    Danke für die arbeit mit den Videos. Sehr lieb von dir.
    Die werde ich mir heute mal ganz in Ruhe ansehen und dann nachstellen.

    Mein letzten code den ich hier gepostet hatte ist auch schon nicht mehr aktl. Z.B. habe ich das leeren der Textboxen wieder rausgeschmissen. War unnötig ;)
    Habe mir 2 Button angelegt um schnell mal alle Textboxen auszufüllen ( DummiUser ) Ist zum testen einfach viel einfacher.
    Ja und auf diesen BindingNavi wollte ich auch gerne komplett verzichte und habe den so gut ich es eben hinbekommen hatte ersetzt. Das habe ich auch schon in den Videos von @ErfinderDesRades gesehen.

    So nun mal ans Video guggen und ggf lade ich mein Projekt mal hier hoch. Ist ja noch winzig klein. ;)
    Hier auch nochmal den Dank an EDR ;)
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    @Maffi
    @ErfinderDesRades

    So ich habe nun eine lauffähige Version hinbekommen.
    Habe aber noch ein paar Fragen dazu.
    Hier erstmal der Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class frm_kundeneu
    2. Private rnd As Random = New Random()
    3. Private i_kdnummer As Integer
    4. Private s_kdnummer As String
    5. Private KdNr As String
    6. Private Sub Kundennummer()
    7. i_kdnummer = rnd.[Next](1000, 100000)
    8. Dim vn As String = KdVornameTextBox.Text
    9. Dim nn As String = KdNachnameTextBox.Text
    10. KdNr = vn.Substring(0, 1) & nn.Substring(0, 1) & "-" & i_kdnummer
    11. KdNrTextBox.Text = KdNr
    12. End Sub
    13. Private Sub textboxoff()
    14. For Each TextBox In Me.Controls.OfType(Of TextBox)() : TextBox.Enabled = False : Next
    15. End Sub
    16. Private Sub Textboxon()
    17. For Each TextBox In Me.Controls.OfType(Of TextBox)() : TextBox.Enabled = True : Next
    18. End Sub
    19. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    20. textboxoff()
    21. Timer1.Stop()
    22. End Sub
    23. Private Sub counters()
    24. With Me.BindingContext(Me.DB1ds.Kunden)
    25. lbl_counters.Text = "Datensatz " & (Me.KundenBindingSource.Position + 1).ToString & " von " & .Count.ToString & " Datensätzen."
    26. End With
    27. End Sub
    28. Private Sub speichern()
    29. Me.Validate()
    30. Me.KundenBindingSource.EndEdit()
    31. Me.AddressBindingSource.EndEdit()
    32. Me.KuAdBindingSource.EndEdit()
    33. Me.TableAdapterManager.UpdateAll(Me.DB1ds)
    34. counters()
    35. End Sub
    36. Private Sub frm_kundeneu_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    37. Me.AddressTableAdapter.Fill(Me.DB1ds.Address)
    38. Me.KundenTableAdapter.Fill(Me.DB1ds.Kunden)
    39. Me.KuadTableAdapter.Fill(Me.DB1ds.KUAD)
    40. counters()
    41. buttons()
    42. textboxoff()
    43. End Sub
    44. Private Sub btn_save_Click(sender As Object, e As EventArgs) Handles btn_save.Click
    45. Kundennummer()
    46. speichern()
    47. textboxoff()
    48. End Sub
    49. Private Sub buttons()
    50. If KundenBindingSource.Count = Nothing Then btnKuAdneu.Enabled = False Else btnKuAdneu.Enabled = True
    51. If KundenBindingSource.Count = Nothing Then btnKuAdsave.Enabled = False Else btnKuAdsave.Enabled = True
    52. If KundenBindingSource.Count = Nothing Then btn_delete.Enabled = False Else btn_delete.Enabled = True
    53. If KundenBindingSource.Count = Nothing Or IDTextBox.Text = "" Then btn_save.Enabled = False Else btn_save.Enabled = True
    54. End Sub
    55. Private Sub btn_new_Click(sender As Object, e As EventArgs) Handles btn_new.Click
    56. Textboxon()
    57. btn_save.Enabled = True
    58. Me.AddressBindingSource.AddNew()
    59. Me.KundenBindingSource.AddNew()
    60. Me.TableAdapterManager.UpdateAll(Me.DB1ds)
    61. End Sub
    62. Private Sub btn_prev_Click(sender As Object, e As EventArgs) Handles btn_prev.Click
    63. Me.KundenBindingSource.MovePrevious()
    64. Me.AddressBindingSource.MovePrevious()
    65. counters()
    66. End Sub
    67. Private Sub btn_next_Click(sender As Object, e As EventArgs) Handles btn_next.Click
    68. Me.KundenBindingSource.MoveNext()
    69. Me.AddressBindingSource.MoveNext()
    70. counters()
    71. End Sub
    72. Private Sub btn_delete_Click(sender As Object, e As EventArgs) Handles btn_delete.Click
    73. Me.KundenBindingSource.RemoveCurrent()
    74. Me.AddressBindingSource.RemoveCurrent()
    75. Me.TableAdapterManager.UpdateAll(Me.DB1ds)
    76. counters()
    77. buttons()
    78. End Sub
    79. Private Sub btnKuAdneu_Click_1(sender As Object, e As EventArgs) Handles btnKuAdneu.Click
    80. buttons()
    81. Me.KuAdBindingSource.AddNew()
    82. End Sub
    83. Private Sub btnKuAdsave_Click(sender As Object, e As EventArgs) Handles btnKuAdsave.Click
    84. buttons()
    85. Dim kunde As Integer = Convert.ToInt32(cboKunde.SelectedValue)
    86. Dim adresse As Integer = Convert.ToInt32(cboAdresse.SelectedValue)
    87. Dim dv As DataRowView = CType(Me.KuAdBindingSource.Current, DataRowView)
    88. dv(0) = kunde
    89. dv(1) = adresse
    90. speichern()
    91. End Sub
    92. ' 2 Dummy-User
    93. Private Sub btn_dummy_Click(sender As Object, e As EventArgs) Handles btn_dummy.Click
    94. KdeMailTextBox.Text = "maxmu@outdoor.nl"
    95. KdInstagramTextBox.Text = "@maxmu"
    96. KdNachnameTextBox.Text = "Mustermann"
    97. KdTelTextBox.Text = "01543423673"
    98. KdVornameTextBox.Text = "Max"
    99. PLZTextBox.Text = "48345"
    100. StadtTextBox.Text = "Fakecity"
    101. StrasseTextBox.Text = "Sackgasse"
    102. NrTextBox.Text = "12a"
    103. End Sub
    104. Private Sub btn_dummy1_Click(sender As Object, e As EventArgs) Handles btn_dummy1.Click
    105. KdeMailTextBox.Text = "janedo@indoor.nl"
    106. KdInstagramTextBox.Text = "@1janwdw"
    107. KdNachnameTextBox.Text = "Dowe"
    108. KdTelTextBox.Text = "0167348924"
    109. KdVornameTextBox.Text = "Jane"
    110. PLZTextBox.Text = "26544"
    111. StadtTextBox.Text = "Faketown"
    112. StrasseTextBox.Text = "Im Abgrund"
    113. NrTextBox.Text = "23"
    114. End Sub
    115. End Class


    Ich habe ja die Datenbank und die Tabellen im Datenbank Explorer erstellt. Auch die PK und FK und deren Beziehungen. Wenn ich nun das DataSet über Datenquellen in mein Project einbinde verändern sich da einige Werte der Tabellen. AutoIncrement steht auf False und -1, die Bindungen nicht mehr auf Casscade usw.
    Das verwirrt ungemein und führt ja zwangsläufig zu Fehlern !! ??

    Eine weitere Frage: Sollte das dann nicht automatisch in die KUAD-Tabelle geschrieben werden?
    ..
    Habe noch einige kleine Fehler bzgl der Buttons beseitigt aber hier nicht neu hochgeladen.
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

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

    ​verändern sich da einige Werte der Tabellen

    Was meinst du damit? Welche Werte von welchen Tabellen?

    ​AutoIncrement steht auf False und -1

    Ist im 3. Video zu sehen.


    ​die Bindungen nicht mehr auf Casscade usw.

    Hab ich im Video vergessen.
    Doppelklick auf die Beziehung im Dataset Designer.


    ​Eine weitere Frage: Sollte das dann nicht automatisch in die KUAD-Tabelle geschrieben werden?

    Wenn du einen Kunden 'A' und eine Adresse 'X' eingibst, und diese automatisch auch in die Zwischentabelle (Die PK's als FK's) eingetragen werden würden und dein nächster Kunde ebenso an der SELBEN Adresse 'X' wohnt ...

    Trenne die Konzepte einfach.

    Kunde ist Kunde und hat mal nichts mit der Adresse zu tun.
    Adresse ist Adresse und kennt den Kunden nicht.

    Erst durch die Zwischentabelle 'verheiratest' du die beiden Konzepte miteinander.

    Es könnte ja auch mal vorkommen, dass du z.B. einen Kunden anlegen möchtest, von den du die Adresse erst später bekommst.
    Dann legst du den Kunden einfach mal in der Datenbank an.
    Und wenn du ein paar Tage später seine Adresse hast, legst du eben diese an.
    Danach 'verheiratest' du die beiden in deiner Zwischentabelle und fertig.
    @Maffi
    WO ich das alles wieder ins Lot bringen musste hatte ich schon gewust, nur WARUM verändert sich das wenn ich es doch bei der Erstellung mit SQL-Compact schon so eingestellt hatte?
    .
    Das mit den Kunden und Adressen; ja muss ich dir Recht geben. Könnte sein das ich erst den Namen ... und später die Adresse...
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

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

    DGV wird nicht gefüllt??

    @Maffi

    Wo liegt hier der Fehler?
    Das große DGV wird nicht befüllt, obgleich die Tabellenüberschriften aus der DB gelesen werden.
    Die IDs der Daten stimmen ja auch. Also müsten doch die beiden Datensätze angezeigt werden????

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub SetSQL(ByVal SQL As String)
    2. Dim conn As New SqlCeConnection
    3. Dim cmd As New SqlCeCommand
    4. conn.ConnectionString = "datasource=B:\Dokumente\EAR\EAR\DB_1.sdf"
    5. cmd.Connection = conn
    6. cmd.CommandText = SQL
    7. conn.Open()
    8. cmd.ExecuteNonQuery()
    9. conn.Close()
    10. End Sub
    11. Private Sub GetSQL(ByVal SQL As String)
    12. Dim conn As New SqlCeConnection
    13. Dim cmd As New SqlCeCommand
    14. conn.ConnectionString = "datasource=B:\Dokumente\EAR\EAR\DB_1.sdf"
    15. cmd.Connection = conn
    16. cmd.CommandText = SQL
    17. Dim da As New SqlCeDataAdapter(cmd)
    18. Dim dt As New DataTable
    19. conn.Open()
    20. da.Fill(dt)
    21. conn.Close()
    22. KUAD_View.DataSource = dt
    23. End Sub
    24. Private Sub dataview()
    25. GetSQL("SELECT Kunden.KdNr, Kunden.KdVorname, Kunden.KdNachname, Kunden.KdeMail, Kunden.KdTel, Kunden.KdInstagram, Address.PLZ, Address.Stadt, Address.Strasse, Address.Nr FROM Kunden INNER JOIN Address ON Kunden.ID = Address.ID")
    26. End Sub

    Bilder
    • dgv1.jpg

      312,84 kB, 866×601, 79 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Der Join kann nicht funktionieren da ...

    1. die Zwischentabelle leer ist (laut deinem Bild) und
    2. selbst wenn in der Zwischentabelle Daten wären, du nicht über die Zwischentabelle join'st.

    Ich hab das mal bei mir im SQL-Server für dich abgebildet. (Ich hab halt nur weniger Attribute in meinen Tabellen)
    Zuerst nur die einzelnen Tabellen, dass du siehst wo was drinnen steht.



    Dein Join Ergebnis.



    Und der richtige Join über die Zwischentabelle.



    Abgesehen davon würde ich es vorziehen mit 'Bindingsource.Filter' und mit 'Linq' zu arbeiten.

    EDIT

    Hier nochmal der letzte Join wo ich die ID's farblich markiert habe. Eventuell ist es für dich so leichter den Join nachzuvollziehen




    Edit 2^^ (gerade gesehen)

    ​nur WARUM verändert sich das wenn ich es doch bei der Erstellung mit SQL-Compact schon so eingestellt hatte?

    Das kann ich dir nicht sagen ...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Maffi“ ()

    Maffi schrieb:

    Der Join kann nicht funktionieren da ...


    Abgesehen davon würde ich es vorziehen mit 'Bindingsource.Filter' und mit 'Linq' zu arbeiten.
    Damit muss ich mich dann mal befassen.
    Deinen JION werde ich mal nachbauen und sehen ob das bei mir klappt. ;)

    DANKE für deine ernorme Hilfe ;-
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh: