Speichern mit Überprüfen, ob Datensatz vorhanden ist

  • VB.NET

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

    Speichern mit Überprüfen, ob Datensatz vorhanden ist

    Hallo, ich habe leider folgendes Problem.

    Beim Speichern eines Datensatzen, will ich testen, ob die Daten schon in der Tabelle
    "Ort_DT" gespeichert sind.

    Mein Problem ist dass ich in der SelectAbfrage nicht nur auf einen Parameter testen
    will( wie es in der Literatur schön beschrieben ist), sondern 2 und mehrere
    Parameter abfragen will.

    Wie schreibe ich das richtig, damit VB etwas damit anfangen kann?

    Ich danke für Eure Mithilfe im Voraus!
    ----------------------------------------------------------------------
    Private Sub SpeichernToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SpeichernToolStripButton.Click

    'Dim title As String = Trim(TitleTextBox.Text)
    'Dim publName As String = Trim(PublisherTextBox.Text)
    'Dim authors As String() = Split(AuthorsTextBox.Text, ";")
    'Dim authorSpecified As Boolean = False
    'Dim author As String
    Dim ID_LagerOrt As Integer = 0
    'Dim titleID, authID, i As Integer

    Dim results As DataRow()
    Dim newTitle, newOrt, newAuthor, newRelTitAuth As DataRow

    Dim Wellentyp As String = Me.GetriebeGridView.CurrentRow.Cells(0).Value()
    Dim Stufentyp As String = Me.GetriebeGridView.CurrentRow.Cells(1).Value()
    Dim Platz As String = Me.GetriebeGridView.CurrentRow.Cells(2).Value()
    Dim Position As String = Me.GetriebeGridView.CurrentRow.Cells(3).Value()
    Me.TextBox1.Text = Wellentyp
    Me.TextBox2.Text = Stufentyp
    Me.TextBox3.Text = Platz
    Me.TextBox4.Text = Position

    newOrt = Nothing

    ‘ an der folgenden Zeile verzweifle ich…habe mehrere Kombinationen ausprobiert. Dies ist nur eine davon:
    results = Ort_DT.Select("Wellentyp = " + Wellentyp) And ("Stufentyp = " + Stufentyp)

    If results.Length > 0 Then
    'der Ort existiert
    ID_LagerOrt = results(0)!ID_LagerOrt
    Else
    'der Ort existiert noch nicht
    newOrt = Ort_DT.NewRow()
    newOrt!Wellentyp = Wellentyp
    newOrt!Stufentyp = Stufentyp
    newOrt!Platz = Platz
    newOrt!Position = Position
    Ort_DT.Rows.Add(newOrt)
    ID_LagerOrt = newOrt!ID_LagerOrt
    ' End If
    End If
    End Sub

    Gleich mal ein Folgeproblem: Umgang mit nicht ausgefüllten Feldern (DbNull)

    Um nicht zu spamen, schreibe ich das mal gleich in meinen vorherigen Thread.

    Ich habe ein Problem mit Feldern, die von dem Anwender im GetriebeGridView nicht ausgefüllt werden. Wird bei der Dateneingabe das Feld Position beispielweise ausgelassen, so bekomme ich beim Ablauf des Programms in der Zeile:
    Dim Platz As String = Me.OrtGridView.CurrentRow.Cells("Platz").Value()
    Eine Fehlermeldung, dass der Variablen „Platz“ kein DbNull Wert zugeordnet werden kann. Seltsamerweise hat „Welle“ den Wert Nothing und die Variable somit den Wert 0. Beiden habe ich in der Access DB einen Long Integer zugewiesen und die gesamten Tabellen in DataTables im DataSet importiert.

    Kann mir jemand helfen das Problem zu umgehen? Gibt es dafür einen Trick? Ich bin leider wieder ratlos.

    Vielen Dank im Voraus!

    Private Sub SpeichernToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SpeichernToolStripButton.Click
    Dim ID_LagerOrt As Integer = 0
    Dim results As DataRow()
    Dim newOrt As DataRow
    Me.OrtGridView.EndEdit()
    'Try
    Dim Wellentyp As String = Me.OrtGridView.CurrentRow.Cells("Welle").Value()
    Dim Stufentyp As String = Me.OrtGridView.CurrentRow.Cells("Stufentyp").Value()
    Dim Platz As String = Me.OrtGridView.CurrentRow.Cells("Platz").Value()
    Dim Position As String = Me.OrtGridView.CurrentRow.Cells("Position").Value()

    newOrt = Nothing
    results = Ort_DT.Select("Wellentyp = " & Wellentyp & " And Stufentyp = " & Stufentyp & " And Platz = " & Platz & " And Position = " & Position)
    If results.Length > 0 Then
    'der Ort existiert
    ID_LagerOrt = results(0)!ID_LagerOrt
    Me.TextBox1.Text = "der Ort existiert"
    Else
    'der Ort existiert noch nicht
    newOrt = Ort_DT.NewRow()
    newOrt!Wellentyp = Wellentyp
    newOrt!Stufentyp = Stufentyp
    newOrt!Platz = Platz
    newOrt!Position = Position
    Ort_DT.Rows.Add(newOrt)
    ID_LagerOrt = newOrt!ID_LagerOrt
    Me.TextBox2.Text = "der Ort existiert noch nicht"
    End If
    'Catch ex As Exception
    'End Try
    End Sub