Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Klick auf Neuer DS soll ein VBA-Makro durchlaufen

Begonnen von accessy, Oktober 16, 2013, 19:32:19

⏪ vorheriges - nächstes ⏩

accessy

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

bahasu

Servus

accessy

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?

bahasu

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
Servus

accessy

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

MzKlMu

#5
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.
Gruß Klaus

bahasu

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
Servus

accessy

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?

bahasu

Hi,

was passiert, wenn Du im Ereignis "beim Anzeigen" wie oben aufgeführt einbaust:

if me.newrecord then DeineSubZumEntsperren

Harald
Servus

DF6GL

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

MzKlMu

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.
Gruß Klaus

accessy

Jetzt funktioniert es.
Danke euch für die vielen Tipps.
Gruß Achim