ich m�chte in einem Endlosformular (Unterformular) den 'leeren'
Datensatz nicht anzeigen lassen. Dies habe ich durch
|Private Sub Form_Current()
| Me.Form.AllowAdditions = False
|End Sub
auch erreicht.
Nun m�chte ich jedoch auf Knopfdruck einen leeren Datensatz anzeigen
lassen. Der ergooglete Ereigniseintrag des Buttons lautet:
|Private Sub cmd_plus_Click()
| Me.Form.AllowAdditions = True
| DoCmd.GoToRecord , , acNewRec
|End Sub
Ich erhalte aber einen Laufzeitfehler '2105' Sie k�nnen nicht zu dem
angegebenen Datensatz springen. Beim debuggen lande ich auf der Zeile
| DoCmd.GoToRecord , , acNewRec
Kann mir jemand einen Tip geben, wo es hakt (A03)?
Dank & Gru�
Jens
--
"The only proof that intelligent life exists in the universe
is that it hasn't tried to contact us yet." - Calvin
> Nun m�chte ich jedoch auf Knopfdruck einen leeren Datensatz anzeigen
> lassen. Der ergooglete Ereigniseintrag des Buttons lautet:
> |Private Sub cmd_plus_Click()
> | Me.Form.AllowAdditions = True
> | DoCmd.GoToRecord , , acNewRec
> |End Sub
>
> Ich erhalte aber einen Laufzeitfehler '2105' Sie k�nnen nicht zu dem
> angegebenen Datensatz springen. Beim debuggen lande ich auf der Zeile
> | DoCmd.GoToRecord , , acNewRec
Wird ein neuer, leerer Datensatz im Endlosformular angezeigt? Wenn ja,
wo befindet sich die Schaltfl�che "cmd_plus", im Haupt- oder
Unterformular (UF)?
Problem mit dem DoCmd ist, dass es quasi einen Men�befehl aufruft. Daher
muss dein Fokus auch im UF sein, wenn zu dem neuen Datensatz gesprungen
werden soll.
Um den Fokus auf ein UF zu setzen siehe die Access F.A.Q. unter
www.donkarl.com?FAQ4.2.
Viele Gr��e,
Stefan
Stefan Dase schrieb:
>> Nun m�chte ich jedoch auf Knopfdruck einen leeren Datensatz anzeigen
>> lassen. Der ergooglete Ereigniseintrag des Buttons lautet:
>> |Private Sub cmd_plus_Click()
>> | Me.Form.AllowAdditions = True
>> | DoCmd.GoToRecord , , acNewRec
>> |End Sub
>>
>> Ich erhalte aber einen Laufzeitfehler '2105' Sie k�nnen nicht zu dem
>> angegebenen Datensatz springen. Beim debuggen lande ich auf der Zeile
>> | DoCmd.GoToRecord , , acNewRec
>
> Wird ein neuer, leerer Datensatz im Endlosformular angezeigt?
Nein, ich habe die Anzeige ja durch
|Private Sub Form_Current()
| Me.Form.AllowAdditions = False
|End Sub
abgestellt.
> Wenn ja, wo befindet sich die Schaltfl�che "cmd_plus", im Haupt- oder
> Unterformular (UF)?
Im Formularkopf des Unterformulars.
> Problem mit dem DoCmd ist, dass es quasi einen Men�befehl aufruft. Daher
> muss dein Fokus auch im UF sein, wenn zu dem neuen Datensatz gesprungen
> werden soll.
Das sollte er doch sein, wenn der Knopf im Unterformular ist, oder?
Kommentiere ich wie folgt aus
|Private Sub cmd_plus_Click()
| Me.Form.AllowAdditions = True
| 'DoCmd.GoToRecord , , acNewRec
|End Sub
erscheint der neue, leere Datensatz. In dem Moment, wo ich reinklicke,
verschwindet er aber wieder.
Jens M�ller schrieb:
[...]
> Nein, ich habe die Anzeige ja durch
>|Private Sub Form_Current()
>| Me.Form.AllowAdditions = False
>|End Sub
> abgestellt.
[...]
> Kommentiere ich wie folgt aus
>|Private Sub cmd_plus_Click()
>| Me.Form.AllowAdditions = True
>| 'DoCmd.GoToRecord , , acNewRec
>|End Sub
> erscheint der neue, leere Datensatz. In dem Moment, wo ich reinklicke,
> verschwindet er aber wieder.
.. weil du ihn als Reaktion auf Form.Current in der sub Form_Current
wieder ausschaltest. ;-)
mfg
Josef
--
EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/
Josef Poetzl schrieb:
> Jens M�ller schrieb:
> [...]
>> Nein, ich habe die Anzeige ja durch
>> |Private Sub Form_Current()
>> | Me.Form.AllowAdditions = False
>> |End Sub
>> abgestellt.
> [...]
>> Kommentiere ich wie folgt aus
>> |Private Sub cmd_plus_Click()
>> | Me.Form.AllowAdditions = True
>> | 'DoCmd.GoToRecord , , acNewRec
>> |End Sub
>> erscheint der neue, leere Datensatz. In dem Moment, wo ich reinklicke,
>> verschwindet er aber wieder.
>
> .. weil du ihn als Reaktion auf Form.Current in der sub Form_Current
> wieder ausschaltest. ;-)
Ja, das ist nachvollziehbar, aber kannst Du mir auch einen Tip geben,
wie ich dem Herr werde?
Jens M�ller schrieb:
> Josef Poetzl schrieb:
>> Jens M�ller schrieb:
>> [...]
>>> Nein, ich habe die Anzeige ja durch
>>> |Private Sub Form_Current()
>>> | Me.Form.AllowAdditions = False
>>> |End Sub
>>> abgestellt.
>> [...]
>>> Kommentiere ich wie folgt aus
>>> |Private Sub cmd_plus_Click()
>>> | Me.Form.AllowAdditions = True
>>> | 'DoCmd.GoToRecord , , acNewRec
>>> |End Sub
>>> erscheint der neue, leere Datensatz. In dem Moment, wo ich reinklicke,
>>> verschwindet er aber wieder.
>>
>> .. weil du ihn als Reaktion auf Form.Current in der sub Form_Current
>> wieder ausschaltest. ;-)
>
> Ja, das ist nachvollziehbar, aber kannst Du mir auch einen Tip geben,
> wie ich dem Herr werde?
Ich bin mir nicht sicher, was du genau erreichen willst, aber
vielleicht suchst du so etwas:
1. Beim Initialisieren des Formulars AllowAdditions ausschalten.
z. B. als Reaktion auf Form.Load
private sub Form_Load()
me.AllowAdditions = false
end sub
... vermutlich kannst du das aber auch auslassen, wenn du die
Eigenschaft im Entwurfsmodus auf "Nein" setzt.
2. Klick auf "Plus"
Private Sub cmd_plus_Click()
Me.AllowAdditions = True
DoCmd.GoToRecord , , acNewRec
end sub
3. kein weiteres Anf�gen ohne Plus-Klick erlauben
Private Sub Form_AfterInsert()
Me.AllowAdditions = False
End Sub
Jetzt gibt es allerdings noch ein Problem, wenn das Formular als
verkn�pftes UF verwendet wird.
Solltest du nach dem Bet�tigen der "Plus"-Schaltfl�che keinen DS
anf�gen und im HF zum n�chsten DS wechseln, bleibt AllowAddition auf
True.
Das k�nntest du eventuell �ber Form.ApplyFilter abfangen.
Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
Me.AllowAdditions = False
End Sub
Vielleicht ist aber auch eine Steuerung vom HF aus sinnvoller.
(Z. B. als Reaktion auf HF.Current.)
Josef Poetzl schrieb:
> Ich bin mir nicht sicher, was du genau erreichen willst,
Ich m�chte vorhandene Datens�tze anzeigen, per Knopfdruck die
M�glichkeit geben, einen vorhandenen zu l�schen bzw. einen neuen anzulegen.
Vielleicht ist das aber auch zu aufw�ndig. Ich h�tte gedacht, es gibt
eine relativ einfache L�sung daf�r. Ich habe den Eindruck, die
Fehleranf�lligkeit wird dadurch erh�ht und steht in keinem Verh�ltnis zu
einem 'kosmetischen' Effekt.
Danke f�r die Erleuchtung,
Da kann man dann auch etwas ausschweifender arbeiten, da wesentlich mehr
Platz als im Endlosformular vorhanden ist.
Es handelt sich (leider nur) um 2, maximal 3 Datensᅵtze im
Endlosformular pro Datensatz im Hauptformular. Darum fand ich auch den
neuen, leeren Datensatz stᅵrend...
Gruᅵ
If Not Me.NewRecord Then
>> Me.Form.AllowAdditions = False
End If
>> End Sub
> auch erreicht.
>
> Nun m�chte ich jedoch auf Knopfdruck einen leeren Datensatz anzeigen
> lassen. Der ergooglete Ereigniseintrag des Buttons lautet:
>> Private Sub cmd_plus_Click()
>> Me.Form.AllowAdditions = True
>> DoCmd.GoToRecord , , acNewRec
>> End Sub
>
> Ich erhalte aber einen Laufzeitfehler '2105' Sie k�nnen nicht zu dem
> angegebenen Datensatz springen. Beim debuggen lande ich auf der Zeile
>> DoCmd.GoToRecord , , acNewRec
>
> Kann mir jemand einen Tip geben, wo es hakt (A03)?
s.o.
Das schaltet die Anzeige der neuen Datens�tze solange ein
bis zu einem bereits gespeicherten DS gewechselt wird.
--
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
3. SQL Server-Entwickler-Konferenz - N�rnberg im Mai
Bis auf den (zu vernachlᅵssigenden) Schᅵnheitsfehler, dass ich nach
Eingabe einen neuen, leeren Datensatz zu sehen bekomme, ganz wunderbar.
Diesen kriege ich mit
Private Sub Form_AfterInsert()
Me.Form.AllowAdditions = False
End Sub
leider erst weg, wenn ich reinklicke.
Wunderbar,
1000 Dank
Jens M�ller schrieb:
> Karl Donaubauer schrieb:
>> Jens M�ller wrote:
>>> ich m�chte in einem Endlosformular (Unterformular) den 'leeren'
>>> Datensatz nicht anzeigen lassen. Dies habe ich durch
>>>> Private Sub Form_Current()
>>
>> If Not Me.NewRecord Then
>>>> Me.Form.AllowAdditions = False
>> End If
>>
>>>> End Sub
>
> Bis auf den (zu vernachl�ssigenden) Sch�nheitsfehler, dass ich nach
> Eingabe einen neuen, leeren Datensatz zu sehen bekomme, ganz wunderbar.
>
> Diesen kriege ich mit
> Private Sub Form_AfterInsert()
> Me.Form.AllowAdditions = False
> End Sub
> leider erst weg, wenn ich reinklicke.
Du k�nntest den DS eventuell auch direkt nach GoToRecord erzeugen.
Private Sub cmd_plus_Click()
Me.Form.AllowAdditions = True
DoCmd.GoToRecord , , acNewRec
' eine �nderung veranlassen (damit wird DS im Form erzeugt):
me!einDatenfeld = me!einDatenfeld
' Da DS nun im Formular vorhanden ist,
' kann AllowEdits abgedreht werden:
Me.Form.AllowAdditions = false
End Sub
Das hat dann aber den Sch�nheitsfehler, dass der Anwender die Eingabe
nicht abbrechen kann und der DS bestehen bleibt, solange er nicht
gel�scht wird.
Eine weitere Variante w�re, statt auf AfterInsert auf BeforeInsert zu
reagieren.
Private Sub cmd_plus_Click()
Me.AllowAdditions = True
DoCmd.GoToRecord , , acNewRec
End Sub
Private Sub Form_BeforeInsert(Cancel As Integer)
me!einDatenfeld = me!einDatenfeld
Me.Dirty = False
Me.AllowAdditions = False
End Sub
Auch hier wird der DS gespeichert, aber erst nachdem der Anwender den
ersten Wert in ein Steuerelement eingeben hat.
Ein ganz anderer Ansatz w�re noch so etwas:
Im Formularfu� werden ungebundene Steuerelemente untergebracht. Der
Formularfu� ist normalerweise ausgeblendet. Erst bei Klick auf das
Plus wird dieser angezeigt.
Private Sub cmd_plus_Click()
Me.Formularfu�.Visible = True
End Sub
Wenn du dann noch im Fu� eine "OK"-Schaltfl�che einbaust, k�nntest du
als Reaktion auf deren Klick-Ereignis den DS per Code anf�gen und den
Formularfu� wieder ausblenden. (oder sp�testens beim DS-Wechsel bzw.
beim Klicken auf einen "Abbrechen"-Button, wird der Fu� ausgeblendet)
Damit w�re kein AllowAdditions=True erforderlich.
Welcher L�sungsansatz f�r dein Vorhaben am besten passt, musst du
selbst herausfinden. ;-)
Vermutlich wird es am besten sein, wenn du dir die Ausl�se-Reihenfolge
der Ereignisse ansiehst, um die passende Kombination zu finden.
[Gel�st: Endlosformular zeigt leeren Datensatz nicht an]
>> Bis auf den (zu vernachl�ssigenden) Sch�nheitsfehler, dass ich nach
>> Eingabe einen neuen, leeren Datensatz zu sehen bekomme, ganz wunderbar.
>>
>> Diesen kriege ich mit
>> Private Sub Form_AfterInsert()
>> Me.Form.AllowAdditions = False
>> End Sub
>> leider erst weg, wenn ich reinklicke.
> Eine weitere Variante w�re, statt auf AfterInsert auf BeforeInsert zu
> reagieren.
> Private Sub cmd_plus_Click()
> Me.AllowAdditions = True
> DoCmd.GoToRecord , , acNewRec
> End Sub
>
> Private Sub Form_BeforeInsert(Cancel As Integer)
> me!einDatenfeld = me!einDatenfeld
> Me.Dirty = False
> Me.AllowAdditions = False
> End Sub
Ich versuche gerade, diese Variante umzusetzen, erhalte aber einen
Laufzeitfehler '3201' Der Datensatz kann nicht hinzugef�gt oder ge�ndert
werden, da ein Datensatz in der Tabelle 'tab_Nutzungskategorie' mit
diesem Datensatz in Verbindung stehen muss.
Anstatt me!einDatenfeld habe ich das die Tabelle des Unterformulars mit
der Tabelle tab_Nutzungskategorie verbindende Feld eingesetzt.
Klappt aber nicht. :-(
Gru�
Jens M�ller schrieb:
> Josef Poetzl schrieb:
>> Eine weitere Variante w�re, statt auf AfterInsert auf BeforeInsert zu
>> reagieren.
>> Private Sub cmd_plus_Click()
>> Me.AllowAdditions = True
>> DoCmd.GoToRecord , , acNewRec
>> End Sub
>>
>> Private Sub Form_BeforeInsert(Cancel As Integer)
>> me!einDatenfeld = me!einDatenfeld
>> Me.Dirty = False
>> Me.AllowAdditions = False
>> End Sub
>
> Ich versuche gerade, diese Variante umzusetzen, erhalte aber einen
> Laufzeitfehler '3201' Der Datensatz kann nicht hinzugef�gt oder ge�ndert
> werden, da ein Datensatz in der Tabelle 'tab_Nutzungskategorie' mit
> diesem Datensatz in Verbindung stehen muss.
>
> Anstatt me!einDatenfeld habe ich das die Tabelle des Unterformulars mit
> der Tabelle tab_Nutzungskategorie verbindende Feld eingesetzt.
Du meinst die Felder, die die Beziehung zw. den beiden Tabellen
herstellen?
... dann hast du genau das Feld erwischt, dessen Wert du nicht �ndern
solltest. :-)
eventuell klappt es damit so:
me!fiNutzungskategorie = me.Parent!idNutzungskategorie
Das w�rde ich aber nicht machen, sondern ein anderes Datenfeld
verwenden, damit die Access-Routine (HF/UF-Verkn�pfung) ganz normal
ablaufen kann.
Irgendein Textfeld, dass der Benutzer bef�llen kann, wird es doch
bestimmt geben.
Josef Poetzl schrieb:
> Jens M�ller schrieb:
>> Josef Poetzl schrieb:
>>> Eine weitere Variante w�re, statt auf AfterInsert auf BeforeInsert zu
>>> reagieren.
>>> Private Sub cmd_plus_Click()
>>> Me.AllowAdditions = True
>>> DoCmd.GoToRecord , , acNewRec
>>> End Sub
>>>
>>> Private Sub Form_BeforeInsert(Cancel As Integer)
>>> me!einDatenfeld = me!einDatenfeld
>>> Me.Dirty = False
>>> Me.AllowAdditions = False
>>> End Sub
>> Ich versuche gerade, diese Variante umzusetzen, erhalte aber einen
>> Laufzeitfehler '3201' Der Datensatz kann nicht hinzugef�gt oder ge�ndert
>> werden, da ein Datensatz in der Tabelle 'tab_Nutzungskategorie' mit
>> diesem Datensatz in Verbindung stehen muss.
>>
>> Anstatt me!einDatenfeld habe ich das die Tabelle des Unterformulars mit
>> der Tabelle tab_Nutzungskategorie verbindende Feld eingesetzt.
>
> Du meinst die Felder, die die Beziehung zw. den beiden Tabellen
> herstellen?
Ja
> ... dann hast du genau das Feld erwischt, dessen Wert du nicht �ndern
> solltest. :-)
:-(
> eventuell klappt es damit so:
> me!fiNutzungskategorie = me.Parent!idNutzungskategorie
>
> Das w�rde ich aber nicht machen, sondern ein anderes Datenfeld
> verwenden, damit die Access-Routine (HF/UF-Verkn�pfung) ganz normal
> ablaufen kann.
> Irgendein Textfeld, dass der Benutzer bef�llen kann, wird es doch
> bestimmt geben.
Nicht in der betreffenden Tabelle. Diese hat vier Felder:
1. ID_Blah -> Autowert
2. ID_Betrieb -> dar�ber l�uft die Verkn�pfung mit dem Hauptformular
3. ID_Nutzung \
4. ID_Teilflaeche |- in beide soll der Nutzer eintragen, allerdings
sind es Kombifelder, in denen die Auswahl strikt vorgegeben ist, deshalb
bestehen Beziehungen zu anderen Tabellen als Datenquellen. ID_Nutzung
ist mit der Tabelle verkn�pft, die im Laufzeitfehler (s.o.) genannt wird.
Gebe ich Me!ID_Blah = Me!ID_Blah ein, bleibt der Laufzeitfehler unver�ndert.
Ist es m�glich, mir in ein paar kurzen S�tzen zu erkl�ren, was durch den
Code �berhaupt erreicht wird?
Dank & Gru�
Jens M�ller schrieb:
> Josef Poetzl schrieb:
[...]
>>>> Private Sub Form_BeforeInsert(Cancel As Integer)
>>>> me!einDatenfeld = me!einDatenfeld
>>>> Me.Dirty = False
>>>> Me.AllowAdditions = False
>>>> End Sub
[...]
>> Irgendein Textfeld, dass der Benutzer bef�llen kann, wird es doch
>> bestimmt geben.
>
> Nicht in der betreffenden Tabelle. Diese hat vier Felder:
> 1. ID_Blah -> Autowert
> 2. ID_Betrieb -> dar�ber l�uft die Verkn�pfung mit dem Hauptformular
> 3. ID_Nutzung \
> 4. ID_Teilflaeche |- in beide soll der Nutzer eintragen, allerdings
> sind es Kombifelder, in denen die Auswahl strikt vorgegeben ist, deshalb
> bestehen Beziehungen zu anderen Tabellen als Datenquellen. ID_Nutzung
> ist mit der Tabelle verkn�pft, die im Laufzeitfehler (s.o.) genannt wird.
> Gebe ich Me!ID_Blah = Me!ID_Blah ein, bleibt der Laufzeitfehler unver�ndert.
>
> Ist es m�glich, mir in ein paar kurzen S�tzen zu erkl�ren, was durch den
> Code �berhaupt erreicht wird?
Ich kann es versuchen. ;-)
BeforeInsert l�uft an, bevor die Eingabe des ersten Wertes (egal ob
�ber Textfeld oder Kombifeld usw.) erfolgt ist.
Daher muss man daf�r sorgen, dass es auf jeden Fall zu einer
DS-�nderung kommt, sonst w�rde Me.AllowAdditions = False die Eingabe
verhindern.
Teste den Code einmal ohne /me!einDatenfeld = me!einDatenfeld/ dann
wirst du sofort sehen, was ich meine.
Das mit dem Textfeld war nur ein Beispiel. Nat�rlich kannst du auch
ein Kombinationsfeld verwenden.
(Du kannst nur jene Steuerelemente nicht verwenden, die einen Autowert
oder das Datenfeld zur HF/UF-Verkn�pfung beinhalten.)
Klar, und wie du an Josefs Varianten siehst, ist es ein Gewᅵrge,
das sauber zu regeln. Einfacher und unglaublich einleuchtend fᅵr
den Anwender ist es, wenn du auf den Knopf statt "Neuer Datensatz"
sowas wie "Eingabemodus" draufschreibst.
--
;-)
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
3. SQL Server-Entwickler-Konferenz - Nᅵrnberg im Mai
Dankesch�n!
> Das mit dem Textfeld war nur ein Beispiel. Nat�rlich kannst du auch
> ein Kombinationsfeld verwenden.
> (Du kannst nur jene Steuerelemente nicht verwenden, die einen Autowert
> oder das Datenfeld zur HF/UF-Verkn�pfung beinhalten.)
Ich glaube, ich habe das nicht klar genug erl�utert. Die in dem
Laufzeitfehler ('3201' Der Datensatz kann nicht hinzugef�gt oder
ge�ndert werden, da ein Datensatz in der Tabelle 'tab_Nutzungskategorie'
mit diesem Datensatz in Verbindung stehen muss) erw�hnte Tabelle ist
keine Datenquelle f�r Haupt- oder Unterformular, sondern nur eine
'Datenherkunft' f�r ein Kombinationsfeld. Ich kann jedoch beide
'unabh�ngigen' Felder nicht verwenden, denn der Laufzeitfehler bleibt...
Ich vermute / bef�rchte, dass durch die vielf�ltigen Beziehungen in
meiner Datenbank die L�sung des Problems erschwert wird.
Ich hatte die leise Hoffnung, dass es dafᅵr eine ᅵhnlich einfache Lᅵsung
gibt, wie die mit der Du mir zuvor weitergeholfen hast.
> Einfacher und unglaublich einleuchtend fᅵr den Anwender ist es, wenn
> du auf den Knopf statt "Neuer Datensatz" sowas wie "Eingabemodus"
> draufschreibst.
Auch wenn das keine Lᅵsung im ursprᅵnglich von mir gedachtem Wege ist,
finde ich sie bestechend einfach. :-)
Dank & Gruᅵ
ich habe mich jetzt entschieden, diese Sache erst mal ruhen zu lassen.
Danke f�r die aufgezeigten M�glichkeiten, ich werde diese sicher an
anderer Stelle gwinnbringend nutzen...
Also habe ich den betreffenden Code auskommentiert. Leider kann ich
jetzt aber keine Daten mehr im betreffenden Unterformular einf�gen.
Einzige Ausnahme ist, wenn ich explizit AllowAdditions = True setze:
Private Sub Form_Current()
'If Not Me.NewRecord Then
' Me.Form.AllowAdditions = False
'End If
Me.Form.AllowAdditions = True
End Sub
Irgendwo muss sich also noch ein 'False' verbergen. Da ich es im
VB-Code-Fenster des Formulars nicht finden kann, bin ich etwas ratlos.
Gibt es einen tiefergehenden Suchbefehl o.�. um die betreffende Stelle
zu lokalisieren?
Mit "einf�gen" meinst du nur neue Datens�tze?
Bestehende kannst du �ndern?
Die Eigenschaft "Anf�gen zulassen" des Formulares steht auf Ja?
Ansonsten sollte es reichen, den kompletten Code mit <Strg>+<F>
nach "AllowAdditions" zu durchsuchen.
Ja
> Bestehende kannst du �ndern?
Ja
> Die Eigenschaft "Anf�gen zulassen" des Formulares steht auf Ja?
Ja
> Ansonsten sollte es reichen, den kompletten Code mit <Strg>+<F>
> nach "AllowAdditions" zu durchsuchen.
Das habe ich gemacht. Kein Ergebnis (au�er den Auskommentierten).
Ratlos,
Jens
BTW, kannst Du mir einen Tip geben, wie ich vorgehen muss, um die
Anzeige des Eingabefeldes �ber eine Variable zu steuern? So k�nnte ich
den von Dir vorgeschlagenen Knopf 'Eingabe aktivieren' auch zum
deaktivieren verwenden... Meine Kenntnisse beschr�nken sich auf die
bash. VB hat da bestimmt eine andere Syntax...
OK, nach zwei mal hin und her stellen, hat Access es jetzt �bernommen.
Gru�
Ich bin nicht sicher, ob ich verstehe, was du meinst mit
> Anzeige des Eingabefeldes �ber eine Variable zu steuern
Falls du den Zustand von AllowAdditions mit dem selben Knopf
hin- und herschalten willst, sollte sowas reichen:
Me.AllowAdditions = Not Me.AllowAdditions
Ja, meine ich. Mein Versuch sah so aus:
Private Sub Form_Current()
If Not Me.NewRecord Then
Me.Form.AllowAdditions = False
EINGABE = 0
End If
End Sub
Private Sub cmd_Eingabe_Click()
If EINGABE = 0 Then
Me.Form.AllowAdditions = True
DoCmd.GoToRecord , , acNewRec
EINGABE = 1
Else
Me.Form.AllowAdditions = False
EINGABE = 0
End If
End Sub
Funktioniert nur leider nicht. Gibt auch keine Fehlermeldung...
> Me.AllowAdditions = Not Me.AllowAdditions
Bestechen einfach, ich erhalte aber einen Laufzeitfehler, da bei dem
'abschaltenden' Klick auch wieder 'DoCmd.GoToRecord , , acNewRec'
ausgef�hrt wird. Also brauche ich doch eine If/else-Funktion, oder?
Dank & Gru�
Jens
Du brauchst keine Variable, weil du immer den Zustand
von AllowAdditions abfragen kannst:
Private Sub cmd_Eingabe_Click()
Me.AllowAdditions = Not Me.AllowAdditions
If Me.AllowAdditions = True Then
DoCmd.GoToRecord , , acNewRec
End If
End Sub
Ja, sehr einleuchtend! :-)
1000 Dank & Gru�
Option Compare Database
Option Explicit
Dim a as byte
Private Sub Form_Current()
if a = 1 then
Me.Form.AllowAdditions = True
DoCmd.GoToRecord , , acNewRec
Me.Form.AllowAdditions = False
a=0
end if
End Sub
Private Sub cmd_plus_Click()
a = 1
Call Form_Current()
End Sub
Michael
"Jens M�ller" <cra...@web.de> schrieb im Newsbeitrag
news:76q6rdF...@mid.dfncis.de...
> Hallo zusammen,
>
> ich m�chte in einem Endlosformular (Unterformular) den 'leeren'
> Datensatz nicht anzeigen lassen. Dies habe ich durch
> |Private Sub Form_Current()
> | Me.Form.AllowAdditions = False
> |End Sub
> auch erreicht.
>
> Nun m�chte ich jedoch auf Knopfdruck einen leeren Datensatz anzeigen
> lassen. Der ergooglete Ereigniseintrag des Buttons lautet:
> |Private Sub cmd_plus_Click()
> | Me.Form.AllowAdditions = True
> | DoCmd.GoToRecord , , acNewRec
> |End Sub
>
> Ich erhalte aber einen Laufzeitfehler '2105' Sie k�nnen nicht zu dem
> angegebenen Datensatz springen. Beim debuggen lande ich auf der Zeile
> | DoCmd.GoToRecord , , acNewRec
>
> Kann mir jemand einen Tip geben, wo es hakt (A03)?
>
Das funktioniert bei mir nicht, verzichtet aber leider auch auf jede
Fehlermeldung...
Kein Wunder, denn der neue Datensatz verschwindet halt sofort,
wenn er gleich wieder ein AllowAdditions = False macht. Hatten wir
ja schon in der Diskussion, dass der neue DS gespeichert werden
muss, um nicht mehr als neu zu gelten.
--
cu