DateTimePicker1.value in textbox ausgeben ? Geht das ?

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von konstrukt.

    DateTimePicker1.value in textbox ausgeben ? Geht das ?

    Hallo zusammen!
    ich bin nagelneu hier im Forum und leider auch in Visual Basic ;(
    ich programmiere mir gerade ein eigenes Inventur-Check Programm und
    stoße dabei aktuell auf eine Grenze meines Wissens - ich hoffe, jemand kann
    mir helfen, da es sicherlich nur ein kleiner codeschnipsel wäre ?

    folgende konstellation :

    ich habe textbox1,textbox2,textbox3
    und einen datetimepicker

    ziel : ausgabe des gewählten datetimepicker1.value.DAY (also nur der tag) in textbox1.value (aber wenn möglich nur 15.12), in textbox2 dann textbox1 +1 ?

    Quellcode

    1. Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    2. Dim starttag As DateTime = DateTimePicker1.Value
    3. starttag = New DateTime(starttag.Day)
    4. TextBox1.Text = starttag.Day


    DAS funktioniert nicht, bringt aber auch keine Fehlermeldung ? was mache ich falsch? :thumbdown:

    lg und danke für jede hilfe schonmal!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „konstrukt“ () aus folgendem Grund: rechschreibfehler...pardon

    Allgemein bei Datentypen die einen Timestamp beinhalten, kannst du auf die ToShortDateString() oder ToShortTimeString() Methode zurückgreifen. Wenn du wirklich nur Tag+Monat haben willst, kannst du dies anhand der LastIndexOf('.') des Ausgabestrings herausfiltern.

    dateTimePicker1.Value.ToShortDateString();
    dateTimePicker1.Value.ToShortDateString().Substring(0, dateTimePicker1.Value.ToShortDateString().LastIndexOf('.'));



    Tipp: Versuch deinen Controls immer sprechendere Namen zu geben, da du spätestens wenn deine Projekte komplexer werden, auf Probleme stoßen wirst.

    VB.NET-Quellcode

    1. TextBox1.Text = DateTimePicker1.Value.ToString("d.M")

    Das sorgt für eine Ausgabe von Tag und Monat (jeweils ohne führende Nullen) abgetrennt durch einen Punkt. @Diversity: Wenn man Datumse per Stringmethoden zerschneidet, um an spezielle Werte zu kommen, macht man was falsch.

    Zu den Formaten siehe diese Liste.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.

    VB.NET-Quellcode

    1. Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    2. Dim starttag As DateTime = DateTimePicker1.Value
    3. TextBox1.Text = starttag.Date.AddDays(1).ToString("d")
    4. End Sub
    ist natürlich ziemlicher Crap, denn das Ändern des Textes bewirkt ja gleich ein neues TextChange-Event.

    Lukas schrieb:

    @Diversity Wenn man Datumse per Stringmethoden zerschneidet, um an spezielle Werte zu kommen, macht man was falsch.
    Ok, wenn man direkt über d.M. darauf zugreifen kann, ist dies natürlich besser. Jedoch wenn man nicht das gesamte Datum sondern nur Tag+Monat speichert (langfristig gesehen), ist das Programm meiner Meinung nach nicht für die längere Nutzung gedacht, heißt man macht so oder so was falsch :)
    Puh, ich glaub ich geh erstmal drüber schlafen :sleeping:

    also momentan funktioniert es noch nicht leider

    der code

    Quellcode

    1. Private Sub TextBox289_TextChanged(sender As Object, e As EventArgs) Handles TextBox289.TextChanged
    2. TextBox289.Text = DateTimePicker1.Value.ToString("d.M")
    3. End Sub
    4. End Class

    liefert nur eine leere textbox :/ ich glaub es ist schon zu spät heute !

    wahrscheinlich hab ich nen DIM vergessen?

    Danke erstmal an alle Helfer!
    :thumbup:

    An sich funktioniert das prima. Ich denke das Problem liegt dort, dass bei jeder Zuweisung das Event nochmals ausgelöst wird, was erstens nicht sinnvoll ist und zweitens auch solche Nebenwirkungen haben könnte.

    Abgesehen davon fällt mir auf, dass diese TextBox die 289. auf deiner Form sein könnte. Eine solch hohe Anzahl an Controls deutet auf einen Konzeptsionsfehler hin. Wozu brauchst du so viele Controls? Des Weiteren sollten Controls nach ihrem Zweck benannt werden, und nicht diese leeren Default-Namen behalten.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Hallo Lukas,
    ja da hast du recht : die wahrheit ist, ich habe vor zig jahren mal quickbasic programmiert.. unter dos... und seither nichts mehr -.- ohje, allerdings habe ich eine riesigie excel tabelle vor mir (selbst erstellt) mit zig formeln und nem makro (vba) . nun wollte ich das ganze sehr gern auf visual basic transponieren. es geht um einen inventur rechner, der mir verschiedene fehlerquellen anzeigen kann (also praktisch die arbeitsschritte, die ich mathematisch im echten leben hätte, möchte ich nun mit vb erstellen..
    Die Excel tabelle ist soweit fertig, funktioniert auch und spart mir 8 stunden! arbeit, also rentiert es sich. allerdings ist das ein mammut projekt, da ich eine liste (gui) zur eingabe brauche die jeweils von monatsanfang bis monatsende geht. somit ergab sich für mich dieser hohe textboxen wert.
    ich muss wohl die gui anders gestalten, denn wie du sagst, wird später jede zeile einer spalte eine gewisse formel bekommen..
    übrigens :
    ich habe den von dir geposteten code bei mir bisher nicht unter der sub datetimepicker , sondern in der sub textbox289 - spielt das eine rolle wo das abgehandlet wird?

    mfg u vielen dank! Ich probier es heute nochmal bis es geht :)
    :!:
    Ich habe es nicht ausprobiert, aber es könnte durchaus eine Rolle spielen, wenn du bei jeder Änderung des Textes diesen neu setzt und das Event folglich nochmal ausgelöst wird. Damit stößt du eine Endloskette an.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Ich denke, dass hat EDR schon beschrieben:
    [VB 2013] DateTimePicker1.value in textbox ausgeben ? Geht das ?
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    :S richtig!

    so. der folgende code funktioniert :
    (abgesehen davon, dass ich die gui eigt neu gestalten muss und die textboxen aktuell nicht korrekt bezeichnet sind..)


    Quellcode

    1. Private Sub DateTimePicker1_ValueChanged_1(sender As Object, e As EventArgs) Handles DateTimePicker1.ValueChanged
    2. TextBox289.Text = DateTimePicker1.Value.ToString("d.M")
    3. TextBox154.Text = DateTimePicker1.Value.ToString("D")
    4. TextBox288.Text = DateTimePicker1.Value.AddDays(1).ToString("d.M")
    5. TextBox168.Text = DateTimePicker1.Value.AddDays(1).ToString("D")
    6. End Sub


    aber es ist schon recht kompliziert, da war ja einfacher in excel eine datumszeile zu erstellen :/ puh
    ich fange nochmal von vorn an, beim aufbau der tabelle...

    vielen dank aber für das datetimeproblem! :thumbup:

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

    du solltest dich dringend mti den grundlagen der Datenbänkerei beschäftigen, sowie mit typisiertem Dataset, databinding und DatagridView.
    Beschäftige dich nicht mit tatsächlichen Datenbanken - das sollte man erst beginnen, wenn man die annere Thematik beherrscht, denn sonst fängt mans ungeschickt an und verbaut sich den Zugang zu vorgenanntem.
    die relationale GrundIdee
    Daten laden, speichern, verarbeiten
    ja das stimmt, wenn ich es mir recht überlege , beherrsche ich in visualbasic momentan nichtmal genug, ich krieg zwar evtl die gui hin, aber sobald es an code geht, happerts. und ich bin ohnehin die ganze zeit am überlegen, wie ich meine mega excel tabelle grafisch in vb übertrage...

    hmm also gut passt auf, ich schicke euch mal nen screenshot, wie ich momentan meine daten tag für tag eingebe (das excel outfit wurde explizit dafür zelle für zelle angefertigt und muss so beibehalten werden, um fehler zu finden)

    und ihr sagt mir, WIE ihr sowas in VisualBasic lösen würdet :

    eingabemaske1,jpg : hier gebe ich die daten ein, die die mitarbeiter mir aushändigen am monatsende
    (an welchem tag, wurde was verkauft, und zu welchem zweck, falls nicht verkauft, herausgegeben)

    eingabemaske2.jpg : hier gebe ich die SOLL Inventurliste ein, wie sie mir auf DIN A4 vorliegt..

    ausgabemaske1.jpg : hier vergleicht excel die daten aus eingabemaske 1 mit eingabemaske 2 und gibt aus, ob korrekt bepreist wurde,
    ob korrekt zusammengerechnet wurde, ob korrekt abgezogen wurde, ob lieferungen korrekt eingetragen wurden

    und dann gibts noch 6 weitere tabellenblätter.. also ich glaub das projekt wird mit visual basic zu gross, oder was meint ihr?
    Wie würdet ihr hier eine GUI gestalten (am besten, ohne ständig blättern zu müssen, da sehr viele zeilen und spalten)

    lg und besten dank für ratschläge!

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

    vonne Datenmenge her ist das für VB kein problem.

    Problematisch ist, dass du Kalender-Ansichten willst, also eine Art Kreuztabelle, also eine Tabelle, bei der sowohl die Zeilenzahl als auch die Spaltenzahl variieren kann.
    DatagridView kann nur db-artige Tabellen, also beliebig viele Zeilen, aber die Spalten-Anzahl ist fix.
    Dafür kann man aber ParentChild-Views komponieren, die leisten funktional das gleiche, sehen aber ganz anners aus.

    Was also möglich wäre anzuzeigen, wäre eine Liste aller Datumse, und wenn man ein Datum anwählt bekommt man in einer 2. Tabelle die am Datum eingereichten Inventur-Informationen präsentiert.

    aber fraglich, ob du je soweit kommst - wie gesagt, die Vorgehensweise wäre
    1. relationales Denken verstehen: die relationale GrundIdee
    2. relationales Datenmodell erstellen, vorzugsweise im Dataset-Designer
    3. die Möglichkeiten der vier Views erfassen
    4. Daten laden, speichern, verarbeiten verstehen und meine Helpers-Projekten einbinden (einfachste Möglichkeit von Laden und Speichern)
    5. datengebundene Oberfläche designen, nach den 4Views-Gesichtspunkten