Lagerplatzverwaltung Visualisierung

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Zendom.

    Lagerplatzverwaltung Visualisierung

    Hallo zusammen :)

    ich bin gerade dabei, ein Lagerplatzverwaltungstool inklusive Visualisierung zusammenzubasteln.
    Meine Anwendung habe ich bereits in Excel VBA realisiert und diese Funktioniert auch einwandfrei.
    Nun möchte ich gerne meine Anwendung in VB.net schreiben und stoße an meine Grenzen, da ich davor noch nie mit VB.net gearbeitet habe.

    Anbei ein Screenshot von meiner Anwendung:


    Ich konnte das Layout der Anwendung 1:1 nachbauen, nun weiß ich nicht, wie ich in vb.net realisieren kann, dass nach dem Einscannen von dem Kundenauftrag, Endtermin und Lagerplatz eine Automatische Einlagerung stattfindet also -> Anhand dem Lagerplatz wird die richtige Textbox gefunden und der Kundenauftrag in die Textbox eingetragen -> anhand dem Endtermin soll die Textbox Farblich gekennzeichnet werden (rot,gelb,grün).

    Jeder Lagerplatz bietet insgesamt vier Plätze für Produkte, da maximal vier Produkte auf eine Palette passen. (Deswegen jeweils vier Textboxen pro Lagerplatz).

    Das Eingabefeld ordnet automatisch anhand der Formatierung der Eingabe, die Eingabe entweder zum Kundenauftrag, Endtermin oder Lagerplatz zu.

    Die Zuordnung zu den einzelnen Textboxen würde ich mit viel mühe irgendwie noch hinkriegen, aber wie Speichere ich diese Daten ab, damit diese beim schließen der Anwendung erhalten bleiben?

    Kann ich mit einer Access Datenbank arbeiten und wie würden das aussehen?

    Ich hoffe Ihr könnt mir behilflich sein.

    Vielen Dank und liebe Grüße
    Zendom

    *Thema aus dem WPF Bereich verschoben* ~NoFear23m

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

    Da du schreibst das du noch nie mit vb.net gearbeitet hast ist das schon ein grosses Vorhaben. Schon alleine die Sache mit dem scannen ist selbst für mich eine Herausforderung, da ich mit sowas auch noch nicht gearbeitet habe.

    Ich würde dir auf jede fall zu einem typisiertem Dataset raten und speichern dann in XML. Schau mal in den Tutorial Bereich @ErfinderDesRades hat ein ein paar super Tutorials dazu geschrieben. Wenn dir aber jegliche Grundlagen fehlen, wird es hart.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Willkommen im Forum. :thumbup:

    Zendom schrieb:

    Einscannen von dem Kundenauftrag
    ist kein Problem, wenn man es richtig macht.
    Ich nehme mal an, Du meinst einen Barcode-Scanner, wenn nicht, sag Bescheid.
    Die Dinger sind USB-Geräte und verhalten sich eine Tastatur. Hast Du Word offen und schreibst einen Brief und einer scannt einen Code ein, erscheint der Code an der Cursorposition.
    Sieh mal im Handbuch nach oder setze Dich mit der Scanner-Firma in Verbindung.
    Lass Dir einen Treiber schicken, der den Scanner in ein Seerial-Device umfunktioniert.
    Du ziehst ein SerialPort auf Deine GUI, parametrierst sie nach den Angaben des Herstellers und wartest im port.DataReceived-Event auf die Daten.
    Die hast Du nun genau da, wo sie hingehören und Du kannst damit tun, was Du tun musst.
    Da das SerialPort in einem anderen Thread arbeitet, musst Du den Empfang in den GUI-Thread invoken (such hier im Forum unter Invoke).
    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!
    Wenn ich das richtig lese ist der Punkt einscannen kein Problem des TE, sondern eher die Zuordnung in eine Textbox und der Speicherung des ganzen.
    Mir erschließt sich gerade nicht, woher die Info Lagerplatz/Endtermin kommt, da beide Felder für die Eingabe gesperrt zu sein scheinen. Oder ergibt sich das aus dem eingescannten Code?
    Hallo zusammen,

    wie AndPod schon erwähnt hat, ist das scannen und die automatische Zuordnung zu den jeweils richtigen Feldern (Kundenauftrag, Endtermin und Lagerplatz) kein Problem. Die drei Informationen werden jeweils als Barcodes eingescannt.

    Das Problem liegt darin, dass ich nicht weiß wie ich die eingescannten Daten in die richtigen Lagerplätze zuordnen kann bzw. wo überhaupt diese Daten gespeichert werden können, damit diese dauerhaft erhalten bleiben.

    Zum Vorgang:

    1. Kundenauftrag, Endtermin und Lagerplatz scannen.
    - Reihenfolge spielt keine Rolle, da die Eingabe anhand der Formatierung automatisch erkannt wird
    - Eingabe im Format ##-##-## = Lagerplatz
    - Eingabe im Format 99################ = Kundenauftrag
    - Eingabe im Format ##.##.#### = Endtermin
    - Die Textboxen werden mit dem eingescannten Daten befüllt und dienen nur dem Mitarbeiter als zusätzliche Information
    - Die Daten werden zusätzlich in Variablen abgespeichert

    2. wenn alle drei Daten eingescannt wurden, soll das Einlagern starten
    - anhand dem Lagerplatz, welches in der Textbox und in einer Variable steht, soll der richtige Lagerplatz und die 4 Textboxen die zum Lagerplatz gehören gefunden und befüllt werden (immer nur eine Textbox; 4 Textboxen weil auf eine Palette maximal 4 Produkte eingelagert werden können.
    - falls keine Textbox im Lagerplatz frei ist soll nicht eingelagert werden.
    - falls eine Textbox frei ist, soll der eingescannte Kundenauftrag in die Textbox geschrieben werden
    - anhand dem eingescannten Endtermin soll die Hintergrundfarbe von dem Textbox sich ändern.
    - Endtermin = heute -> Rot
    - Endtermin = in 3 Tagen -> Gelb
    - Endtermin = in mehr als 3 Tagen -> Grün

    Ich kann später kurz erläutern wie ich das unter Excel VBA gelöst habe.

    Gruß
    Zendom

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Zendom“ ()

    @Zendom Dann brauchst Du ne Datenbank, wo genau das drinne steht.
    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!
    Und ein typisiertes Dataset, welches aus der Datenbank befüllt wird.
    Für ein Einzelplatz-System und weniger als 20000 Datensätze kann man die DB auch weglassen, weil da ist der DB-Overhead grösser, als wenn man das typdataset direkt auf Platte speichert.

    Zum entwickeln sollte man die DB unbedingt auch weglassen, insbesondere als Anfänger.
    @Murdoc ich komme leider nicht weiter..

    ich habe nun ein DataSet mit einer Tabelle aufgebaut und mit der DGV kann ich Daten über ein Button

    Quellcode

    1. Me.LagerDataSet1.WriteXml(_datenPfad)
    in eine XML schreiben und auslesen.

    Wie kann ich nun den DataSet über Textboxen befüllen ohne in der DGV einträge vorzunehmen?

    Beispiel: txtbox_1, txtbox_2 und txtbox_3 in Spalte 1, Spalte 2 und Spalte 3 hinzufügen.

    Das läuft über DataBinding. Du weist einer TextBox eine Spalte der DataTable zu. Und dann wird bei Änderung des Tabelleninhaltes der TextBoxinhalt geändert. Und andersrum auch. Bedenke: Die Tabelle besteht aus Spalten und Zeilen. Die TextBox ist an eine Spalte geknüpft. Die ausgewählte Tabellenzeile wird durch die BindingSource-Position (BS-Pos) festgelegt. Die Spalten hast Du selbst gepostet*. Wenn Du also 3 Zeilen Deiner Tabelle hinzufügst, dann kommt als Tabelle - wenn man sie in nem DGV hätte - raus:
    Serialnummer
    Endtermin
    Lagerplatz
    Eilt
    123
    26.09.2019
    G1
    ja
    456
    11.11.2020
    K3
    nein
    789
    01.12.2019
    V4
    ja

    txtbox_1 enthält dann z.B. immer die Serialnummer jener Zeile, die von der BS festgelegt wurde. Setzt Dudie BS-Pos also auf 0, steht in der txtbox_1 123, setzt Du die BS-Pos auf 2, dann 789. Und wenn Du dann den Inhalt von 789 auf 666 änderst, ändert sich auch der entsprechende Wert in der DataTable.

    btw: "Serialnummer"? Sprachmischmasch. "txtbox_1"? Nicht sonderlich aussagekräftig. Und bitte Bilder forenintern über [+ Erweiterte Antwort] -> _|Dateianhänge|_ -> [Hochladen] posten.
    Bilder
    • DataBinding.png

      10 kB, 299×251, 401 mal angesehen
    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.
    Hallo VaporiZed,

    vielen Dank für deine Antwort. Ich werde mich später dran versuchen und mich nochmals Melden.
    Jetzt weiß ich wie ich Textboxen mit einer Tabelle verknüpfen kann.

    Aber wie bekommen ich das hin, dass wenn ich in eine Textbox (siehe Screenshot) z.B. Eingabefeld ein Wert eintrage, dass diese in die Tabelle eingetragen wird?
    Bzw. wenn alle drei Textboxen Kundenauftrag, Endtermin und Lagerplatz nach dem einscannen der einzelnen Barcodes befüllt wurden, diese Daten als ein neuer Datensatz abgespeichert und dann anhand dem Lagerplatz, die Serialnummer in der richtigen Textbox (in der Visualisierung) angezeigt werden.

    In Excel VBA bin ich folgendermaßen vorgegangen:

    Alle drei Daten gescannt -> sobald die drei Textboxen Kundenauftrag, Endtermin und Lagerplatz befüllt waren, die Daten in einem Excel-Sheet in bestimmte Zellen geschrieben. Diese Zellen waren mit den richtigen Textboxen in der Visualisierung verknüpft.

    Die richtigen Zellen habe ich mit einer Suche gefunden d.h. in meinem Excel-Sheet waren die Regale eingezeichnet mit der Lagerplatzbezeichnung. Nach dem einscannen vom Lagerplatz habe ich in dem Excel-Sheet nach der Lagerplatzbezeichnung gesucht und die nächsten vier Zellen über der Bezeichnung befüllt.


    Ehmm zur Bezeichnung -> txtbox_1 war nur ein Beispiel

    Gruß
    Ersin
    Bilder
    • Lagerplatzverwaltung.JPG

      279,81 kB, 1.913×1.112, 636 mal angesehen
    • Unbenannt.JPG

      247,62 kB, 1.321×949, 643 mal angesehen
    Du scannst ein Dokument ein. Wieviele Scanvorgänge sind das pro Dokument? 3, richtig? Ich vermute mal, dass Du erst das Feld "Eingabefeld" anwählst, den Scan vornimmst und dann die Daten in dem Eingabefeld stehen, richtig? Wenn dem so ist, musst Du nach der Eingabe (was bei mir angezeigt wird, indem am Ende eine Enter-Tastendruck per Scan erfasst wird) den Inhalt analysieren/parsen. Also schauen, was eingescannt wurde und das dann den erstmal ungebundenen TextBoxen zuordnen.
    Allerdings fehlt da noch eine Info:

    Zendom schrieb:

    Alle drei Daten gescannt -> sobald die drei Textboxen Kundenauftrag, Endtermin und Lagerplatz befüllt waren
    Hast Du die einzelnen Felder Kundenauftrag, Endtermin und Lagerplatz vor jedem Scan selber angewählt oder hattest Du Analyse-Code, der selber erkannte, was da eingescannt wurde?
    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.
    Genau, ich habe einmal Barcodes an den Regalen die ich einscanne um den Lagerplatz zu scannen und zwei Barcodes auf den Fertigungsaufträgen für die Kundennummer(Serialnummer) und den Endtermin.

    Zum Einlagern wähle ich erst den Button Einlagern aus.
    Danach aktiviert sich das Eingabefeld in der ich dann die drei scanns nacheinander vornehme, dabei spielt es keine Rolle was ich zuerst einscanne, da sich dahinter eine Logik versteckt, welche anhand dem Format von dem eingescannten zwischen den drei Daten unterscheidet und diese in die davor vorgesehenen Textboxen schreibt.

    Gruß
    Zendom
    Diese Erkennungslogik kannst Du ja übernehmen. Um dann Daten in Die DataTable zu schreiben, nimmst Du den klassischen Code: DeinDataSet.Lager.AddLagerRow(Serialnummer, Endtermin, Lagerplatz, Eilt). Fehlt dann Dir noch was an Infos?
    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.