PDA

Vollständige Version anzeigen : Neuen Datensatz zum Aktuellen machen


schtiwi
04.05.2001, 08:04
Hallo!
beim Öffnen eines Formulars soll ein neuer Datensatz angelegt werden und dieser soll auch direkt im Formular angezeigt werden. Folgende Prozedur sollte dies machen :-(
Jedoch zeigt das Formular den ersten Datensatz an, nachdem ein neuer Datensatz angelegt wurde. (Die Move... Anweisungen bewirken nichts!).
Was mache ich falsch???

Private Sub Form_Open(Cancel As Integer)
Dim rs As Recordset
Dim Datenbank As Database

Set Datenbank = DBEngine.Workspaces(0).Databases(0)
Set rs = Datenbank.OpenRecordset("Tab_Rechnung_1", dbOpenDynaset)

' Neuer Datensatz wird angelegt
rs.AddNew
rs.Update
Me.Form.Refresh

' Der letzte Datensatz sollte angezeigt werden
rs.MoveLast
Me.Form.Refresh

rs.Close
Datenbank.Close

End Sub

hermi
04.05.2001, 08:37
nur so 'ne Idee:

SELECT TOP 1 Datum FROM Daten

Das setzt allerdings voraus, dass ein entsprechendes Datumsfeld vorhanden ist

gloria
04.05.2001, 09:55
Hallo
funkt diese möglichkeit ??

DoCmd.GoToRecord acDataForm, formularname, acNewRec

fügt -meines wissens- einen datensatz an und zeigt ihn auch.

ciao glori

schtiwi
04.05.2001, 11:36
DoCmd.GoToRecord acDataForm, formularname, acNewRec

fügt -meines wissens- einen datensatz an und zeigt ihn auch.

... das stimmt soweit. Aber das Autowert-Feld wird nicht hochgesetzt, so dass der Datensatz noch nicht real existiert. Dies ist aber erforderlich, um zu dem automatisch neu erstellten Datensatz in einem Unterformular Detaildaten ablegen zu können.

Bsp:
Beim Öffnen des Formulars soll automatisch eine Rechnungsnummer (Autowert) vergaben und in einem Datumsfeld das aktuelle Datum eingetragen werden. Im entsprechenden Unterformular werden dann die Artikel etc. selektiert.

gloria
04.05.2001, 12:21
hi zurück,
dann speichere den Datensatz doch anschließend gleich oder löse die Funktion zur Ermittlung der RechnungsNR auch per VBA aus ...

1. DoCmd.gotorecord ... acNew
2. DoCmd.RunCommand acCmdSaveRecord oder RechNr ermitteln


Ciao glori

schtiwi
04.05.2001, 15:57
hi glori,

das Speichern hab ich gemacht, trotzdem steht im Feld RechnNr immer noch (Autowert) und nicht die nächst höher Nummer. Auch beim Sprung in das Unterformular ändert sich nichts. -> ?

... oder löse die Funktion zur Ermittlung der RechnungsNR auch per VBA aus ...
auch -> ?

Meine Sub sieht derzeit wie folgt aus:

Private Sub Form_Open(Cancel As Integer)

DoCmd.GoToRecord acDataForm, "Form_Rechnung_1", acNewRec
DoCmd.RunCommand acCmdSaveRecord

End Sub


cu, stefan.

Sascha Trowitzsch
04.05.2001, 16:24
Hi schtiwi,

solange im neuen Datensatz gar nix drin steht kannst du ihn auch nicht speichern bzw. der Autowert wird nicht gesetzt (..was gibt das auch für einen Sinn?)

Wenn das Formular nur zur Eingabe *eines* neuen Datensatzes dienen soll, dann setze die Eigenschaft 'Daten eingeben' des Formulars schlichtweg auf 'Ja'. Jeder Code erübrigt sich dann.

Wenn du's wie in deinem Beispiel machen willst, dann schreibe vor acCmdSaveRecord einfach in irgend ein Feld einen beliebigen Wert und lösche ihn dann wieder (...mit=Null, falls es Nullwerte erlaubt). Der Autowert bleibt dann gesetzt.

Ciao, Sascha