Access - Standardwert aus vorh. Datensatz

Hallo zusammen,

ich möchte in meiner Access Datenbank (Access 2007) in der Formulareingabe ermöglichen, dass der Wert eines Feldes (Feldname: lfd_Nr_Eintrag, Felddatentyp: Zahl) standardmäßig aus dem vorherigen Datensatz übernommen wird, aber trotzdem änderbar ist.

Mir ist durchaus bewußt, dass diese Frage bereits x-mal gestellt wurde - die THEORETISCHE Lösung habe ich auch bereits gefunden.

Ich habe daraufhin die Ereignisprozedur des jeweiligen Steuerelements in dem Formular folgendermaßen geschrieben:

Private Sub lfd_Nr_Eintrag_AfterUpdate()

Me!lfd_Nr_Eintrag.DefaultValue = Me!lfd_Nr_Eintrag

End Sub

Trotzdem funktioniert es nicht, das Feld lfd_Nr_Eintrag bleibt im Formular bei Neuanlage eines Datensatzes leer. Was mache ich falsch?

Sollte ich Euch wesentliche Infos unterschlagen haben, die zu einer möglichen Lösung beitragen, bitte kurz melden - bin noch völliger Access Neuling.

Gruß

Sabrina

Hallo Ralf,

ob ich das richtige Ereignis am Wickel habe wirst Du wahrscheinlich besser beurteilen können… ja, die Übernahme soll jeweils für den nächsten Datensatz erfolgen. Die Ereignisprozedur habe ich in den Eigenschaftsfeldern des Steuerelements festgelegt (und zwar bei „Nach Aktualisierung“) - so war es in diversen Foren beschrieben.

Die Anlage des Zählers als Autwert kommt m.E. nicht in Frage, da es auch Datensätze gib, die über keine lfd. Nr. verfügen oder lfd. Nummern, die mehrfach vorkommen (frag jetzt bitte nicht nach den Hintergründen…)

Ich versuche mal anhand eines anderen Beispiels zu formulieren was ich möchte, vielleicht bin ich mit meiner theoretischen Lösung ja auf dem völlig falschen Weg.

Ich muss über das Formular Datensätze erfassen, die u.a. Angaben zu Seitenzahlen enthalten. Es gibt immer ca. 10 Datensätze mit identischer Seitennummer. Deswegen sollte die Seitennummer grundsätzlich vom vorigen Datensatz übernommen werden, es sei denn, ich überschreibe die Seitennummer von Hand (was ja dann ca. alle 10 Datensätze einmal vorkommt).

Sofern es dafür einen ganz anderen Lösungsansatz gibt, immer her damit…

Hi Sabrina,

ja, die Übernahme
soll jeweils für den nächsten Datensatz erfolgen.

dann sollte das Ereignis aber am Satz hängen, nicht am Textfeld.

Eine Möglichkeit (gibt sicher elegantere):

 Option Compare Database
 Dim Vorgabe\_für\_Seitenzahl As String

 Private Sub Form\_AfterUpdate()

 Vorgabe\_für\_Seitenzahl = Me!Seitenzahl
 End Sub

 Private Sub Form\_Current()

 Me!Seitenzahl = Vorgabe\_für\_Seitenzahl
 End Sub

Gruß Ralf

PS: Hast Du den Link im ersten Post gelesen?

Hallo

Eine Möglichkeit (gibt sicher elegantere):

so funktioniert das aber nicht wirklich…

Option Compare Database
Dim Vorgabe_für_Seitenzahl As String

Private Sub Form_AfterUpdate()

Vorgabe_für_Seitenzahl = Me!Seitenzahl
End Sub

>> Wird nur gesetzt innerhalb einer Eingabesession
>> Besser :

>> Private Function Vorgabe_für_Seitenzahl() as Integer (oder was auch >> immer)

>> Hier mittels ein Abfrage den letzten Wert ermitteln
>> z.B. "Select Max(ID) as MaxID From …

>> End Function

Private Sub Form_Current()

Me!Seitenzahl = Vorgabe_für_Seitenzahl
End Sub

>> Das ueberschreibt aber die Eingabe wenn der Satz nochmal editiert wird

>> muss heissen

>> if me.NewRecord then Me!Seitenzahl = Vorgabe_für_Seitenzahl

Tschau
Peter

Moin, Peter,

so funktioniert das aber nicht wirklich…

schtümmt, mein Vorschlag fällt eher unter _quick & dirty>. Danke für die Korrektur - mit ein bisschen Glück erinnere ich mich an den me.NewRecord, wenn ich ihn jemals brauche :wink: Jetzt wollen wir nur hoffen, dass S. überhaupt noch mitliest.

Gruß Ralf_

Private Sub Form_Current()

on error resume next
me.feldname.defaultvalue = Dlast(„Feldname“,„Datenquellenname“)

End Sub

Probiere doch bitte mal so. Alternativ könntest du den Wert direkt setzen, wenn das erste Zeichen in den Datensatz eingegeben wird. Das wäre dann das Formularereignis „Bei Eingabe“

Gruß