Von einer Textbox eine Summe aus einer Access-Tabelle "Spalte" abziehen

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

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von andi-n.

    Von einer Textbox eine Summe aus einer Access-Tabelle "Spalte" abziehen

    Hallo, ich habe eine Form mit Dataset" eine Access Datenbank mit Tabelle "Teile" " die ich mit Textboxen reingezogen habe. Eine Suche über ein bestimmtes Teil wird mir dann über ein Datagridview angezeigt mit Menge, alles funktioniert Super.
    Nun möchte ich gerne eine neue Form "Kundenbestelleung " erstellen auch mit Textboxen wo ich die Kundendaten mit eintragen kann und eine Auswahl der gesuchten vorhandenen Teile auswählen kann.
    Nach Auswahl des Teils mit Menge was der Kunde haben möchte soll in der neuen Form die Menge auch von der Datenbank abgezogen werden.
    Bin noch leichter Anfänger was dies betrifft, hoffe ihr könnt mir einen Tipp geben.
    Danke Andi
    Wenn Du die empfohlenen VS-Einstellungen verwendest, sollte das aufgrund der Beschreibung recht leicht sein. Sobald die gewünschte Menge notfalls in eine TextBox (besser in ein NumericUpDown) eingetragen wurde und z.B. ein Buchungsbestätigungsbutton gedrückt wurde, wandelst Du den Inhalt (= Text) der TextBox (wenn es denn unbedingt eine sein muss) in eine Zahl per Integer.Parse oder Integer.TryParse um und kannst dann mit dem Bestandswert aus der DB und der Menge, die abgezogen werden soll den neuen Wert in die DB zurückschreiben.
    Aber Moment. Der Thread ist mit VB6 getaggt. Arbeitest Du echt mit VB6? Oder eher mit Visual Studio und VB.NET?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hi VaporiZed, danke für deine Antwort, nur wie gesagt bin noch ein leichter Anfänger was dies betrifft. Hättest du ein Beispiel für mich ?.
    Das Dataset heisst " TeileDataset " die Tabelle "Teile", die Spalte in der Tabelle " MMENGE ".
    Sorry ich Arbeite mit Visual Studio 2022
    Du kannst die Daten auslesen, kommst also an den derzeitigen Bestand ran, richtig?
    Dann hast Du
    • entweder ein NumericUpDown zur Eingabe der auszubuchenden Menge; dann kannst Du mit NeuerBestand = AlterBestand - NumericUpDown.Value den neuen Bestand die die DB schreiben
    • oder eine TextBox; dann verwendest Du NeuerBestand = AlterBestand - Integer.Parse(DeineTextBox.Text)
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    andi-n schrieb:

    hoffe ihr könnt mir einen Tipp geben
    Für dein Projekt ist eine Menge KnowHow erforderlich, in den Bereichen Datenmodellierung (das ist Theorie, aber erforderlich), Dataset, Databinding, und am Ende Datenbank.
    Ich empfehle immer, zunächstmal die Datenbank wegzulassen - man kommt ohne schneller voran.
    Wenn alles fertig ist, kann man immer noch eine Datenbank hinterlegen, aber oft ist das nichtmal erforderlich.
    Jo, also zu Datenmodellierung, Dataset, Databinding hab ich eine ArtikelSerie auf CodeProject verfasst, inklusive lauffähiger Codebeispiele.
    Im dritten Teil wird eine Art "Bestellkatalog" entwickelt, wo man alle Waren sieht, und einfach reinschreiben kann, wieviel man davon will - das ergibt dann eine Bestellung.
    Also gewisse Ähnlichkeiten zu deinem Vorhaben sind gegeben.
    Schaus dir mal an, aber von Anfang an: codeproject.com/Articles/10309…l-Datamodel-for-Beginners

    Zu deiner konkreten Frage, "wie in der neuen Form die Menge auch von der Datenbank abgezogen werden soll" kann man nicht viel sagen, dazu müsste man einen genauen Einblick in dein Dataset, deine Datenbank, deinen Code haben.



    Achso - zum Prinzip kann man was sagen: Um "die Menge auch von der Datenbank abzuziehen" muss sie erstmal vom Dataset "abgezogen werden". Dann das Dataset gegen die Datenbank updaten, und abgezogen ist.

    So geht nämlich ganz allgemein Datenbank-Programmierung mittm Dataset: Erst befüllst du das Dataset aus der Datenbank, dann veränderst dein Proggi die Daten im Dataset, dann updatest du das Dataset gegen die Datenbank.

    Aber studiere das Tut, und lass die Db erstmal weg. Das Tut zeigt auch, wie man abspeichert ohne Db, was erstmal viel einfacher ist.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Hi VaporiZed, es funktionier Super !!! Danke dir...
    Habe die Spalte " MMENGE " von Tabelle Teile als MMENGETextbox in die Form gezogen, daneben eine neue Textbox1 angelegt.
    Einen Button " Speichern " hinzugefügt mit dem Code :

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. MMENGETextBox.Text = MMENGETextBox.Text - Integer.Parse(TextBox1.Text)
    3. If MessageBox.Show("Wollen Sie ihre Änderungen wirklich Speichern..?", "Sie haben Änderungen an der Datenbank vorgenommen..!!!", MessageBoxButtons.OKCancel) = Windows.Forms.DialogResult.OK Then
    4. Beep()
    5. Try
    6. Me.Validate()
    7. Me.TEILEBindingSource.EndEdit()
    8. Me.TableAdapterManager.UpdateAll(Me.TeileDataSet)
    9. Refresh()
    10. Catch ex As Exception
    11. End Try
    12. End If
    13. End Sub


    CodeTags gesetzt ~VaporiZed

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

    andi-n schrieb:

    MMENGETextBox.Text = MMENGETextBox.Text - Integer.Parse(TextBox1.Text)
    Oh my goodness 8|
    Bevor Du weitermachst, bitte die empfohlenen VS-Einstellungen verwenden.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Eine Frage endet in meiner Welt mit einem Fragezeichen. Daher sehe ich keine Frage.
    Dein vermuteter Ist-Zustand:
    • In Form2 (bitte zeitnah an einer sinnvollen Benennung Deiner Controls und Forms arbeiten) erhältst Du bereits korrekte Werte aus Word (warum eigentlich Word?) in Dein Form. Du importierst also Daten von Word nach Form2.
    • Du willst einen gegebenen Wert in Form1 in eine Word-Datei reinschreiben, also Daten exportieren.
    Ist dem so?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ja, ich Exportiere die Werte aus Form 2 " sind alles Textboxen " zu Word.
    Alles klappt Super, nur brauche ich noch von Form1 den Text aus der Textbox " BEZEICHTextBox.Text ".
    Hier mal ein Code mit der Textbox " ANSPRECHTextBox.Text " die in Form2 liegt wo alles funktioniert :

    'Insert a paragraph at the end of the document.
    '** \endofdoc is a predefined bookmark.
    oPara2 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range)
    oPara2.Range.Text = ANSPRECHTextBox.Text
    oPara2.Format.SpaceAfter = 6
    oPara2.Range.Font.Size = 16
    oPara2.Range.InsertParagraphAfter()

    Nur wie gesagt schaffe ich es nicht die Textbox " BEZEICHTextBox.Text " die in Form1 ist mit einzubinden.
    Hoffe habe mich verständlich ausgedrückt...
    1. Bitte unterscheide nicht nur gedanklich, sondern auch in Deinen Posts Container und deren Inhalt:

    andi-n schrieb:

    ich Exportiere die Werte aus Form 2 " sind alles Textboxen "
    Nein. Werte und TextBoxen sind hier zwei unterschiedliche Dinge. TextBox = ein Container. Wert = Inhalt des Containers. Du exportierst keine TextBoxen, sondern die Textinhalte der TextBoxen. Mag sein, dass Du das meinst. Aber wenn Du es nicht schreibst, führt das auf Dauer hier zu Missverständnissen und Frust, weil man irgendwann aneinander vorbeischreibt und man immer wieder zu lesen bekommt "Ja, hab ich doch so und so gemeint."
    2. Bitte verwende CodeTags (<= dies ist ein anklickbarer Link zum Thema!). Code im Fließtext ist viel schwieriger zu verstehen.
    3. Von wo aus willst Du den Text aus Form1 ins Worddokument schreiben? Von Form1 aus oder von Form2 aus?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Die saubere Variante: Wenn Du Form2 aus Form1 her aufrufst, übergibst Du den gewünschten Wert an eine passende Form2-Methode.
    Wie rufst Du von Form1 bisher Form2 auf, um Form2 anzuzeigen. Und wie geschrieben: Bitte für Deine Antwort CodeTags verwenden.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hi VaporiZed, sorry das wusste ich noch nicht mit diesen 30 Min.
    Danke

    Hi VaporiZed,

    in Form1 rufe ich die Form2 so auf:

    VB.NET-Quellcode

    1. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    2. Dim Form2 As New Form2
    3. Form2.Show()
    4. End Sub


    Beiträge zusammengefasst und CodeTags gesetzt ~VaporiZed

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

    Ich hoffe, dass Du mir das jetzt nicht übel nimmst, aber da Du es leider bisher immer noch nicht selber gemacht hast und ich Deinen Post nachbearbeiten musste, nochmal ganz dezent zum Mitlesen und Verstehen:

    Bitte selbständig CodeTags in Deine Posts einfügen, wenn Du Code postest. Code im Fließtext ist <X

    Danach weiter im Thema: Der Aufruf ist schonmal gut. Wenn man von der Benennung der Form- und Button-Klassen absieht.
    Jetzt kannst Du eine Methode in Form2 erstellen, z.B.

    VB.NET-Quellcode

    1. Private AdditionalText As String
    2. Sub SetData(AdditionalText As String)
    3. Me.AdditionalText = AdditionalText
    4. End Sub


    Dann kannst Du Deine Form2-Erzeugungsmethode ergänzen:

    VB.NET-Quellcode

    1. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    2. Dim Form2 As New Form2
    3. Form2.SetData(BEZEICHTextBox.Text)
    4. Form2.Show()
    5. End Sub

    Und dann kannst Du in Deiner Exportfunktion AdditionalString mit dazupacken.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.