Hallo Access-Gemeinde,
bräuchte mal wieder einen Tipp. Folgender Fall:
Bisher hatten 2 Formulare bei "Schaltfläche Klick" die selbe Procedur, wo unter anderem auf Textfelder (mit gleichem Namen) zugegriffen wird.
Nun habe ich diese Procedur in ein Modul gesetzt, welches ich von einem Testformular (Formular1 und Formular2) aus jeweils problemlos starten kann, sofern ich die Dim-Anweisung und den Set-Befehl entsprechend setze.
Wie muss ich es programmieren, damit es mit beiden Formularen funktioniert
Hier ein Ausschnitt:
Dim frmMeins As Form_Formular1
'Dim frmMeins As Form_Formular2
Dim m_aObjekt As DataObject
Dim m_laenge_1 As Byte
Dim m_laenge_2 As Byte
Dim m_laenge_ost As Integer
Dim m_laenge_nord As Integer
Dim m_zusatz As String
Dim m_Tgeschn As String
Dim m_Tersetzt As String
Dim m_Kommastelle As String
Dim m_check_Clipboard As Boolean
Dim m_Text As String
10 On Error GoTo TopMapsKoordinaten_einfuegen_Error
20 Set m_aObjekt = New DataObject
30 Set frmMeins = Forms("Formular1")
'Set frmMeins = Forms("Formular2")
40 m_aObjekt.GetFromClipboard
50 If m_aObjekt.GetFormat(1) Then
' *** Da ist Text drin, in der Zwischenablage
60 m_check_Clipboard = True
70 frmMeins.text32 = Null 'Zwischenablage leeren
80 frmMeins.text32.SetFocus 'daten aus der Zwischenablage einfügen
90 frmMeins.text32.SelLength = 0
100 DoCmd.RunCommand (acCmdPaste)
110 DoCmd.RunCommand acCmdSaveRecord
120 frmMeins.text32.Requery
130 m_Text = frmMeins.text32
Ich hoffe Ihr versteht was ich meine.
Gruß trebuh
Hallo,
übergib das Formular als Parameter beim Aufruf der Prozedur (-> Prozedur-Deklaration anpassen!), dann brauchst du keine Deklarationen:
Dim frmMeins As Form_Formular1
'Dim frmMeins As Form_Formular2
und Zuweisungen:
30 Set frmMeins = Forms("Formular1")
'Set frmMeins = Forms("Formular2")
sondern kannst direkt auf das Objekt zugreifen.
PS:
Bei Prozeduren bitte auch immer den "Rahmen" mit anzeigen, also Prozedur-Deklaration und End-Befehl.
Hallo MaggieMay,
Danke für den Tipp. In meiner Testdatenbank funktioniert es tadellos.
Beim übernehmen in die richtige Datenbank habe ich jetzt aber dass Problem, daß es sich bei den beiden Formularen jeweils um Unterformulare handelt.
In der Testdatenbank hatte ich die Parameter für den Formularnamen ja jeweils wie folgt deklariert:
Function Auftrag()
m_x = "Formular1"
End Function
Function Erfassung()
m_x = "Formular2"
End Function
Wenn ich stattdessen den Namen für das Unterformular eingebe, erhalte ich eine Fehlermeldung (Kann das Formular nicht finden)
Muss ich es dann so schreiben:
m_x = Forms![Name_Hauptformular]![Name_Unterformular]
Sitze jetzt irgendwie auf der Leitung.
Gruß trebuh
Hi,
wenn du das Formular bzw. Unterformular als Formular-Objekt übergibst anstelle des Formalurnamens, so sollte das wohl lösbar sein.
Ohne Kenntnis der damit verbundenen Codes lassen sich leider keine konkreten Vorschläge machen.
Zitat von: trebuh am April 21, 2015, 23:48:54
Sitze jetzt irgendwie auf der Leitung.
Rufe aus dem Formular die Modulroutine mit einer Objektreferenz auf das Formular auf
Call MachWas( Me )
Die Routine hat die Objektreferenz als Parameter:
Public Sub MachWas( ByRef myForm as Form)
Msgbox "Machwas wurde aufgerufen aus " & myForm.name
End Sub
Hallo MaggieMay und Wurliwurm,
mal darüber schlafen kann doch hilfreich sein;-)
Habe ins Modul gesetzt:
Public frmMeins As Form
und Aufruf jeweils im Formular:
Set frmMeins = Me
jetzt klappt´s
Vielen Dank für eure Hilfe:-)