Anweisungen werden übersprungen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von sven-teichmann.

    Anweisungen werden übersprungen

    Hallo,

    ich habe in einem aktuellen Programm (welches mit Online Datenbanken arbeitet) StatusStrip ein StatusLabel, dass anzeigen soll, was das Programm eben macht.

    Ich habe es hinbekommen, dass das StatusLabel beim Herstellen der Verbindung anzeigt "Verbindung zur Datenbank wird hergestellt..." und danach "Fertig". Jetzt habe ich aber folgendes Problem: Das StatusLabel wird nur manchmal auf "Verbindung zur Datenbank wird hergestellt..." geändert und manchmal bleibt es bei "Fertig" (obwohl noch keine Verbindung zur Datenbank hergestellt wurde), also es ist sozusagen dem Zufall überlassen, was das StatusLabel anzeigt. Woran könnte das liegen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „sven-teichmann“ ()

    sven-teichmann schrieb:

    Jetzt habe ich aber folgendes Problem: Das StatusLabel wird nur manchmal auf "Verbindung zur Datenbank wird hergestellt..." geändert und manchmal bleibt es bei "Fertig" (obwohl noch keine Verbindung zur Datenbank hergestellt wurde),


    Gab mal ein paar Infos zu deiner Verbindung.
    Datenbank, welche Komponenten verwendest du für die Verbindung usw.

    Normalerweise haben die Komponenten für die Verbindung einen Rückgabewert an dem man erkennen kann ob eine Verbindung hergestellt wurd bzw ob die Verbindung getrennt wurde.

    Ich denke es wird an der Art liegen wie du diesen Status überprüfst und nicht an der Verbindung ;)
    Nur um das herraus zu finden müsste man noch wiessen wie du den Text im StatusStrip setzt.
    Es geht mir nicht darum zu prüfen, ob eine Verbindung hergestellt ist, sondern dass wärend dem Verbinden angezeigt wird, dass er eine Verbindung herstellt.

    Wenn man einen Button drückt, wird folgender Code ausgeführt:

    VB.NET-Quellcode

    1. ToolStripStatusLabel1.Text = "Lade Tabelle Mitglieder..."


    Danach stellt das Programm eine Verbindung zur Datenbank her und zeigt mit folgenden Code Fertig... an:

    VB.NET-Quellcode

    1. ToolStripStatusLabel1.Text = "Fertig..."


    Mein Problem: er führt den Code "ToolStripStatusLabel1.Text = "Lade Tabelle Mitglieder..."" manchmal nicht aus, also es steht sofort Fertig... da, obwohl er noch am Verbinden ist.

    Ich hoffe, ich habe mein Problem jetzt verständlich gemacht.
    Wie man einem Label einen Text zuweit ist mir bekannt ...

    Es ging mehr um die ganze Methode...

    Versuche mal folgendes (ist nur ein Workarround und keine Lösung):
    Manchmal wird Code mit dem Hinweis "Nicht-Benutzer Code ..... übersprungen" übergangen.
    Warum das ist ist mir auch noch nicht klar :huh:

    Ein Versuch das zu Umgehen wäre Folgender:

    VB.NET-Quellcode

    1. DeinLabel.Text = ""
    2. DeinLabel.Text = "Lade Tabelle ..."
    3. DeinLabel.Text = ""
    4. DeinLabel.Text = "Fertig"


    Zu dem solltest du den einzelschritt Modus nutzen um zu sehen ob auch wirklich alle Anweisungen ausgeführt werden.

    Und noch was zum Codestil:
    Geb dem Kind einen Namen.
    Wenn du das Projekt in 2Monaten wieder öffnest weißt du wahrscheinlich nicht mehr wozu Button1 oder ToolStripStatusLabel1 sind.
    Aber wenn da steht btnVerbinden óder lblStatus usw ist es einfacher sich wieder in ein Projekt einzufinden. ;)
    Also, das hat leider nicht funktioniert und auch bei den Einzelschritten lässt er den Code manchmal aus...

    Ich gebe den "Kindern" einen Namen, nur da ich noch am Testen bin, habe ich das erstmal gelassen, weil ich das erstmal zum Laufen bringen will.
    Ja wie schon gesagt ich weiß selber nicht genau warum er diese Anweisungen dann überspringt.
    Kenne das auch nur vom Visual Studio bzw vb.net.

    Eventuell noch mal den Beitragstitel editieren und dort erwähnen das Anweisungen übersprungen werden.
    Vielleicht weiß ja jemand anderes warum das so ist.
    Ich habe nun etwas herumexperimentiert und herausgefunden, dass der Text eher seltener vor dem Verbinden mit der Datenbank geändert wird und großteils erst nach dem Verbinden mit der Datenbank geändert wird. Da aber dann ja wieder der Text "Fertig..." kommt, sieht es so aus, als ob der andere Text garnicht angezeigt wird.

    Wie kann ich das nun machen, dass das Ändern des Textes vor dem Verbinden mit der Datenbank passiert? Eventuell indem ich das Programm kurz warten lasse (mit dem Code wo sich das Programm nicht aufhängt).

    EDIT: Habe das mit der Wartezeit ausprobiert, den Code so umgeformt, dass das Programm nur Millisekunden wartet, dann nach jeder Stelle wo der Text geändert wird 1 Millisekunde warten lassen und nun funktioniert es!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „sven-teichmann“ ()