Variablendeklaration

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von elkokiller.

    Variablendeklaration

    Hallo,


    ich habe eine Stringvariable hinter der sich z.B. ein Wert von 22,37 verbirgt.
    Dieser Wert soll jetzt in eine mySql Tabelle geschrieben werden.
    In MySql würde dieser Wert aber als 22.37 aufgenommen.
    Was muss ich tun um den Wert der Variable anzupassen? Gibt es in MySql vielleicht einen anderen Typ den ich nutzen kann?
    Hi,

    vielleicht habe ich ja hier schon einen Fehler gemacht!?

    Ich berechne zunächst einen Zahlenwert mittels Sring variable in etwar so:

    Stringvariable = Wert / 100
    Stringvariable = Stringvariable * 0,75

    Der Typ String ist dafür doch der Richtige Typ, oder?
    Ein String ist eine Anhäufung von Buchstaben, Zahlen und Zeichen und damit kann man nunmal nicht Rechnen oder versuche du mal

    Hallo * 45

    zu rechnen.

    Wenn du Rechnen willst dann nutzt Integer, Double, Single oder Decimal.

    Da jedoch der SQL Client intelligent ist, bzw. du über den Query nur Strings übergeben kannst passiert dort eine eigenständige umwandlung. Es wird geschaut von welchem Typ die Spalte ist wo der wert reingeschrieben werden soll. Ist sie vom Typ INT (Integer) so wird versucht den übergebenen Stringwert in ein Integer zu wandeln.
    Bei dir scheint die Spalte vom Typ DECIMAL zu sein weil du ja einen Kommawert eintragen willst und damit wurde auch die Konvertierung richtig gemacht, in der Programmiersprache sind nämlich bei Punkten die Dezimaltrennung, wie im englischen auch. Eigentlich ist nur im deutschsprachigen Raum das andersrum, das wir Komma als Trennung haben.

    Also ist der Wert 22.35 in deiner Tabelle richtig, wenn du dort Komma haben willst müsstest die Spalte als String deklarieren, weil dann würde das Komma so übernommen, problem wäre aber hierbei wieder du könntest nicht damit Rechnen.
    Danke für eure Unterstützung!

    Ich ahbe nun den Typ in Sql auf Char umbenannt.
    Kommawerte funktionieren dort schon mal.
    Nun habe ich meine Variable in String umbenannt und erhallte weiter einen Fehler beim Übertragen.

    Versuche ich z.B. einen String in ein textfeld zu speichern, geht es ohne Probleme.

    Könnt ihr mir bitte noch mal helfen!?


    VB.NET-Quellcode

    1. Dim wert As String
    2. wert = "2,5"
    3. wert = wert * 3
    4. con.ConnectionString = "server=localhost;port=3306;uid=root;pwd=;database=trbus;"
    5. cmd.Connection = con
    6. con.Open()
    7. cmd.CommandText = "update statusanzeige set hoehe = " & wert & ""
    8. cmd.ExecuteNonQuery() 'hier kommt es zu einem nicht weiter beschrieben Fehler
    9. con.Close()

    VB.NET-Quellcode

    1. Dim wert As String
    2. wert = "2,5"
    3. wert = wert * 3


    Überließt du extra was man dir sagt?? Ich habe hier [VB 2010] Variablendeklaration schon mal gesagt das man mit String NICHT RECHNET!

    Wieso machst du es dennoch? Vielleicht mag es funktionieren, das ist aber nur so weil die IDE so nett ist und das erkennt das es eigentlich EINE ZAHL sein soll. Aber wenn man sowas macht schleichen sich SEHR SCHNELL Fehler ein und dann wunderst dich wieso es nicht das macht was du willst.

    Also gewöhne dir am besten GLEICH an RICHTIG zu programmieren und nicht so ein schmarren zu produzieren.
    *************
    Sorry,
    der letzte Post wurde mir erst angezeigt als ich diesen hier eingestellt habe.

    O.k. Die Variablendeklaration ist mist. Das habe ich jetzt verstanden.

    Ich denke aber trotzdem nicht dass es daran liegt.
    *************



    Hallo,

    ich habe versucht die vielen Beispiel zu verstehen. Ganz gelungen ist es mir nicht.
    Wie kommt es vom ..=? zum Inhalt der fehlenden Variable, wie hier z.B. über pName.
    Einen Fehler bringt er mir allerdings auch wieder in der Zeile

    Quellcode

    1. cmd.Parameters.Add(pName)


    Hier mein aktueller Versuch:

    VB.NET-Quellcode

    1. Dim wert As Double
    2. wert = "2,5"
    3. wert = wert * 3
    4. con.ConnectionString = "server=localhost;port=3306;uid=root;pwd=;database=trbus;"
    5. cmd.Connection = con
    6. con.Open()
    7. cmd.CommandText = "UPDATE statusanzeige set hoehe=?"
    8. Dim pName As New OleDbParameter With {.Value = wert}
    9. cmd.Parameters.Add(pName)
    10. cmd.ExecuteNonQuery()
    11. con.Close()


    Ich trete auf der Stelle...

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

    Hier sieht man schön wie verkorkst du schon bist ... stelle bitte GANZ DRINGEND in dein Projekteigenschaft auch STRICT ON an -.- bei deinem Code bekommt man ja Augenkrebs

    VB.NET-Quellcode

    1. Dim wert As Double
    2. wert = "2,5"
    3. wert = wert * 3


    Du Deklarierst eine Variable vom Typ Double, das soweit richtig, aber WIESO UM ALLES IN DER WELT rechnest du wieder mit einem String -.-

    Richtig:

    VB.NET-Quellcode

    1. Dim wert As Double = 2.5
    2. wert = wert * 3
    3. ' kürzer geschrieben
    4. wert *= 3


    Dann zu deinem Query

    VB.NET-Quellcode

    1. con.Open()
    2. Dim trans As OleDb.OleDbTransaction = con.BeginTransaction(IsolationLevel.ReadCommitted)
    3. Dim oleCmd As New OleDb.OleDbCommand("UPDATE statusanzeige SET hoehe=?", con, trans)
    4. oleCmd.Parameters.Add(New OleDb.OleDbParameter("hoehe", wert))
    5. oleCmd.ExecuteNonQuery()
    6. trans.Commit()
    7. con.Close()


    Im INet findet man alles was man braucht
    z.B. hier vb-helper.com/howto_net_db_transaction.html
    Hallo Dodo,

    noch mal Danke für deine Unterstützung.
    In der Hilfe hatte ich mich schon mal soweit durchgeschlagen und war dann an einem Fehler gescheidert den ich inhaltlich einfach nicht verstehe:
    Der Wert vom Typ "MySql.Data.MySqlClient.MySqlConnection" kann nicht in "System.Data.OleDb.OleDbConnection" konvertiert werden.


    Kannst du mir vielleicht auch sagen was das genau bedeutet. Ich möchte es auch verstehen

    VB.NET-Quellcode

    1. Dim wert As Double
    2. wert = 2.5
    3. wert = wert * 3
    4. con.ConnectionString = "server=localhost;port=3306;uid=root;pwd=;database=trbus;"
    5. cmd.Connection = con
    6. con.Open()
    7. Dim trans As OleDb.OleDbTransaction = con.BeginTransaction(IsolationLevel.ReadCommitted) '= con.Begin..... ist der Fehler
    8. Dim oleCmd As New OleDb.OleDbCommand("UPDATE statusanzeige SET hoehe=?", con, trans) ' con, ist hier der Fehler
    9. oleCmd.Parameters.Add(New OleDb.OleDbParameter("hoehe", wert))
    10. oleCmd.ExecuteNonQuery()
    11. trans.Commit()
    12. con.Close()
    13. con.Close()