PDA

Vollständige Version anzeigen : Access 97: Wechsel der Datensätze im Formular verhindern? (oder variable Pflichtfeld)


MikeG2000
17.01.2003, 08:48
Hallo,

ich arbeite gerade an einer Testfallverwaltung. Wenn ich den Status der Testfälle verändere, sollen einige Felder in diesem Status zu "Pflichtfeldern" werden. Diese Felder werden dann nach der Aktualisierung nach Daten überprüft, und wenn sie NULL sind gibt es eine Fehlermeldung.

Mein Problem ist jetzt, dass ich den Wechsel der Datensätze nicht verhindern kann.

Die variablen "Pflichtfelder" werden zwar erkannt, allerdings kann man trotzdem zum nächsten Datensatz gehen.

Das "DoCmd.CancelEvent" habe ich schon ausprobiert, aber endweder wende ich es falsch an, oder es ist nicht der richtige Befehl. Eine super Alternativlösung wäre, wenn ich die Felder, die in der Tabelle nicht als Pflichtfelder deklariert sind, im Formular zu bestimmten Bedingungen zu Pflichtfeldern machen kann. Gibt es eine solche Voreinstellung?

Vielen Dank für die Hilfe.

Aquarii
17.01.2003, 09:42
Hallo,

vielleicht hilft Dir dieser Beitrag weiter:

http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=84070

MikeG2000
17.01.2003, 09:52
Leider nicht wirklich. Wenn ich zitieren darf:

dann verhinderst Du halt irgendwie, dass man oder frau weiter zum nächsten Datensatz gehen kann.

Genau das ist mein Problem (schön auf den Punkt gebracht :D ), ich weiß nicht, wie ich es schaffe, dass ich nicht zum nächsten Datensatz gehen kann.

Aber trotzdem Danke...

Aquarii
17.01.2003, 10:10
Hallo MikeG2000,

ich löse das "Problem" mit Pflichtfeldern wie folgt.

Ich blende die Navigationsschaltflächen von Access aus und erstelle eigene.
Damit bin ich in der Lage, vor dem Wechsel des Datensatzes alle Pflichtfelder auf Eingaben abzufragen, zb. für eine Combobox so (Wobei der Wert 0 hier dem Eintrag "Noch nicht ausgewählt" entspricht):

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre> strAnsprechpartner = Me![Firmenkontakt-Nr]
<span class="TOKEN">If</span> strAnsprechpartner = 0 <span class="TOKEN">Then</span>
str = MsgBox(&quot;Sie haben keinen Ansprechpartner angeben, bitte w&auml;hlen Sie&quot; _
&amp; &quot; aus:&quot;, vbOKOnly, &quot; Ansprechpartner fehlt&quot;)
Me![Firmenkontakt-Nr].SetFocus
<span class="TOKEN">Exit Sub</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
&nbsp;</pre></div>

Auf diese Art kannst du alle Pflichtfelder der Reihe nach abprüfen. Durch das Setzen des Focus in das betroffene Feld kommt der Anwender nur weiter, wenn er eine Eingabe vornimmt.


Nachtrag: Bei Konvertieren ist wohl ein kleiner Fehler passiert. Der Smiley steht für eine geschlossen Klammer

MikeG2000
17.01.2003, 11:10
Vielen Dank für den Tip, leider hilft er mir nur bedingt weiter :bawling:. Wenn ich eine eigene Navigationsleiste erstelle (habe ich auch) und die Access-Leiste ausblende, bleibt immernoch die Möglichkeit mit dem Scrollrad den Datensatz zu wechseln.

Es liegt jetzt natürlich Nahe einfach das Scrollrad zu deaktivieren, allerdings kriege ich es nicht gebacken, die Scrollrad-Deaktivierungsmodule usw. lauffähig bei mir einzufügen. Außerdem ist so ein Scrollrad schon ganz schön...

Ist es denn nicht möglich, den Wechsel zu einem anderen Datensatz über "Nach Aktualisierung" zu verhindern?

Scoopy Doo
17.01.2003, 12:00
Hi MikeG2000,

wo steht Deine Prozedur?

Form_BeforeUpdate hier sollte Sie hin.


Cancel = True ' wenn die Bedingung nicht erfüllt ist!


Gruss Scoopy Doo

Aquarii
17.01.2003, 12:07
Hi Mike,

das Ereignis "Nach Aktualisieren" ist m.E zu spät, da Datensatz ja dann schon gespeichert ist, besser ist Ereignis "Vor Aktualisierung"


Upps, viel zu spät...

MikeG2000
17.01.2003, 12:31
Vielen Dank!

Jetzt funktioniert es.