vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Verarbeitung Abbrechen 
Autor: crosstravel
Datum: 14.04.20 18:46

Hallo,

ich habe ein kleines Problem bezüglich der abnormalen Beendung eines Programmes. Ich habe auf
der Form einen Abbrechen>-Button. Hier close ich alle Records und gehe mit Unload Me auf das
Hauptbild - jedenfalls sollte es so sein.

In Wahrheit springt die Steuerung in die Plaus-Prüfung eines Eingabefeldes, was zu einem ungewollten
Verhalten führt. Ich habe extra eine Abfrage auf Abbruch an den Anfang der Plaus-Routine gestellt - aber diese Weiche wird nicht gesetzt. Nachstehend die kleine AbbruchRoutine.

 
Private Sub bvtnAbbrechen_Click()
     bAbbruch = True
     FileClose                          ' Schliessen aller Recordsets
     Unload Me
End Sub
Kann mir jemand einen Rat geben?

Danke
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verarbeitung Abbrechen 
Autor: Wobi
Datum: 15.04.20 02:50

Hallo Rainer,
wie bzw. wann wird die Plausibilitätsprüfung des Eingabefeldes denn ausgelöst?
Wenn du die z.B. über z.B. .lostFocus, .validate, .change aus löst, dann wird das zuerst abgearbeitet bevor das click Event des Abbrechen Buttons an die Reihe kommt.

Sollte es jedoch ein Zeitproblem innerhalb deiner Plausibilitätsprüfung sein, könnte DoEvents helfen. Siehe z.B.:
https://www.vbarchiv.net/tipps/tipp_2301-doevents-gezielt-und-nur-wenn-notwendig-einsetzen.html

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verarbeitung Abbrechen 
Autor: crosstravel
Datum: 15.04.20 07:18

Hallo Frank,

es wird in einem Validate ausgelöst. Hier wird festgestellt, dass ein Eingabefeld keinen gültigen Werrt enthält. Der Benutzer wird durch eine Meldung darauf hingewiesen und er kann entweder den korrekten Wert setzen oder die Verarbeitung abbrechen.

Das Problem tritt auf, wenn er den Abbrechen-Button klickt, ohe vorher einen Wert in das Feld eingetragen hat. Die Steuerung kreist dann immer zwischen Validate und Abbrechen. das bAbbruch wird dann überhaupt nicht gesetzt.

Gruss
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verarbeitung Abbrechen 
Autor: ModeratorDieter (Moderator)
Datum: 15.04.20 09:05

Evtl. solltest du bei dem Abbrechen Button die CausesValidation Eigenschaft einfach auf False setzen.

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verarbeitung Abbrechen 
Autor: crosstravel
Datum: 15.04.20 10:10

Hallo Dieter,

ich habe nun die CausesValidation wie folgt eingebaut. Beim Klick auf den Abbruch-Button wird aber direkt Validate-Routine nochmals durchlaufen; das VausesValidate = False wird nicht ausgeführt. Ist
es vielleicht am falschen Ort definiert.

Der Benutzer muss die Freiheit haben, entweder einen gültigen Wert zu wählen oder die Verarbeitung abzubrechen.

Gruss
Rainer


Private Sub btnAbbrechen_Click()
     With sevWerbe
        .CausesValidation = False
     End With
     FileClose                          ' Schliessen aller Recordsets
     Unload Me
End Sub
Private Sub sevWerbe_Validate(Cancel As Boolean)
    Cancel = False
 
    If IsNull(sevWerbe) Or sevWerbe = "" Then
        MsgBox "Erfassen Sie bitte zwingend die Werbeart"
        Cancel = True
        Exit Sub
     End If
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verarbeitung Abbrechen 
Autor: ModeratorDieter (Moderator)
Datum: 15.04.20 10:44

Nein, das geht so nicht.
Du musst die Eigenschaft direkt im Form_Load oder bereits zur Entwurfszeit festlegen. Diese Eigenschaft bewirkt, dass ein Validate-Ereignis anderer Controls NICHT ausgelöst wird, wenn der Button geklickt wird / den Fokus erhält. Und genau das willst du doch erreichen.

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verarbeitung Abbrechen 
Autor: crosstravel
Datum: 15.04.20 11:26

Hallo Dieter,

ich habe jetzt testhalben das causesvalidation = false in Form_Load eingebaut. Aber dann läuft die Steuerung überhaupt nicht mehr in die Validation. Die Prüfungen müssen aber durchgeführt werden - nur soll der Benutzer im Fehlerfall entscheiden können, ob er den Wert korrgiert/erfasst oder die Verarbeitung abbricht.

Ich habe auch versucht, die causesvalidation = false in den Fehlerzweig einzubauen; dann zeigt es jedoch keine Wirkung. Aber hier wäre es richtig; nur im Fehlerfall und wenn der User abbrechen will, soll die Validierung unterbunden werden.

Gruss
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verarbeitung Abbrechen 
Autor: ModeratorDieter (Moderator)
Datum: 15.04.20 11:27

Sorry, aber das verstehe ich jetzt absolut nicht.
Wozu ein Abbrechen-Button, wenn dieser nur bedingt verwendet werden kann?

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verarbeitung Abbrechen 
Autor: crosstravel
Datum: 15.04.20 16:48

Hallo Dieter,

vielleicht habe ich michnicht klar ausgedrückt; aber die Situation ist ziemlich simpel.

Ein Benutzer muss z.B. ein bestimmtes Merkmal in ein Feld eingeben. Er ist plötzlich unsicher, welches Merkmal as Richtige ist und will das zunächst abklären. Deshalb will er die Verarbeitung abbrechen um sie später, nach Vorlage der fehlenden Informationen, wieder aufzunehmen.

Deshalb benötigt er eine Möglichkeit, den Abbruch durchzuführen.


Gruss
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verarbeitung Abbrechen 
Autor: ModeratorDieter (Moderator)
Datum: 15.04.20 18:44

Aber genau das würde doch auch dann so ablaufen, wenn du beim Abbrechen Button die besagte Eigenschaft auf False setzt!

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verarbeitung Abbrechen 
Autor: Wobi
Datum: 16.04.20 02:11

Hallo Rainer,

Zitat:


Ein Benutzer muss z.B. ein bestimmtes Merkmal in ein Feld
eingeben. Er ist plötzlich unsicher, welches Merkmal as
Richtige ist und will das zunächst abklären. Deshalb will er
die Verarbeitung abbrechen um sie später, nach Vorlage der
fehlenden Informationen, wieder aufzunehmen.


Das ist ja eine übliche Situation.
Aber von welchem Abbrechen Button reden wir hier eigentlich?

Du hast eine einfache MsgBox, aber gar keine Möglichkeit den User da reagieren zu lassen, du zeigst ihm nur den Hinweis, dass er einen gültigen Wert eingeben soll. Wenn es dir um genau dieses Feld geht, musst du die MsgBox so gestalten, dass er genau dort wählen kann was er machen möchte und nirgendwo anders. Aber auch das kann man anders machen, siehe unten....

So wie ich das aber verstanden habe, hast du irgendwo auf deinem Formular einen anderen Abbrechen Button der nicht nur für dieses Feld gelten soll, sondern für den Abbruch des Formulars allgemein. Gehe ich da richtig in dieser Annahme?

Nehmen wir als simples Beispiel die Erfassung eines Kunden wo eine Kontaktadresse notwendig ist (Pflichtfeld)
Da hat er Telefon und E-Mail zur Auswahl. Beim E-Mail Eingabefeld machst du eine Plausibilitätsprüfung, ob die E-Mail Adresse gültig sein könnte oder eben auch nicht. Wenn nicht, dann ist das Feld uninteressant du leerst es wieder und der User kann eine Telefonnummer eingeben. Ist auch diese ungültig nach entsprechender Prüfung ebenso. Also jedes Feld wird für sich behandelt.

Du hast ja irgendwo auch eine Möglichkeit die Daten des ganzen Formulars zu speichern. Spätestens da musst du prüfen, ob alle Pflichtfelder ausgefüllt sind. (Gültigkeitsprüfung war ja schon vorher) und wenn da etwas fehlt musst bzw. solltest du dem User anbieten die Verarbeitung abbrechen zu können weil er später noch Informationen nachtragen möchte.

Also die bisherigen richtigen Daten irgendwo zwischenspeichern, in der DB entsprechend kennzeichnen usw. Wenn er den Datensatz später vervollständigt, alles ok ist kannst du ihn "scharf schalten"

Nur das ganze Formular ab zu brechen oder auch das einzelne Feld (und das Formular stehen lassen) ist nicht komfortabel für den User, denn du weißt ja nicht wann er die noch fehlenden Informationen zur Verfügung hat. (In 10 Minuten, nach dem Wochenende, nach dem Urlaub)

Also beschreibe doch mal was wann genau der User abbrechen können soll und warum genau ein Feld so entscheidend ist.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verarbeitung Abbrechen 
Autor: crosstravel
Datum: 16.04.20 06:50

Hallo Dieter,

ich habe das CausesValidation nun direkt bei der Inhaltsprüfung eingebaut. Die Fehlermeldung kommt und der Benutzer kann über den Abbruch-Button die Verarbeitung des Formulars abbrechen. Danke.

Private Sub sevWerbe_Validate(Cancel As Boolean)
    Cancel = False
 
    If IsNull(sevWerbe) Or sevWerbe = "" Then
       Aktion = MsgBox("Eingabe zwingend, erfassen?", vbOKCancel + vbCritical, _
         "Eingabe")
       If Aktion = vbCancel Then
          sevWerbe.CausesValidation = False
          Exit Sub
       Else
          Cancel = True
          Exit Sub
       End If
     End If
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verarbeitung Abbrechen 
Autor: ModeratorDieter (Moderator)
Datum: 16.04.20 06:54

Das ist Quatsch! Die CausesValidation Eigenschaft muss doch beim Abbrechen Button gesetzt werden. Und zwar am besten im Form_Load oder zur Entwurfszeit!

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verarbeitung Abbrechen 
Autor: crosstravel
Datum: 16.04.20 17:37

Hallo Dieter,

danke für Dein Feedback. Ich habe die CausesValidation Eigenschaft nun auf dem Button und im Form_Load gesetzt. Es funktioniert.


Hab einen schönen Abend
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Verarbeitung Abbrechen 
Autor: crosstravel
Datum: 17.04.20 07:56

Hallo Frank,

Deine Beschreibung ist vollkommen korrekt. Genauso läuft die Erfassung. Die Daten sind, wo immer möglich, gespeichert und der Benutzer kann nach dem Abbrechen der Verarbeitung genau da wieder aufsetzen.

Das war jedoch nicht das Problem. Wenn auf einem zwingenden Eingabefeld bei der Validierung ein Fehler festgestellt wird, kann der Benutzer im Ausnahme^fall (normalerweise wird der Feldinhalt ja korrigiert) die Erfassung nicht über einen Abbrechen-Button auf dem Formular beenden. Der Cursor bleibt einfach in dem zu prüfenden Feld stehen.

Dieter hat mir hier den richtigen Weg zeigen können. Dem Abbrechen-Button in Form_Load oder beim Entwurf die Eigenschaft causesvalidate = false zuweisen - dann kann der Abbruch durchgeführt werden.

Gruss
Rainer
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel