Code in Select Case wird nicht bei betätigung des Buttons ausgeführt

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

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von fabimaurice.

    Code in Select Case wird nicht bei betätigung des Buttons ausgeführt

    Hey ich bins mal wieder :),

    Mein Problem ist folgendes:
    Ich lege sobald sich die Form als Dialog öffnet den sogenannten FormMode fest, dieser wäre einmal FrmMode.Add und einmal FrmMode.Delete.
    Ausführen tut er jedoch nur den oberen der beiden Codes in dem Fall jetzt also Add der andere Code wird im anderen FrmMode Fall nicht ausgeführt bei betätigung des Buttons.

    VB.NET-Quellcode

    1. Private Sub BtnAddUserpcAdd_Click(sender As Object, e As EventArgs) Handles BtnOk.Click
    2. Dim con As New OleDbConnection()
    3. Dim cmd As New OleDbCommand
    4. Select Case ActiveFrmMode
    5. Case FrmMode.Add
    6. con.ConnectionString = Conn
    7. cmd.Connection = con
    8. cmd.Parameters.Clear()
    9. cmd.CommandText = "Insert into UserPc (pc_id, u_id) Values (@pcid, @uid)"
    10. cmd.Parameters.AddWithValue("@pcid", DgvUserPc.CurrentRow.Cells(0).Value)
    11. cmd.Parameters.AddWithValue("@uid", UserId)
    12. con.Open()
    13. cmd.ExecuteNonQuery()
    14. con.Close()
    15. MessageBox.Show("Sucess")
    16. Close()
    17. Case FrmMode.Delete
    18. con.ConnectionString = Conn
    19. cmd.Connection = con
    20. cmd.Parameters.Clear()
    21. cmd.CommandText = "Delete From UserPc where pc_id = @pcid and u_id = @uid"
    22. cmd.Parameters.AddWithValue("@pcid", DgvUserPc.CurrentRow.Cells(0).Value)
    23. cmd.Parameters.AddWithValue("@uid", UserId)
    24. con.Open()
    25. cmd.ExecuteNonQuery()
    26. con.Close()
    27. MessageBox.Show("Sucess")
    28. Close()
    29. End Select
    30. End Sub


    Hab überprüft ob der richtige FrmMode drinne ist da stimmt alles der Code selbst funktioniert auch prima sobald er jedoch in einem Select Case an unterer Stelle steht gehts nichtmehr.

    Falls euch was einfällt wäre mir Hilfe gelegen ^^.

    MfG
    Fabian

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    @fabimaurice Schon mal mit Debuggen probiert?
    Debuggen, Fehler finden und beseitigen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    @fabimaurice Schon mal mit Debuggen probiert?

    Habs gerade eben gelöst, hatte es mit Debuggen probiert der Fehler ist aber schon beim Dialogaufruf auf anderer Form entstanden :whistling: .

    Aber durch dich bin ich tatsächlich nochmal alles durchgegangen was damit zusammenhängt um sicher zu gehen. Hast mir also trotzdem geholfen :) Danke.

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

    Nur so nebenbei, diesen Select Case Block kann man halbieren:

    VB.NET-Quellcode

    1. con.ConnectionString = Conn
    2. cmd.Connection = con
    3. cmd.Parameters.Clear()
    4. Select Case ActiveFrmMode
    5. Case FrmMode.Add
    6. cmd.CommandText = "Insert into UserPc (pc_id, u_id) Values (@pcid, @uid)"
    7. Case FrmMode.Delete
    8. cmd.CommandText = "Delete From UserPc where pc_id = @pcid and u_id = @uid"
    9. End Select
    10. cmd.Parameters.AddWithValue("@pcid", DgvUserPc.CurrentRow.Cells(0).Value)
    11. cmd.Parameters.AddWithValue("@uid", UserId)
    12. con.Open()
    13. cmd.ExecuteNonQuery()
    14. con.Close()
    15. MessageBox.Show("Sucess")
    16. Close()


    Das macht es in meinen Augen wesentlich lesbarer. (Manche würden noch die 7 Leerzeilen entfernen, aber das ist nun wirklich reine Geschmackssache)

    EaranMaleasi schrieb:

    Nur so nebenbei, diesen Select Case Block kann man halbieren:


    Danke :) dann werd ich das mal so übernehmen macht ja auch mehr Sinn als alles Doppelt zu verwenden wenn ich nach dem Command eh z.B cmd.ExecuteNonQuery ausführe reicht es auch wenn ich das nur einmal mache:S.

    Mfg
    Fabian