ACC97: Formualr 'AddNew'

Hallo zusammen

Ausgangslage
Es gibt ein Formular mit ausschliesslich Boundcontrols. Wenn ein neuer Record (Datensatz) erstellt wird, will ich das im Formular, in den Comboboxen (Kombinationsfelder) der erste Wert des dahinterliegenden Recordsets sichtbar ist.

Frage:

  1. Wie kann ich Logik mit dem Event „AddNew“ innerhalb eines ACC97 Formulars verknüpfen?
  2. Wie kann ich in einer Combobox den 1. Eintrag eines damit verknüpften Recordsets anzeigen (quasi Defaultvalue)?

Grüsse und Dank Peter

Hi,

  1. Wie kann ich Logik mit dem Event „AddNew“ innerhalb eines
    ACC97 Formulars verknüpfen?

Das ist das Ereignis „Vor Eingabe (BeforeInsert)“.

  1. Wie kann ich in einer Combobox den 1. Eintrag eines damit
    verknüpften Recordsets anzeigen (quasi Defaultvalue)?

Ob das mit einem Defaultvalue geht, müßtest Du ausprobieren. Ansonsten im og. Ereignis mittels RecordSetClone, MoveFirst, usw. einfach die Dinger einsetzen.

Vorsicht: Sobald Du irgend etwas einsetzt, gilt der Datensatz als Dirty! Willst Du den Datensatz doch nicht speichern, mußt Du ihn explizit verwerfen.

Gruß

J.

Danke - Gruss Peter
o.T.

Hi José

Ausgangslage
Der „BeforeInsert“ Event im Formular wird NICHT abefeuert, wenn ich unten auf die Formularsteuerung klicke (Pfeil mit Stern), um einen neuen Record zu erfassen.
Frage1:
Wie fange dieses Ereignis ab?
Frage2:
Wenn nicht möglich, wie sieht der Workaround aus? Die Formularleiste unten ausblenden und Buttons ins Formular einsetzen? Wenn ja, hast Du dazu einen Hinweis, damit ich es nicht erst nachschlagen muss?

Besten Dank
Grüsse Peter

Hallo,

Ausgangslage
Der „BeforeInsert“ Event im Formular wird NICHT abefeuert,
wenn ich unten auf die Formularsteuerung klicke (Pfeil mit
Stern), um einen neuen Record zu erfassen.

Jaaa… das ist auch nicht AddNew. Wenn Du Dir den Code des Buttons anschaust, wirst Du feststellen, daß da ein „DoCmd.GoToRecord , , acNewRec“ ausgeführt wird. Das neue Record wird aber gar nicht erzeugt, sondern erst dann, wenn Du irgend etwas in einem gebundenen Feld eingibst (sichtbar am „Dirty“-Status; ein AutoWert z.B. wird auch erst dann generiert).

Frage1:
Wie fange dieses Ereignis ab?

Müßte mal forschen - gibt es dafür ein Ereignis? Vielleicht funktioniert das so: im BeimAnzeigen-Ereignis (FormCurrent) abfragen, ob ein Feld, das nie null ist, belegt ist - dann ist man offensichtlich im neuen Datensatz, und BeforeInsert wurde nicht ausgelöst. Also Felder setzen. Etwa so:

Private Sub Form\_Current()
 If IsNull(Me!MeinAutowert) Then 
 MeinFeld1 = "Bla"
 MeinFeld2 = "Bla"
 MeinFeld3 = "Bla"
 End If
End Sub

Nachteil liegt auf der Hand:
Du brauchst ein Not-Null-Feld (hast Du aber wahrscheinlich eh).

Frage2:
Wenn nicht möglich, wie sieht der Workaround aus?

Siehe Frage1.

Ich habe es eben ausprobiert, scheint zu laufen!

Gruß

J.

Super! Vielen Dank!!
Hi J.

Besten Dank für die promte, umfassende und erprobte Antwort!

Ich werde mich wahrscheinlich tiefer in ein Accessbuch einlesen müssen, um zu verstehen was die Logik der Formualre ist.
Mal abgesehen von den eingedeuschten Properties, ärgere ich mich über Unterschiede zu VB in den einfachsten Sachen.

Bsp.:
Wenn der Benutzer über die Leiste unten einen neuen Record generiert, so soll in den Kombinationsfeldern ein Defaultwert eingetragen werden. Dieser Wert soll natürlich dynamisch aus dem Recordset des damit verbundenen Kombinationsfeld „gelesen“ werden! Z.B. der 1. Eintrag des Recordsets soll im Textproperty der combobox stehen. Die Routine soll natürlich auch soweit dynamisch sein, dass ich die Datenquelle nicht „hardcodieren“ will. D.h. wenn die Combo einen anderen Recordsource erhält, soll die Routine dennoch funktionieren…

SEUFZ!
Also wie gesagt, es war eher ein Monolog! Und ich werde mich mit einen guten Access97 VBA Buch übers Wochenende einschliessen und mich mit der Logik auseinandersetzen.

Grüsse Peter

Hi,

Ich werde mich wahrscheinlich tiefer in ein Accessbuch
einlesen müssen, um zu verstehen was die Logik der Formualre
ist.

Kauf Dir lieber ein Logikbuch :smile:

Also wie gesagt, es war eher ein Monolog! Und ich werde mich
mit einen guten Access97 VBA Buch übers Wochenende
einschliessen und mich mit der Logik auseinandersetzen.

Laß Dich nicht von der manchmal etwas verqueren Logik von Access entmutigen. Es gibt Dinge, die sin logisch, und es gibt andere, die muß man sich merken… dann kommt man auch klar mit dem Ding.

Gruß

J.