MS Access 2003 - Frage Informationen von einer ungebundenen Form zu einem Bericht über die Weitergabe

StackOverflow https://stackoverflow.com/questions/2065214

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!

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top