ich möchte gerne im Adressformular einen Button "Brief schreiben" erstellen um bei einer ausgewählten Adresse einfach auf den Button "Brief schreiben" zu drücken und so das Formular Briefe zu öffnen.
Es soll ein neuer Datensatz mit den entsprechenden Adressdaten im Briefformular erstellt werden, im Feld Brieftext möchte ich dann einen Text eingeben.
Die Adressdatenbank enthält schon einige Adressen
Anbei mal meine Testdatenbank.
Darin sind die Datenbanken sowie die Formulare enthalten.
In dem Adressformular ist auch schon ein Button "Briefe schreiben" eingefügt aber das mit der Datenübertragung klappt nicht.
Es öffnet sich beim Klicken (ab zweiter Datensatz) das Briefformular aber es wird nur die ID übertragen.
Wie muss ich das folgende Makro anpassen, daSs die Datei "Briefe" geöffnet und die Inhalte der Felder "ID, Anrede, Vorname, Nachname, Strasse, PLZ, Ort" des jeweiligen Datensatzes übertragen werden?
Wie oben erwähnt wird die Datei "Briefe" geöffnet und die ID übernommen/eingesetzt, alle anderen Felder bleiben leer.
Code: Alles auswählen
REM ***** BASIC *****
Sub Formularsprung(oEvent AS OBJECT)
oButton = oEvent.Source.Model 'Button wird über das auslösende Ereignis bestimmt.
oForm = oButton.Parent ' Formular wird über den Button bestimmt
IF oForm.getLong(1) > 0 THEN
IF oForm.isNew THEN 'Abspeichern - bei neuem Datensatz insert, bei bestehendem Datensatz update
oForm.insertRow()
ELSE
oForm.updateRow()
END IF
loID = oForm.getLong(1) 'Wert des ersten Feldes auslesen
stNewForm = oButton.Tag 'Zielformular aus den Zusatzinformationen des Buttons auslesen
oFormDocNew = ThisDatabaseDocument.FormDocuments.getByName(stNewForm).open 'Neues Formular öffnen und das Object des Formular weiter nutzen
oDrawpageNew = oFormDocNew.drawpage
oFormNew = oDrawpageNew.forms.getByIndex(0) 'Zugriff auf das neue Formular in dem Formulardokument - Annahme: Formular ist das einzige/erste Formular.
oFormNew.filter = """ID"" = '" + loID + "'" 'Filter definieren und setzen
oFormNew.ApplyFilter = TRUE
oFormNew.reload() 'Formular mit Filter neu laden. Jetzt würde nur noch der Datensatz mit gleicher ID angezeigt
Wait 100 'Wenn zu schnell versucht wird einen Wert zu schreiben ist das Formular noch nicht geladen - Wartezeit 0,1 Sekunden
IF oFormNew.getLong(1) <> loID THEN 'Wenn das ID-Feld ungleich der ID ist, die weitergegeben wurde, dann ist dort kein Wert drin (Filter!)
oFormNew.updateLong(1, loID)
END IF
END IF
End Sub
Besten Dank