Wenn ich auf das Symbol "Pfeil mit Stern" klicke wird ein neuer DS hinzugefügt.
Wenn ich da drauf klicke, möchte ich eine SUB aufrufen.
Kann mir jemand die Syntax dazu sagen?
Also
IF neuer DS, then
call Testmakro
endif
Gruß Achim
Hi,
Zitat von: accessy am Oktober 16, 2013, 19:32:19
IF neuer DS, then
Die Übersetzung lautet:
if Me.newrecord then
Harald
Ich glaube, ich habe mein Anliegen falsch definiert.
Ich brauche das Ereignis, wenn ich auf diesen "Pfeil mit Stern" klicke.
Das Ereignis Form_Newrecord z.B. gibt es nicht.
Private Sub Form_Current() 'Ereignis beim Weiterschalten zum nächsten DS
If Not Me.NewRecord Then
Call Gesperrt_G
End If
End Sub
Das ist das Ereignis, wenn ich einen DS weiterschalte.
Aber wie heißt das Ereignis beim Klick auf "Pfeil mit Stern",
wenn ich also einen neuen DS anfügen will?
Hi Achim,
Zitat von: accessy am Oktober 16, 2013, 22:05:47
Private Sub Form_Current() 'Ereignis beim Weiterschalten zum nächsten DS
ich betrachte das eher als Ereignis "Beim Anzeigen
NACH Weiterschalten auf anderen Datensatz".
Wenn Du * angeklickt hast, wird ein "anderer" (= neuer) Datensatz angezeigt, was mit if Me.NewRecord überprüft werden kann.
Warum ist das für Deinen Zweck nicht brauchbar?
Soll der neue Datensatz nicht angelegt werden?
Harald
Hi Harald,
If Not Me.NewRecord Then
Call Gesperrt_G
End If
Exakt dieses If...Then ist das, was ich brauche.
Aber ich brauche das Ereignis, in dem das stehen muss, damit das ausgeführt wird.
Weder das
Form_Current
Form_BeforeUpdate
Form_AfterUpdate
etc.
etc.
greift hier.
Es muss doch ein Ereignis geben, dass beim Klick auf NEUEN DS einfügen greift.
Gruß Achim
Hallo,
nein ein solches Ereignis gibt es nicht. Du kannst im Ereignis "Beim Anzeigen" prüfen ob Du in einem neuen DS bist. Das reicht für Deinen Zweck, da bin ich sicher.
Ganz allgemein:
If Me.NewRecord = True Then
'hier etwas machen wenn in einem neuen DS
End If
Erkläre mal, was Du eigentlich erreichen willst.
Hi Achim,
mit "es greift nicht" als Antwort auf die Frage "Warum ist es nicht brauchbar" kann ich Dir nicht helfen. >:(
Ich könnte jetzt spekulieren, Du willst einen Sperrmechanismus (call Gesperrt_G) installieren, wenn es denn kein neuer Datensatz ist.
Wenn dem so ist, würde ich das nicht "Beim Anzeigen" machen (wird dann unnötigerweise zu oft ausgelöst), sondern eher dann, wenn die Daten geändert wurden (z.B. Form_Dirty).
Zu klären ist: Was ist Dein Ziel?
Harald
Schalte ich einen DS weiter, werden automatisch alle Felder gesperrt.
Private Sub Befehl262_Click() 'Einen Datensatz vor gehen
On Error GoTo Err_Befehl262_Click
Call Gesperrt_K
DoCmd.GoToRecord , , acNext
Exit_Befehl262_Click:
Exit Sub
Err_Befehl262_Click:
MsgBox Err.Description
Resume Exit_Befehl262_Click
End Sub
Sub Gesperrt_K() 'Hauptformular Kunden
'Exit Sub
With Form_Kunden
.Sperren = False
.Sperren.Caption = "LOCKED"
.Kunde.Locked = True
.Adresse.Locked = True
.PLZ.Locked = True
.Ort.Locked = True
.Tel.Locked = True
.Fax.Locked = True
.Distanz.Locked = True
.Kombinationsfeld217.Locked = True
.tfKNR.Locked = True
.Rabatt.Locked = True
.Bemerkung.Locked = True
.Eintrag.Locked = True
End With
End Sub
Klicke ich auf "Pfeil mit Stern", also neuen DS anlegen,
sind alle Felder gesperrt.
Jetzt muss ich erstmal auf de Button klicken und die Sperrung aufheben.
Daher meine Frage wie ich bei Klick auf das "Pfeil mit Stern" die Sperrung aufhebe.
Also die Sub zum Locked=False habe ich ja schon.
Nur in welchem Ereignis rufe ich die auf?
Hi,
was passiert, wenn Du im Ereignis "beim Anzeigen" wie oben aufgeführt einbaust:
if me.newrecord then DeineSubZumEntsperren
Harald
Hallo,
nochmal: es gibt kein Ereignis "Klick_auf_Pfeil_mit_Stern" ... !!
Sub Form_Current()
Sperren Me, Not Me.Newrecord
End Sub
Sub Sperren (frm as Form, Lock as Boolean)
With frm
.Sperren = not Lock
.Sperren.Caption = IIF (Lock, "LOCKED", "UNLOCKED")
.
.
.
.
End With
End Sub
Hallo,
eigentlich war meine Antwort in #5 bereits zutreffend und ist das Gleiche das jetzt Harald vorgeschlagen hat. Im Ereignis "Beim Anzeigen" wird mit
If Me.NewRocord = True abgefragt ob man in einem neuen DS ist und dann kann man entsprechend reagieren.
Zitatif me.newrecord then
ist das Gleiche wie
If Me.NewRocord = True, ich bevorzuge wegen der Klarheit die vollständige Version.
Jetzt funktioniert es.
Danke euch für die vielen Tipps.
Gruß Achim