Was ist in meinem Code falsch?!

Questionmark

Grünschnabel
Hallo ich habe mal wieder ein Problem:
Also es sollen 3 Werte in eine Tabelle geschrieben werden, die vorher eingegeben werden.
Dabei wird ein Wert mit der Tabelle verglichen und falls er schon vorhanden ist, soll eine Fehlermeldung kommen (die auch kommt) und die Werte sollen nicht eingetragen werden (funktioniert auch, aber es werden auch die werte nicht eingetragen, falls sie noch nicht vorhanden sind)

Hier der Code:

Visual Basic:
        Try


            con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=C:\temp\Kst_Bud.accdb"
            cmd.Connection = con

            cmd.CommandText = " Select Kostenstellen_Name from Kostenstelle where Kostenstellen_Name = " & txtkname.Text & ""

            con.Open()

            reader = cmd.ExecuteReader()
            txtprüfung.Clear()

            Do While reader.Read()

                txtprüfung.Text = (reader("Kostenstellen_Name"))

            Loop

            reader.Close()

            con.Close()

        

            If txtkname.Text = txtprüfung.Text Then

                txtkname.Clear()

            Else
                dset.Tables(0).Rows.Add(kst_Nr, kst_name, kst_verantn, kst_verantvorn)

            End If
        

        Catch ex As Exception
            MsgBox("Kostenstelle bereits vorhanden.")


        End Try


    End Sub

Vieln Dank im Voraus!
 
Zuletzt bearbeitet:
Hi

damit dir eher geholfen wird, editiere doch deinen Post und füge zumindest code tags (noch besser: Der Tag der jeweiligen Sprache) hinzu.
 
Visual Basic:
dim a as int

[ vb] -> [ /vb]

C#:
byte[] arr = new byte[2];

[ csharp] -> [/ csharp]
 
Hi,

würdest du hier bitte das Pushen unterlassen?

Deinen letzten Pushpost hab ich hier erst vor ein paar Minuten entfernt.

Bitte erstelle keine Doppel-/Mehrfach-/Pushpostings. Dazu zählen insbesondere das Erstellen identischer Themen in mehreren unterschiedlichen Unterforen, das mehrfache oder erneute Einstellen eines bereits vorhandenen Themas, und das Posten von Beiträgen, die einzig und allein dem Zweck dienen, das entsprechende Thema in der Themenauflistung wieder weiter oben zu platzieren (sog. „Thread Pushing“). Derartige Beiträge werden restlos gelöscht. Sollte der Eindruck bei unseren Moderatoren entstehen, dass wissentlich gegen diesen Punkt verstoßen wurde, hat dies die unbegrenzte Sperrung des Accounts zur Folge.

Das Wochenende kündigt sich an, und so mancher hat was anderes vor, als sich hier im Forum zu tümmeln.

Da heißt die Devise, dich in Geduld zu üben.

Vielen Dank! :)

mfg Maik
 
Du machst es dir aber auch echt schwer... Für was genau brauchst du den DataReader? Du machst doch schon ein Select auf die Kostenstelle - mach ein SELECT COUNT drauf und ein ExecuteScalar daraus:

http://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqlcommand.executescalar(v=VS.80).aspx

Sehe ich das richtig das "dSet" ein DataSet-Objekt ist? Wie füllst du das? Hast du einen DataAdapter?

Ich denke der Artikel sollte dir helfen:

http://msdn.microsoft.com/de-de/library/bb979079.aspx#ID0EIIAC
 
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 14.und 15. ZEile sind diejenigen, an denen ich hänge...falls jmd andere vorschläge hat, wär ich auch froh drüber.
Visual Basic:
 Private Sub cmdspeichern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdspeichern.Click
        Try

       
            antwort = MsgBox("Wollen Sie wirklich speichern?", MsgBoxStyle.YesNo, "Speichervorgang")
            If antwort = MsgBoxResult.Yes Then
                da.Update(dset.Tables(0))
                MsgBox("Daten gespeichert.", , "Speichervorgang")
            ElseIf antwort = MsgBoxResult.No Then
                MsgBox("Geben Sie Ihre Daten bitte erneut ein.", , "Speichervorgang")
            End If
        Catch ex As Exception
            MsgBox("Der rotmarkierte Datensatz kann nicht gespeichert werden, da die Kostentelle bereits vorhanden ist. Bitte löschen sie diesen Datensatz ")
            DataGridView1.Rows.select()
(DataGridView1.CurrentRow)
        End Try

    End Sub
 

Neue Beiträge

Zurück