Prüfen ob Datensatz in DB vorhanden

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Questionmark.

    Prüfen ob Datensatz in DB vorhanden

    Hallo,

    ich arbeite mit VB.net 08 und access und habe eine datagridview eingerichtet, in welche eine Datenbanktabelle geladen wird. Der user kann dann in ein TExtfeld einen Namen eingeben und wenn man auf einen button einfügen klick dann wird der name in der gridview angezeigt. beim button speichern speichert er das aus der datagridview in die db.

    Nun mein Problem: wie gestalte ich den code so, dass er zunächst prüft ob der datensatz aus der textbox bereits vorhanden ist und wenn ja nicht speichert. Sonst hab ich ja datensätze doppelt.
    Vllt geht das ja mit einer if anweisung.also vllt bevor ich einfügen in das datagridview klicke soll er prüfen ob der value in der textbox bereits in datenbank vorhanden...wenn ja msgbox("datensatz existiert") geht das so in der art?

    Danke für die Hilfe.

    Questionmark
    das funktioniert immer noch nicht: was ist da falsch?

    VB.NET-Quellcode

    1. Try
    2. con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=C:\temp\Kst_Bud.accdb"
    3. cmd.Connection = con
    4. cmd.CommandText = " Select Kostenstellen_Name from Kostenstelle where Kostenstellen_Name = " & txtkname.Text & ""
    5. con.Open()
    6. reader = cmd.ExecuteReader()
    7. txtprüfung.Clear()
    8. Do While reader.Read()
    9. txtprüfung.Text = (reader("Kostenstellen_Name"))
    10. Loop
    11. reader.Close()
    12. con.Close()
    13. If txtkname.Text = txtprüfung.Text Then
    14. txtkname.Clear()
    15. Else
    16. dset.Tables(0).Rows.Add(kst_Nr, kst_name, kst_verantn, kst_verantvorn)
    17. End If
    18. Catch ex As Exception
    19. MsgBox("Kostenstelle bereits vorhanden.")
    20. End Try
    21. End Sub

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

    Zum Einen: Sei nicht so ungeduldig, es gibt noch ein Leben aushalb der Programmierung.

    Zum Anderen: Was erwartest Du denn was er tuen soll oder wie sieht die Fehlermeldung aus? Ich habe noch keine gläserne Kugel, um zu wissen, was Du willst.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    also, sorry für die ungeduldigkeit!
    ich will, dass er sich bei Neuanlage einer Kostentelle prüft, ob die bereits vorhanden ist. Dabei soll er aber nicht den PRimärschlüssel( Kostenstellen_Nr) prüfen, sondern den Namen. dafür habe ich eine neue textbox, die versteckt ist gemacht, wo er aus der datenbank den namen reinlesen soll. und dann soll geprüft werden, ob die echt und versteckte txtbox gleich sind wenn ja soll die kostenstelle nciht ins datagridview und somit ncith ins dataset und somit nicht angelgt in der db werden.

    was mach ich nun falsch?

    Quellcode

    1. " Select Kostenstellen_Name from Kostenstelle where Kostenstellen_Name = " & txtkname.Text & ""


    Bei einer Zeichenkette muss der Wert der überprüft (oder abgerufen) wird in hochkommas stehn:

    VB.NET-Quellcode

    1. "... WHERE Kostenstellen_Name = '" & txtkname.Text & "'"
    "Wenn jemand in einem Betrieb unverzichtbar ist, dann ist dieser Betrieb falsch organisiert." - Roberto Niederer
    Danke. also ich habe das problem jetzt anderweitig zum teil gelöst...habe den kostenstellennamen als primärschlüssel gemacht und nun speichert er mir dden datensatz nciht mehr falls er vorhanden ist. wie kriege ich das nun hin, dass er mir die zeile die doppelt im datagridview ist, wieder automatisch rauslöscht ohne dass ich das programm neu laden muss. Die 15.und 16. ZEile sind diejenigen, an denen ich hänge...falls jmd andere vorschläge hat, wär ich auch froh drüber.

    VB.NET-Quellcode

    1. Private Sub cmdspeichern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdspeichern.Click
    2. Try
    3. antwort = MsgBox("Wollen Sie wirklich speichern?", MsgBoxStyle.YesNo, "Speichervorgang")
    4. If antwort = MsgBoxResult.Yes Then
    5. da.Update(dset.Tables(0))
    6. MsgBox("Daten gespeichert.", , "Speichervorgang")
    7. ElseIf antwort = MsgBoxResult.No Then
    8. MsgBox("Geben Sie Ihre Daten bitte erneut ein.", , "Speichervorgang")
    9. End If
    10. Catch ex As Exception
    11. MsgBox("Der rotmarkierte Datensatz kann nicht gespeichert werden, da die Kostentelle bereits vorhanden ist. Bitte löschen sie diesen Datensatz ")
    12. DataGridView1.Rows.select()
    13. (DataGridView1.CurrentRow)
    14. End Try
    15. End Sub