PDA

Vollständige Version anzeigen : Hinzufügen von Datensatz unterbinden.


maxxime
27.05.2012, 18:11
Hallo Zusammen,

ich erstelle mittels:

CurrentDb.Execute "Insert Into tbl......

einige Datensätze mit editierbaren Inhalten in ein Endlosformular.
(Das heißt, ich rufe das leere Endlosform auf und fülle es über o.g. Code.)

Da nun kein neuer DS mehr hinzukommen wird, möchte ich das Anfügen von DS unterbinden. (Sonst habe ich nach dem versehentlichen Tab im letzten Datensatz einen neuen , leeren DS erzeugt.)

Normalerweise löse ich das über die Formulareigenschaften. Das geht in diesem Fall nicht, da ja beim Aufruf des leeren Formulars DS mit obigem Code eingefügt werden sollen.

Nun stehe ich auf'm Schlauch und ich wäre für etwas Hilfe dankbar.

Scorefun
27.05.2012, 18:22
meiner Meinung nach hat das Hinzufügen von Datensätzen per VBA nichts mit der Formulareigenschaft selbst zu tun.

hast Du es schon einmal probiert?
Form-Eigenschaft auf Anfügen zulassen Nein

Nach dem VBA-Insert-Befehl ein Requery auf das Form und die Daten sollten erscheinen, ohne daß ein manuelles Anfügen möglich ist

Marsu65
27.05.2012, 18:25
Hallo,

ich erstelle mittels:
CurrentDb.Execute "Insert Into tbl......
einige Datensätze mit editierbaren Inhalten in ein Endlosformular.
(Das heißt, ich rufe das leere Endlosform auf und fülle es über o.g. Code.)

Das du per INSERT-Anweisung ein Formular füllst, halte ich für ein Gerücht ;)
Eher die Tabelle, die als Datensatzherkunft für das Formular dient.

Daher kann doch die AllowAdditions-Eigenschaft des Formulars auf False bleiben?

Ein Requery auf das Formular holt die neuen Daten ab.

Ich sehe da momentan nicht wirklich ein Problem :eek:

gpswanderer
27.05.2012, 18:27
Hallo,
das sollte trotzdem funktionieren, die Anfügeabfrage füllt ja die Tabelle, das hat ja mit dem Formular zunächst mal nichts zu tun.
Du kannst das Formular munter mit der Abfrage füllen, die Abfrage stört sich nicht an dem Anfügen zulassen = Nein.

Einfach nach dem Anfügen noch ein Me.Requery und fertig.

Edit:
Drei gleiche Antworten, was willst Du mehr. Und auch noch so schnell. :grins:

maxxime
27.05.2012, 18:39
Hmmm...

hab's mal gecheckt. nach Umstellen auf Anfügen zulassen= Nein,

folgt: msg: "Sie haben einen Ausdruck ohne Wert eingegeben."

Und Daten werden ebenfalls nicht in die Tabelle geschrieben.

Im Form habe ich beim Anzeigen noch stehen:
Me!Fragebogenladen.Enabled = (Me.Recordset.RecordCount = 0)

Das ging wirklich schnell!

gpswanderer
27.05.2012, 18:46
Hallo,
das ist ein grundsätzlicher Fehler Deiner Abfrage, das hat mit Anfügen zulassen nichts zu tun. Was willst Du mit dem Code Beim Anzeigen erreichen?
Der Code deaktiviert bei jedem Datensatzwechsel das Feld "Fragebogenladen" wenn die Datensatzzahl <> 0 ist.

Ist das wirklich so gewollt?

maxxime
27.05.2012, 18:56
Der Button zum Laden des Fragebogens liegt im Formularkopf und soll deaktiviert sein, wenn bereits ein Fragebogen geladen ist. Damit wird versehentliches Zweifachausführen der Abfrage verhindert.

Marsu65
27.05.2012, 19:04
Der Button zum Laden des Fragebogens liegt im Formularkopf und soll deaktiviert sein, wenn bereits ein Fragebogen geladen ist.
Das würde ich beim Klick auf den Button erledigen
Private Sub Fragebogenladen_Click
...
IrgendeinanderesSteuerelement.SetFocus
Me!Fragebogenladen.Enabled = (Me.Recordset.RecordCount = 0)
...

gpswanderer
27.05.2012, 19:06
Hallo,
OK, das hat dann aber mit dem Anfügen von DS nichts zu tun.

maxxime
27.05.2012, 19:25
Vielleicht noch hilfreich,

Also, ich habe alle Eure Tipps befolgt (artig, artig) .

Dennoch, erhalte ich nach wie vor die Fehlermeldung

msg: "Sie haben einen Ausdruck ohne Wert eingegeben."

Marsu65
27.05.2012, 19:39
Kopier mal deinen INSERT-String in eine neue (Anfüge-)Abfrage und versuch sie dort auszuführen.
Ich nehm an, dass da ein Feld (oder Unterabfrage) NULL ist, was nicht NULL sein darf.
Das könntest du mit der NZ-Funktion glattbügeln.

[Edit]
auch immer wieder gerne gemacht: Bezug auf ein Feld im Detailbereich welches nicht vorhanden ist, da die datensatzherkunft keine Werte liefert.

gpswanderer
27.05.2012, 19:39
Hallo,
es liegt an der Abfrage selbst.
Zeige bitte mal den vollständigen Code zum Anfügen (den Code hinter dem Button).