MS Access 2003 - Frage Informationen von einer ungebundenen Form zu einem Bericht über die Weitergabe
-
20-09-2019 - |
Frage
Ich verwende etwas wie unten Informationen von einer ungebundenen Form in einer anderen zu übergeben (entschuldigen Sie die keine Fehlerprüfung):
Sub Button_Click()
Dim db as DAO.database
Dim rs as DAO.recordset
Dim sql as string
docmd.openform "NextFormIamAbouttoUse"
sql = "SELECT * FROM tblMain WHERE MainID = " & Me.As_MainID & ";"
' usually debug here
set db = currentdb
set rs = db.openrecordset(sql)
if rs.eof then
msgbox "oops message"
else
rs.movefirst
[Forms]![NextFormIamAbouttoUse].as_mainID = rs![MainID]
[forms]![NextFormIamAbouttoUse].value1 = rs![value1]
' etc
rs.close
set db = nothing
set rs = nothing
sql = ""
end if
'error stuff
end sub
ok, so kann ich diese Art der Sache verwendet für als auch Informationen aus Formularen Berichte übertragen? siehe i verwenden viele Formen voller Textfelder als Dashboards, in denen die Textfelder keinen Eintrag Zweck dienen, zeigen eher schnelle Information eher.
Benutzer navigieren durch verschiedene Formen der „Armaturenbrett-like“ bauen Formen nach ihrem Geschmack dann irgendwann drucken möchten. so wollte ich zu bauen Look-a-like (in Bezug auf die angebotenen Daten) Berichte an jedem Punkt, damit sie die Informationsseite drucken können sie durch diese Formen gebaut haben.
so habe ich versucht, dies mit einem Bericht zu tun:
Sub Button_Click()
Dim db as DAO.database
Dim rs as DAO.recordset
Dim sql as string
docmd.openreport "ReportTester", acViewPreview
sql = "SELECT * FROM tblMain WHERE MainID = " & Me.As_MainID & ";"
' usually debug here
set db = currentdb
set rs = db.openrecordset(sql)
if rs.eof then
msgbox "oops message"
else
rs.movefirst
[reports]![ReportTester].as_mainID = rs![MainID]
[reports]![ReportTester].value1 = rs![value1]
' etc
rs.close
set db = nothing
set rs = nothing
sql = ""
end if
'error stuff
end sub
nur als eine Vermutung, und es hat nicht funktioniert. keine Fehler, oder irgendetwas. nur werden keine Informationen auf diese Weise angezeigt werden soll. nicht einmal die ID-Nummer übergeben.
So denke ich, dass der Bericht in acViewPreview Öffnungsmittel, dass ich keine Informationen zu diesen Textfelder nach der Tat hinzufügen können, aber ich bin jsut nicht sicher. So eine Beratung zu diesem Thema wird sehr geschätzt. Dank!
Lösung
Sie ein paar Optionen. Sie können entweder eine Abfrage erstellen und die Formularsteuerwert in die Wert dort passieren, so dass eine 1 Datensatz Abfrage erstellen, die Sie Ihren Bericht auf Basis können.
Jede Spalte wird wie folgt aussehen: Daten: Formulare [MyForm] [MyControl]
!Oder Sie können einfach die Steuerelemente aus dem Formular binden direkt an die Bericht Kontrollen.
Sie müssen das Formular geöffnet enthält die Werte verlassen, während der Bericht geöffnet wird, wenn Sie für eine dieser beiden Routen entscheiden. Kein komplexer Code benötigt wird.
Andere Tipps
Ich glaube, ich bin etwas fehlt. Warum sollte nicht müssen Sie nur noch den Bericht des Record die gleichen sein wie die Record der Form, und dann Filter zur Laufzeit zu einem bestimmten MainID in der Wherecondition Argument der DoCmd.OpenReport? Dann können Sie den Bericht ausführen, ohne dass die Form offen haben.
Es sei denn, das Formular ungebunden ist, oder hat Felder, die teuer sind on the fly zu berechnen, kann ich keinen Vorteil sehen, den Bericht zu der Form überhaupt zu binden.