Textbox voll dann die nächste + sorry an Erfinder des Rades und Rod

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

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Sio_x.

    Textbox voll dann die nächste + sorry an Erfinder des Rades und Rod

    Hallo an alle,
    vorab erstmal eine Entschuldigung meinerseits an Erfinder des Rades und Rod für meine überzogene Reaktion. ;)

    Bin immer noch an dem Quittungsblock am basteln. Dieser ist einwenig "umgebaut" und läuft gut. Mein derzeitiges Problem ist, das die Daten aus diesem Block in das Kassenbuch übernommen werden. Egal was ich mache, das Kassenbuch übernimmt nur die ersten beiden Zeilen. Nebenbei arbeite ich mit MySettings um das Buch abzuspeichern. Mit Datenbanken muss ich mich noch befassen.

    Hier mal meinen Code. Wie gesagt er nimmt nur die ersten beiden Zeilen.

    Select Case MessageBox.Show("Ist es wirklich eine Einahme", "Überprüfung", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    Case Windows.Forms.DialogResult.Yes
    If DialogResult.Yes Then
    Form2.Show()
    End If

    If Form2.date1.Text = "" Then
    Form2.date1.Text = Date.Today
    ElseIf Form2.date1.TextLength > 0 Then
    Form2.date2.Text = Date.Today
    'bis hierhin nimmt er die Eingaben
    ElseIf Form2.date2.TextLength > 0 Then
    Form2.date3.Text = Date.Today
    ElseIf Form2.date3.TextLength > 0 Then
    Form2.date4.Text = Date.Today
    End If

    Ich werde es morgen ordentlich in einen Code hier verfassen.

    Vielleicht kann mir ja jemand helfen, ich wäre dankbar.

    Grüße aus Hamburg

    Friedhelm Mütze
    Bilder
    • snippi.PNG

      23,26 kB, 847×581, 132 mal angesehen
    • snippi_1.PNG

      10,85 kB, 674×377, 111 mal angesehen
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen
    Hallo @Mütze,

    bitte gib deinem Thread mal einen aussagekräftigen Titel und benutz die Code Tags. Siehe dazu auch: vb-paradise.de/index.php/Threa…ostID=1013285#post1013285

    Zum Thema: Was genau meinst du mit "übernimmt nur die ersten Zeilen"? Der Codeschnipsel soll bewirken, dass die nächste Zeile nach einer beschriebenen Zeile ein Datum bekommt? Und warum nutzt du keine DateTimePicker für das Datum? Da kann ja jeder eingeben was er lustig ist.
    Ich bin noch nicht hinter dein Problem gestiegen, was genau willst du machen und was genau funktioniert nicht?
    Bisher kann ich nur sagen, dass du umbedingt Option Strict On schalten solltest und deine Formen instanzieren solltest, bisher behandelst du sie als Baupläne.
    Außerdem ergibt die If in Zeile 3 keinen Sinn, du fragst nach dem Result der aktuellen Form aber ich schätze mal, du willst des Result von der Messagebox, welches du bereits mit der Case abdeckst.
    So nun zu dem Rest, willst du die Textboxen automatisch befüllen? Denn dann ist die If komplett fehl am Platz.

    LG

    Mütze schrieb:

    VB.NET-Quellcode

    1. If Form2.date1.Text = "" Then
    Nimm eine explizite Instanz der Form2 (Unterscheidung zwischen Namen und Instanz), gugst Du hier.
    Besser ist es, Du packst diese Validierung selbst in die Klasse Form2.
    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!

    Textboxen füllen

    Danke für die Antworten.
    Ich habe hier mal für das bessere Verständnis ein paar Bilder angehängt. Vorab, ich habe einen Quittungsblock und diese Daten sollen dann automatisch in das entsprechende Kassenbuch eingetragen werden.
    Hier mal ein paar Bilderchen aus denen auch verständlich wird, warum ich - @Rod - über die Form 4 an die Form2 muss.

    Bei snip_1 ist der Block, snip_2 - hier wurde gerechnet, snip_3 - dort erfolgt die Übertragung der Daten in das Kassenbuch - snip_4 - Abfrage des Kassenbuches (Einnahme / Ausgabe) - snip_5 - für die "Deppen" wie mich ;) nochmal die Abfrage ob es wirklich eine Einnahme ist. Und zum Schluss snip_6 das Kassenbuch, hier nur mit dem Datum versehen.

    Mit meinem Code versehen befüllt das Prog nur die ersten beiden Felder, siehe snip_6

    VB.NET-Quellcode

    1. Select Case MessageBox.Show("Ist es wirklich eine Einahme", "Überprüfung", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    2. Case Windows.Forms.DialogResult.Yes
    3. If DialogResult.Yes Then
    4. Form2.Show()
    5. End If
    6. End Select
    7. If Form2.date1.Text = "" Then
    8. Form2.date1.Text = Date.Today
    9. ElseIf Form2.date1.TextLength > 0 Then
    10. Form2.date2.Text = Date.Today
    11. End If
    12. 'Form2.date1.Text = Date.Today
    13. 'If Form2.date1.TextLength > 0 Then
    14. ' Form2.date2.Text = Date.Today
    15. 'Else
    16. ' Form2.date2.Text = Date.Today
    17. 'End If
    18. 'If Form2.txt_a1.TextLength > 0 Then
    19. ' Form2.txt_a2.Text = Form1.txt_nr.Text
    20. 'Else
    21. ' Form2.txt_a1.Text = Form1.txt_nr.Text
    22. 'End If
    23. 'If Form2.txt_bestand1.TextLength > 0 Then
    24. ' Form2.txt_bestand2.Text = Form1.comb_emmi.SelectedItem
    25. 'Else
    26. ' Form2.txt_bestand1.Text = Form1.comb_emmi.SelectedItem
    27. 'End If
    28. 'If Form2.txt_e1.TextLength > 0 Then
    29. ' Form2.txt_e2.Text = Form1.txt_gesamt.Text
    30. ' Form2.txt_au2.Text = "0,00"
    31. 'Else
    32. ' Form2.txt_e1.Text = Form1.txt_gesamt.Text
    33. 'End If
    34. 'Form2.txt_au1.Text = "0,00"
    35. 'Form2.txt_eap.Text = Form2.txt_e1.Text


    Ich dachte schon an eine Schleife, man würde sich ja dumm und duselig schreiben mit den ganzen If Anweisungen.

    Nebenbei suche ich nach der Erklärung / Video von Erfinder war es glaube ich, in dem beschrieben wird, wie ich den Code hier richtig einsetze, kann mir jemand einen Tip geben, wo ich das Video finde, oder zumindest, was ich hier eingeben Muss:
    [codevb=net]

    Ich hoffe, ich wurde einigermaßen verstanden.

    Grüße aus Hamburg

    Friedhelm Mütze
    Bilder
    • snip_1.PNG

      31,3 kB, 676×391, 122 mal angesehen
    • snip_2.PNG

      29,53 kB, 659×396, 102 mal angesehen
    • snip_3.PNG

      35,63 kB, 706×412, 109 mal angesehen
    • snip_4.PNG

      63,55 kB, 599×374, 119 mal angesehen
    • snip_5.PNG

      58,65 kB, 481×316, 108 mal angesehen
    • snip_6.PNG

      63,05 kB, 733×900, 115 mal angesehen
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mütze“ ()

    Mütze schrieb:

    warum ich - @Rod - über die Form 4 an die Form2 muss.
    Hatten wir schon: Gugst Du hier.
    Arbeite mit expliziten Instanzen!!!
    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!
    @Jörg - vielen Dank.

    @Rod, okay ich werde mich dort reinknien, irgendwie muss es ja gehen.

    Vielen Dank für eure Antworten. @Rod, danke das du antwortest, trotzdem kann ich mir vorstellen, das du auch schon von mir abgenervt bist, um das alles als Anfänger zu begreifen, bedarf es auch seine Zeit. Danke

    Grüße aus Hamburg

    Friedhelm Mütze
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen

    Mütze schrieb:

    irgendwie muss es ja gehen
    Du musst die Instanz dann als Property oder so in die Klasse reingeben.
    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!
    Ich glaube er versucht etwas zu prüfen und wird daraus nicht schlau, weil er alles mit elseif ausblendet. Er versucht (entschuldige, das ich hier in dritter Person über dich rede) die Liste darüber zu füllen..

    Quellcode

    1. If Form2.date1.Text = "" Then
    2. Form2.date1.Text = Date.Today
    3. ElseIf Form2.date1.TextLength > 0 Then
    4. Form2.date2.Text = Date.Today
    5. 'bis hierhin nimmt er die Eingaben
    6. ElseIf Form2.date2.TextLength > 0 Then
    7. Form2.date3.Text = Date.Today
    8. ElseIf Form2.date3.TextLength > 0 Then
    9. Form2.date4.Text = Date.Today
    10. End If


    Das funktioniert nur, wenn er das erste Datum befüllt, für das erste Datum, die anderen elseif werden übersprungen... wenn er nur das 2. Datum befüllt, dann funktioniert nur Datum 2... elseif heißt ja nicht umsonst sonstwenn... Zudem überschreibt er alle anderen Eingaben mit dem aktuellen Datum (ElseIf Form2.datex.TextLength > 0 Then).
    Ich denke, darin liegt sein Fehler Nummer 1.
    Der Fehler liegt vor allem, wie Rod sagte, in der fehlenden Instanz, daher muss das eh grundlegend geändert werden.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: