Hilfe bei Darstellung von Daten aus DataSet auf Form (mein Programm sieht kacke aus)

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

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

    Oh verzeihung.
    Die beiden Subs sind gleich, bis auf diese Zeile 7. Die ist in meiner Async Sub natürlich enthalten und in der "normalen" nicht.
    Wenn ich die Zeile auskommentiere bekomme ich einen Fehler, dass Await fehlt.

    Den Delay habe ich erhöht - immer eine null mehr. Aber selbst bei 10.000 - was ja 10 Sekunden sind, passiert nichts anderes.
    Es kommt allerdings auch nicht zu einem spürbaren Delay bei der EAN Code Suche.
    Auch mit einem Delay von 100.000 passiert nüscht.

    edit: (uppsala).

    VB.NET-Quellcode

    1. If TBAmount.Text = "" Then
    2. Await Threading.Tasks.Task.Delay(100) 'here we go!

    Wenn TBAmount.text Inhalt hat...

    Also wenn die Bedingung erfüllt ist, dann klappt es auch mit einem Delay von 1.

    Es wird aber nicht immer die Menge hochgezaählt.
    Es erscheint in der AmountTB kurz eine 1, die aber sofort wieder verschwindet. Auch im DGV wird keine Menge angezeigt.
    Das ganze DGV Selektieren funktioniert aber auch wunderbar, wenn ich das gesamte AmountTB.TextChanged Event auskommentiere.
    Eventuell könnte es ja eine Lösung sein, mir hier ein anderes Event für auszusuchen, oder den Code nach erhöhen manuell auszuführen.
    Ich teste mal.
    Wenn ich den Code schrittweise durchgehe, wird die TBAmount.TextChanged Sub manchmal durchgegangen, manchmal nicht.
    Der Code ist aber irgendwie immer ausgeführt - also das LBL für Bestellsumme wird geöndert.

    Edit: Ja!!! Das klappt.
    Ich habe nun das TBAmount.TextChanged Event entfernt.
    Den Inhalt des Events habe ich in eine "normale" Sub gepackt. Wenn ich diese nun aufrufe:

    VB.NET-Quellcode

    1. 'EAN8 zusammenbauen
    2. If SearchEAN8 AndAlso Ean.Length > 7 Then
    3. If Ean.Length > 8 Then
    4. EAN8 = Ean.Substring(0, 8)
    5. Else
    6. EAN8 = Ean
    7. End If
    8. End If
    9. 'EAN8 suchen
    10. If EANSearch(EAN8) Then
    11. 'Changecategory()
    12. Ean = ""
    13. If AutoIncrement Then
    14. AddAmount()
    15. ChangeOrderValue()
    16. End If
    17. Exit Sub
    18. End If

    passiert was es soll.

    Natürlich hab ich diesen Aufruf dann auch hinter die Button Klicks des NumPads (rechts) geklatscht.
    Außerdem muss ich mir die Sub ansich nochmal anschauen und ggf etwas ändern (z.B. nicht auf den Inhalt der AmountTB zugreifen, sondern auf SelectedArticle.Amount)

    Aber könnte das eine Lösung sein?

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „DerSmurf“ ()

    Ich behaupte mal, das liegt daran wie du das DataSet in der Form registrierst - außerdem warum arbeitest du mit 2 DataSets? Ich
    würde dir empfehlen auf die Helpers von ErfinderDesRades zurückzugreifen. Dann noch einen Generalimport deines DataSets und beim
    Aufruf der Form das DataSet dort auch registrieren. Ich kann dein "nicht selektieren" der entsprechenden Row nirgends in meiner Anwendung nachvollziehen,
    läuft alles wie es soll. bei deiner Demo-Anwendung bleibt die Markierung oben an erster EAN stehen, egal was ich suche.

    Ich vermute dass sich da mehrere dts-registrierungen in die quere kommen - du weißt ja auch andere Quellen den BS zu beim Aufruf von neworders
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    tragl schrieb:

    bei deiner Demo-Anwendung bleibt die Markierung oben an erster EAN stehen, egal was ich suche.

    Wenn du von der Demo Anwendung aus Post 11 redest, dann ist das Verhalten bei mir anders.
    Denn hier klappt es wie es soll.

    In der anderen DemoAnwendung Post 14 - klappt es ebenfalls, wenn ich das TBAmount.TextChanged Event entferne.
    hmm. Nagut, es scheint keine Einwände zu geben.
    Dann habe ich jetzt das TBAmount.TextChanged Event gelöscht und durch eine Sub ersetzt, die ich im Code Aufrufe.
    Nun ändert sich ja die Gesamtsumme nicht mehr, wenn ich in TBAmount mit der Tastatur etwas eingebe.
    Da ich dies aber noch nie gemacht habe, sondern immer nur mit den Buttons auf der Form, habe ich die Textbox in ein Label umgewandelt.