Datensätze ändern schlägt fehl

  • VB.NET

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von NXGENMeteora.

    und wieder einmal wurde eine C&P vorlage dem "Lernenden" hingeworfen, ohne jegliche erklärung. ich hoffe zumindest dass dem TE klar wird, was man machen muss, damit ein befehl überhaupt ausgeführt wird.

    Hourmin schrieb:

    Hier ist das auch so wie ich das gemacht habe

    ich hab mir die stelle in dem OpenBook angesehen und kann eigentlich nur darüber lachen, dass deren Syntax-highlightning (zumindest in meinen augen) versagt hat. dort wäre deine lösung zu finden gewesen, wenn du mal aufmerksam den quellcode gelesen hättest ( vielleicht stands ja sogar im text drin). es wäre wirklich ratsam, wenn du nicht einfach nur C&P machst, sondern dich auch mal mit den Klassen die du verwendest auseinander setzt. such einfach mal in der MSDN danach, und setzt dich mal ne stunde vor eine Klasse, denn das oder mehr kann an zeit benötigt werden, bis man sie voll und ganz kapiert hat.

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

    Habe mir den code angeguckt.



    Jedenfalls geht mein code immer noch nicht:


    VB.NET-Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. Using con5 As New OleDbConnection()
    3. con5.ConnectionString =
    4. "Provider= Microsoft.ACE.OLEDB.12.0;" &
    5. "Data Source = C:\Users\p1\Desktop\Darlehensrechner\Banken.accdb"
    6. Dim str5 As String
    7. Dim cmd5 As OleDbCommand
    8. str5 = "UPDATE Bankdaten SET "
    9. str5 &= "NameBank = '" & Bname.Text & "', "
    10. str5 &= "Kreditmin = '" & kMin.Text & "', "
    11. str5 &= "Kreditmax = '" & kMax.Text & "', "
    12. str5 &= "Zinsmin = '" & ZMin.Text & "', "
    13. str5 &= "Zinsmax = '" & ZMax.Text & " where ID = " & pNummer(datensätze.SelectedIndex)
    14. con5.Open()
    15. cmd5 = New OleDbCommand(str5, con5)
    16. Try
    17. cmd.ExecuteNonQuery()
    18. Catch ex As Exception
    19. MessageBox.Show("Fehlgeschlagen!" & vbCrLf & vbCrLf & ex.Message)
    20. End Try
    21. con5.Close()
    22. End Using
    23. End Sub
    allmählich vergeht mir echt die lust daran... "geht immer noch nicht" das ist vielleicht ne aussage. Wenn du wirklich hilfe willst, dann mach konkrete aussagen WAS nicht funktioniert, wo der Fehler auftaucht. ausserdem lass mal das Try-Catch versschwinden, dann zeigt die VS den fehler an. da dann bitte dann die Fehlermeldung posten und die inner exception falls eine vorliegt. dann kann wirklich geholfen werden.

    ich würde dir dringenst empfehlen die links nicht nur anzuklicken anzusehen und dabie zu denken "was hilft mir der müll jetzt?" sondern dich da mal richtig einzulesen und das dort geschrieben zu verstehen. C&P wird später, wenn du mal richtig programmieren willst nicht mehr möglich sein, denn oft findest du nurnoch snippets, die etwas mehr wissen erfordern um sie für dien problem anzupassen.
    Weil heute Freitag ist hab ich deinen Code mal mit DB-Parametern angepasst. Kann diesen leider nicht testen.

    VB.NET-Quellcode

    1. Using con5 As New OleDbConnection()
    2. con5.ConnectionString = "Provider= Microsoft.ACE.OLEDB.12.0;" & "Data Source = C:\Users\p1\Desktop\Darlehensrechner\Banken.accdb"
    3. Dim str5 As String
    4. Dim cmd5 As OleDbCommand
    5. str5 = "UPDATE Bankdaten SET "
    6. str5 &= "NameBank = @namebank, "
    7. str5 &= "Kreditmin = @kmin, "
    8. str5 &= "Kreditmax = @kmax, "
    9. str5 &= "Zinsmin = @zmin, "
    10. str5 &= "Zinsmax = @zmax where ID = @id"
    11. con5.Open()
    12. cmd5 = New OleDbCommand(str5, con5)
    13. cmd5.Parameters.Clear()
    14. cmd5.Parameters.Add("@namebank", OleDbType.VarChar).Value = Bname.Text
    15. cmd5.Parameters.Add("@kmin", OleDbType.Decimal).Value = kMin.Text ' Vermutlicher Datentyp Decimal
    16. cmd5.Parameters.Add("@kmax", OleDbType.Decimal).Value = kMax.Text ' Vermutlicher Datentyp Decimal
    17. cmd5.Parameters.Add("@zmin", OleDbType.Decimal).Value = ZMin.Text ' Vermutlicher Datentyp Decimal
    18. cmd5.Parameters.Add("@zmax", OleDbType.Decimal).Value = ZMax.Text ' Vermutlicher Datentyp Decimal
    19. cmd5.Parameters.Add("@id", OleDbType.integer).Value = pNummer(datensätze.SelectedIndex) ' Vermutlicher Datentyp Integer
    20. 'cmd.ExecuteNonQuery() ' warum cmd???
    21. cmd5.ExecuteNonQuery()
    22. con5.Close()
    23. End Using



    Bitte versteh den Code... Ist nicht schwer

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    @Hourmin:: Deine Problem sind mangelnde Grundlagen in Kombination mit einem überfordernden Projekt in Kombination mit einem ungeeigneten Ansatz.

    ZB die Grundlage Datentyp-Konzept
    Offensichtlich ist dir das Konzept unterschiedlicher Datentypen unbekannt, weil du verwendest entweder Typ Object oder Typ String, und würfelst das Zeugs auch noch munter durcheinander.
    Nu gibts dieses Konzept nicht nur in VB, sondern auch inne Datenbank, und die in VB verwendeten Datentypen müssen in richtiger Weise auf die DB-Datentypen gemapt werden.

    Aber auch dein Ansatz ist ungeeignet
    Für sone Datenverarbeitung verwende besser ein typisiertes Dataset, und überlass Befüllen und Rückspeichern geeignet konfigurierten DataAdaptern - die arbeiten effizient und mappen richtig.

    Aber vmtl. ist auch deine Datenbank ungeeignet
    Wenn du sie ohne Kenntnis des Datentyp-Konzepts aufgesetzt hast, verwendest du sicherlich auch für Zahlen- oder Datum- Spalten Strings, um nur den simpelsten Modellierungsfehler im Datenmodell zu benennen.

    Also ich empfehle neu anzufangen, und zwar mit einem kleineren, aber erweiterungsfähigen Ansatz: Datenbänkerei-Einstieg
    Schon diese Kirche im Dorf setzt Grundlagen voraus:
    Berücksichtigung von Datentypen - Option Strict On!
    Kenntnis von Datenmodellierung: die relationale GrundIdee

    Und dann gibts erstmal Databinding zu erlernen, also wie man effizient eine stabile und daten-konsistente BenutzerOberfläche hinbekommt: vier Views-Videos