Button 'nächster Datensatz' mit Aktualisierung

Guten Tag,

Ich hab mit dem Assistent einen „gehe zum nächsten Datensatz“ und einen „gehe zurück Button“ erstellt. Die Funktionieren auch wunderbar mit einer Einschränkung. Im Formular sind mehrer Kombinationsfelder welche je nach Auswahl eine Textbox sichtbar schalten (für Notizen etc). Wenn so ein Fenster aufpoppt und ich den Button (zum nächsten Datensatz) benutze ist es in dem näüchsten Datensatz immernoch offen obwohl im Kombinationsfeld von dem aktuell geöffneten Datensatz gar keine Auswahl getroffen wurde, d.h. das Ding sollte eigentlich verschwinden!

Das Formular behandelt alle Makros so,egal ob ich den Button benutze oder auch die ACCESS-Standart Schalflächen am Fuss des Formulars und das ist natürlich schlecht weil danndie Ereignisprozeduren ja keinen Sinn ergeben :frowning: Ich möchte also wenn ich die Buttons benutze das der nächste Datensatz neu abgefragt wird (Ereignisprozreduren) und die Fenster wieder verschwinden und sämtliche Kombinationsfeld werte auf standartwert stehen (wenn zB „keine Auswahl“ oder „nein“ in einem Kombinatiosnfeld im nächsten Datensatz steht)! Ich hoffe es war irgendwie verständlich :smile:

Hier noch der Code vom „springe zum nächstenDatensatz“ Button:

CODE:

Private Sub Save_Button_Click()

On Error GoTo Err_Save_Button_Click

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acNewRec

Exit_Save_Button_Click:

Exit Sub

Err_Save_Button_Click: MsgBox Err.Description Resume

Exit_Save_Button_Click

End Sub

Kann ich das so anpassen,das der Button nach dem öffnen des nächsten Datersatzes die vorhanden Kriterien abfragt und auch die Makros überprüft oder vielleicht korrekt ausführt? Außerdem legt der Button immer einen Neuen Datensatz an wenn keiner mehr zur auswahl steht, das sollte auch unterbunden werden.

MFG

Hallo,

mhmm, ziemlich vwerworren das Ganze m.M. nach…

Ich hab mit dem Assistent einen „gehe zum nächsten Datensatz“
und einen „gehe zurück Button“ erstellt. Die Funktionieren
auch wunderbar mit einer Einschränkung. Im Formular sind
mehrer Kombinationsfelder welche je nach Auswahl eine Textbox
sichtbar schalten (für Notizen etc).

sehr unüblich… was steht denn in den Kombifelder(listen)?

Wenn so ein Fenster
aufpoppt

Was ist eine „Textbox“ ? Was ist ein „Fenster“?

und ich den Button (zum nächsten Datensatz) benutze

ist es in dem näüchsten Datensatz immernoch offen

ja, das ist auch richtig so . Du schließt es (was genau?) ja auch nicht (bzw. setzt es wieder auf unsichbar oder auf den entspr. Inhalt des Kombis…

obwohl im
Kombinationsfeld von dem aktuell geöffneten Datensatz gar
keine Auswahl getroffen wurde,

Eine Auswahl kann ja erst dann getroffen werden nachdem(!) der andere DS angezeigt wurde.(oder das Kombi ist an ein Tabellenfeld gebunden und zeigt somit den Wert aus dem akt. DS an.

d.h. das Ding sollte eigentlich
verschwinden!

naja, dafür bist Du verantwortlich, sprich, Du mußt es auch programmieren.

Das Formular behandelt alle Makros so,egal ob ich den Button
benutze oder auch die ACCESS-Standart Schalflächen am Fuss des
Formulars und das ist natürlich schlecht weil danndie
Ereignisprozeduren ja keinen Sinn ergeben

aber nur Deiner Meinung nach…
Die Ereignisprozeduren werden immer dann ausgeführt, wenn das entspr. Ereignis denn auch auftritt.

( Ich möchte also
wenn ich die Buttons benutze das der nächste Datensatz neu
abgefragt wird (Ereignisprozreduren)

das Ereignis, das man hier benutzen könnte, wäre das Form-Ereignis „Beim Anzeigen“

und die Fenster wieder
verschwinden

Sub Form_Current()
Me!Fenster1.visible=false ’ wenn „Fenster1“ eine Textfeld-Steuerelement ist
Me!Fenster2.Visible=False
.
.
End Sub

und sämtliche Kombinationsfeld werte auf
standartwert stehen (wenn zB „keine Auswahl“ oder „nein“ in
einem Kombinatiosnfeld im nächsten Datensatz steht)!

im oben genannter Ereignisprozedur:

.
.
Me!Kombi1 = „Keine Auswahl“
Me!Kombi2 = „nein“
.
.

Ich hoffe

es war irgendwie verständlich :smile:

nicht so richtig. Verbal schon, logisch nicht.

Hier noch der Code vom „springe zum nächstenDatensatz“ Button:

CODE:

der folgende Code „springt“ nicht zum nächsten Datensatz, sondern speichert die akt. Eingabe und dann zu einem neuen DS…

Private Sub Save_Button_Click()

On Error GoTo Err_Save_Button_Click

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acNewRec

Exit_Save_Button_Click:

Exit Sub

Err_Save_Button_Click: MsgBox Err.Description Resume

Exit_Save_Button_Click

End Sub

Kann ich das so anpassen,das der Button nach dem öffnen des
nächsten Datersatzes die vorhanden Kriterien abfragt

WO stehen denn die Kriterien? Soweit ich das verstehe, legst Du die erst bei der Kombiauswahl fest.

und auch
die Makros überprüft oder vielleicht korrekt ausführt?

Makros sind etwas anders, hier geht es um Ereignisprozeduren als VBA-Code.

Außerdem legt der Button immer einen Neuen Datensatz an wenn
keiner mehr zur auswahl steht

Da „tut“ er genau das, was der Code sagt…

das sollte auch unterbunden
werden.

Dann muß der Code anders aussehen, z. B.

Sub btnNaechsterDS_Click()
On error resume Next
Docmd.GotoRecord , acNext
End Sub

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Danke für die schnelle Antwort. Ich sehe ein, dass es sehr verworren klingt und wahrscheinlich auch ist, dennoch versuche ich es jetzt nochmal ein wenig näher zu erläutern. Wahrscheinlich klingt alles so „unlogisch“ da ich ein absoluter Access Neuling bin.

Ich habe ein Formular erstellt welches 3 Textfelder und ein Kombinationfeld enthält (mit Ereignisprozedur beim klicken)

Bsp.

Textfeld 1 = Name
Textfeld 2 = Vorname
Textfeld 3 = Adresse (nur sichtbar wenn Kombifeld 1 "ja kann teilnehmen enthält)

Kombifeld 1 (Werteliste) = ja kann teilnehmen, nein

Die Datenbank ist mit Daten gefüllt worden.

Wenn ich zwischen den Datensäten mit dem „falsch programmierten Button“ hin und her springe
wird beispielsweise die Sichtbarkeit von Textfeld 3 nicht abgefragt.
Wenn ich also einen neuen Datensatz mit „ja kann teilnehmen“ angelegt habe und somit Textfeld 3 sichtbar wird und ich danach zum nächsten Datensatz per Button oder Access Navischaltfläche am Formularfuß springe wird Textfeld 3 immernoch angezeigt obwohl in diesem Datensatz im Kombifeld „nein“ steht. Selbiges passiert auch, wenn ich danach einen neuen Datensatz anlege und noch keine Aaswahl im Kombifeld getroffen wurde.

Das möchte ich gerne unterbinden. Ich weis leider nur nicht, ob ich das über den "Vor- und Zurückspringbutton VBA technisch lösen kann oder nach jedem Datensatzaufruf das ganze formular aktualisieren muss mit einer Ereignisprozedur „Formular->beim Anzeigen“? Eine Schritt für Schritt Anleitung wäre sehr hilfreich (gerade bei VBA).

Ich hoffe es ist nun ein wenig besser verständlich

MfG

Hab den Code von meinem Kombifeld in Formular-> beim Anzeigen reinkopiert…funktioniert top…danke schonmal!

Schöne Grüße aus Hessen
Jasper

Eine kleine Frage hätt ich noch. Ich möchte das mein erster Datensatz immer leer bleibt und man auch keine Änderungen machen kann. Kann man einen Datensatz (mein erster ist leer) einfach vor einer Eingabe Schützen?

MfG

Hallo,

Ich möchte das mein erster
Datensatz immer leer bleibt und man auch keine Änderungen
machen kann. Kann man einen Datensatz (mein erster ist leer)
einfach vor einer Eingabe Schützen?

wozu gibt es den dann und wozu darf er nicht geändert werden?

Es gibt in einer Tabelle keinen „ersten“ DS, schon gar keinen „leeren“…
Datensätze werden immer aufgrund eines Kennwertes (Primärschlüssel(feld)–> sehr angeraten, oder durch ein passendes und eindeutiges Kriterium, auch wenn es mehrere Felder umfaßt) definiert und referenziert .

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo mal wieder,

Ich möchte eben gerne das beim starten des Formulars kein Datensatz angezeigt wird, deshalb hab ich ID 1 bei mir leer gelassen und diese wird beim öffnen eben angezeigt.

Beim öffnen soll einfach eine leere Maske(Formular) zu sehen sein.

MfG

Hallo,

stell die Form/Daten-Eigenschaft „Daten eingeben“ auf ja.

oder ruf das Form mit
Docmd.Openform „frmDeinForm“, , , acFormAdd

auf oder

Sub Form_Open(Cancel as Integer)
Me.Dataentry=true
End Su

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hat auch funktioniert danke!

Ein Problem hab ich noch vielleicht können Sie mir dort auch weiterhelfen.

Ich möchte mit einer Kombibox Werte aus Access in eine geschütze Worddokumentvorlage übergeben.

mit meinem Code kann ich es allerdings nur an ungeschützte „.dot“ Vorlagen übergeben und überschreibe damit die Formularfelder anstatt diese auszufüllen!

Ich möchte aber das er ein neues geschütztes „.doc“ öffnet und an dieses die Werte übergibt.

Hier der CODE:

Private Sub Worddatei_AfterUpdate()

'Start Microsoft Word.
Set objWord = CreateObject(„Word.Application“)
With objWord
objWord.Visible = True
objWord.Documents.Open („D:\MusterDB“ & Forms!MusterDB!Worddatei.Column(0))
.ActiveDocument.Bookmarks(„Anrede“).Select
.Selection.Text = Me!Anrede
.ActiveDocument.Bookmarks(„Vorname“).Select
.Selection.Text = Me!Vorname
.ActiveDocument.Bookmarks(„Name“).Select
.Selection.Text = Me!Name
.ActiveDocument.Bookmarks(„Name2“).Select
.Selection.Text = Me!Name
.ActiveDocument.Bookmarks(„KDN“).Select
.Selection.Text = Me!KDN
.ActiveDocument.Bookmarks(„KDNummer“).Select
.Selection.Text = Nz(Me!KDNummer)

End With
Set objWord = Nothing

End Sub

Wie muss der Code angepasst werden?

MFG