Visual Basic Problem - DataTable, ComboBox & etwas ausrechnen

  • VB.NET

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

    Visual Basic Problem - DataTable, ComboBox & etwas ausrechnen

    Hallo,
    mein Problem ist folgendes:

    Ich gebe über meine Form in der Textbox eine Zahl ein und wähle in der Combobox daneben ein "Produkt".
    Es ist ein DataTable vorhanden der 2 Spalten hat (Produkt und Preis) - der DataTable funktioniert auch(Produkt wird in der Combobox aufgelistet)

    Beispiel: Produkt "Glasflasche" hat den Preis "1"
    In der Textbox schreibe ich 1000 und wähle Glasflasche in der Combobox.
    Jetzt würde ich gerne durch klicken auf den Button das ganze multiplizieren und in die RichTextBox unterhalb einfügen.

    Aber wie kann ich...
    1. Sicherstellen, dass er weiß, welches Produkt in der Combobox welchen Wert hat und...
    2. das er diesen Wert aus dem DataTable nimmt und damit multipliziert durch einen klick auf den Button? ?(

    Ich meine, ich hab zwar bisschen was gelesen zum Thema Parsen, aber letztendlich bringt mir das gar nichts,
    wenn ich nur das Produkt aus dem DataTable habe aber keinen Wert(bzw. Preis) mit dem ich rechnen kann.

    Falls Fragen anfallen einfach her damit.
    Ich danke schon mal für Antworten :)

    mit freundlichen Grüßen
    John Allington
    @John Allington Willkommen im Forum.

    Du hast vergessen zu prüfen, was in der Textbox steht. Da empfiehlt sich statt der Textbox das NumericUpDown Steuerelement. Oder Du musst sicherstellen, dass in der Textbox auch nur Text steht. UND du kannst nicht mit Text rechnen, du musst den Inhalt erst zu einem Integer parsen.
    Alles andere kommt auch auf deinen bereits vorhanden Code drauf an und auch auf den Aufbau der Tabellen. Sind es Tabellen eines Datasets, im Designer angelegt? Falls ja, sehr gut, dann hast du das Binding an Combobox sicher über eine Bindinsgsource erledigt? Je nachdem können die Wege unterschiedlich aussehen.
    Du solltest Dir die Anleitungen unter Tips & Ticks und Tutorials/Datenbanken genauer ansehen. @ErfinderDesRades des Rades hat vieles dazu geschrieben, was Dir weiterhilft.
    Hallo
    Danke für die Antwort. :)
    Ich wollte nur kurz erwähnen das ich relativ neu bin was VB angeht.
    Daher fällt es mir gerade schwer zu verstehen, ob ich es so gemacht hab wie du es vorgeschlagen hast.^^

    Hatte vergessen zu erwähnen das eine If abfrage bereits vorhanden ist "If IsNumeric(TextBox1.Text) then"
    Und zum Aufbau der Tabellen... ich hab das nach Anleitung so gemacht:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim table As New DataTable
    2. Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. table.Columns.Add("Produkt", System.Type.GetType("System.String"))
    4. table.Columns.Add("Preis", System.Type.GetType("System.String"))
    5. Dim NewRow As DataRow = table.NewRow
    6. NewRow("Produkt") = "Glasflasche"
    7. NewRow("Preis") = "1"
    8. table.Rows.Add(NewRow)
    9. Dim NewRow1 As DataRow = table.NewRow
    10. NewRow1("Produkt") = "Verp. Spitzhacke"
    11. NewRow1("Preis") = "25"
    12. table.Rows.Add(NewRow1)
    13. Dim NewRow2 As DataRow = table.NewRow
    14. NewRow2("Produkt") = "Verp. Axt"
    15. NewRow2("Preis") = "25"
    16. table.Rows.Add(NewRow2)
    17. ComboBox1.DataSource = table
    18. ComboBox1.DisplayMember = "Produkt"
    19. ComboBox1.ResetText()
    20. ComboBox1.SelectedIndex = -1
    21. End Sub


    Ist das eine gute variante oder eher nicht so?

    mit freundlichen Grüßen
    John Allington
    Ohje, bitte erst einmal den alten VB Namesspace rauswerfen und Option Strict auf ON stellen.
    Lese doch bitte erst mal die Tutorials durch und arbeite Dich da durch. Sehr wahrscheinlich, dass Du dann auch ganz allein die eigentlich einfache Aufgabenstellung gut allein bewältigen kannst.

    Deine DataTable ist nicht streng typisiert, und auch nicht im Designer erstellt. Sonst hättest Du ja auch keinen Code dafür schreiben müssen.
    Schwerer Fehler ist aber schon mal, den Preis als String zu definieren. Preise sind immer vom Datentyp Decimal. Wie willst du denn mit String rechnen? Immer alles hin und her parsen?
    Erstelle ein Dataset mit dem Designer (grafisch) und dort die benötigten Tabellen (auch wenn es nur eine ist).
    Dann kannst du die Tabelle (oder einzelene Felder) direkt aus der Datasource mit dem Designer auf das Form ziehen. Der Designer kreiert dann für dich eine Bindingssource, die an der Tabelle gebunden ist und an dem auch dein Steuerelement (Combobox) gebunden ist. Wie man dann bei einem ComboBox1_SelectedIndexChanged Event sich aus der Bindingssource die Informationen zum Datensatz herausholt, also auch den Preis, das findest Du auch hier im Forum.

    Ergänzung zur Eingabe von Zahlen in einer Textbox (Sinnvoll wäre aber statt einer Textbox das NumericUpDown zu verwenden): Nur Zahlen in einer TextBox erlauben
    Zahlen (aus Textbox) parsen: mehere TextBox in Integer umwandeln mit Exception

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

    Huhu
    Ich mische mich mal ein, denn ich habe vor kurzem etwas ähnliches veranstaltet.
    Mir haben zum Thema DataSet die Tutorials vom @ErfinderDesRades sehr geholfen:
    Das hier solltest du dir unbedint zu Gemüte führen.
    vb-paradise.de/index.php/Threa…ews-auf-video/#post798777
    Hier werden deine Fragen:
    ​1. Sicherstellen, dass er weiß, welches Produkt in der Combobox welchen Wert hat und...
    2. das er diesen Wert aus dem DataTable nimmt und damit multipliziert durch einen klick auf den Button?

    ganz wunderbar beantwortet.
    Der Rest sollte danach einfach sein.
    Wenn nicht einfach noch mal fragen.