Bestimmte Zeile über Primärschlüssel aus Tabelle entfernen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Bestimmte Zeile über Primärschlüssel aus Tabelle entfernen

    Hallo ihr Pros,

    ich hätte ein kleines Problem. Ich habe einen Tabelle "TAB_JOIN", bei der ich bestimmte Zeilen durch einen bereits zurückgegebenen Primärschlüssel "PKEY" die Zeile in der der Primärschlüssel steht löschen will.

    Wie mache ich das? Ich habe es so versucht, allerdings findet mein Programm die DataRow nicht, obwohl sie vorhanden ist.

    VB.NET-Quellcode

    1. Dim sensor_PKey = Me.SpLISTBYKurzangabeBindingSource.Current("PKEY") 'holt den PKEY des ausgewählten Sensors
    2. Me.SpLISTBYKurzangabeBindingSource.RemoveCurrent() 'löscht aus ListBox_Sensor
    3. Dim customersRow As DataSet1.TAB_JOINRow
    4. customersRow = Me.DataSet1.TAB_JOIN.Rows.Find(sensor_PKey)
    5. Me.DataSet1.TAB_JOIN.RemoveTAB_JOINRow(customersRow)
    6. Me.ListBox_Sensoren.Update()

    Ich erhalte leider als customersRow "Nothing". Wieso?

    Wäre echt super, wenn ihr mir behilflich sein könntet! :)

    Habe noch eine Ergänzung, die eventuell helfen könnte.
    Ich habe bei folgendem Code "0" rausbekommen, obwohl 17 Datensätze in der Tabelle enthalten sind.

    VB.NET-Quellcode

    1. Dim count = Me.DataSet1.TAB_JOIN.Count()


    LG,
    Huuut

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Huuut“ () aus folgendem Grund: Ergänzung

    Hab es jetzt so gelöst

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim sensor_PKey = Me.SpLISTBYKurzangabeBindingSource.Current("PKEY") 'holt den PKEY des ausgewählten Sensors
    3. Me.SpLISTBYKurzangabeBindingSource.RemoveCurrent() 'löscht aus ListBox_Sensor
    4. 'DataSet wird gefüllt
    5. Dim da = New SqlDataAdapter("SELECT * FROM TAB_JOIN", My.ConnectionString)
    6. da.Fill(Me.DataSet1, "TAB_JOIN")
    7. Dim dt = Me.DataSet1.Tables("TAB_JOIN")
    8. 'entsprechender Datensatz wird gelöscht
    9. Dim row As DataRow
    10. Dim i As Integer
    11. For i = Me.DataSet1.TAB_JOIN.Rows.Count - 1 To 0 Step -1
    12. row = Me.DataSet1.TAB_JOIN.Rows(i)
    13. If row.RowState And DataRowState.Deleted Then Continue For
    14. If (row!PKEY) = sensor_PKey Then
    15. If row.RowState And DataRowState.Added Then
    16. DataSet1.TAB_JOIN.Rows.Remove(row)
    17. Else
    18. row.Delete()
    19. End If
    20. End If
    21. Next
    22. Else
    23. End If
    24. End Sub
    naja, wirst schon wissen, was du da tust:
    1. den schlüsselwert der angewählten SpLISTBYKurzangabeRow holen
    2. angewählte SpLISTBYKurzangabeRow löschen
    3. die TabJoinTable komplett löschen
    4. TabJoinTable komplett neu befüllen aus der Datenbank
    5. Alle TabJoinRows löschen, die einen Fremdschlüssel auf die zuvor aus der SpLISTBYKurzangabeTable gelöschten SpLISTBYKurzangabeRow enthielten


    Was wird damit eiglich bezweckt?


    wie gesagt: eine im Dataset konfigurierte Löschweitergabe würde dir komplett alles davon abnehmen - insbes. der DB-Zugriff wäre entbehrlich.