MS Access 2003 - Pregunta sobre la transmisión de información a partir de una forma no unida a un informe

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

Pregunta

utilizo algo como abajo para pasar información de una forma no unida a otra (con perdón del ninguna comprobación de errores):

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, así que puedo utilizar este tipo de cosas para la transferencia de información de los formularios de informes así? veo yo uso una gran cantidad de formas llenas de cuadros de texto como cuadros de mando, donde los cuadros de texto de entrada no sirven para nada, más bien mostrar información rápida lugar.

usuario a navegar a través de diferentes formas de construir las formas de "tablero similar" a su gusto entonces en algún momento desea imprimir. Así que quería construir mirar-uno-como (en términos de los datos ofrecidos) informa en cada punto para que puedan imprimir la página de información que han construido a través de estas formas.

Así que traté de hacer esto con un informe:

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

al igual que una conjetura, y no funcionó. no hay errores, ni nada. simplemente no mostrará ninguna información de esta manera. incluso no pasar el número de ID.

Así que estoy pensando que abrir el informe en acViewPreview significa que no puedo añadir información a los cuadros de texto después de los hechos, pero estoy seguro de que no jsut. Por lo que cualquier consejo sobre esto es muy apreciada. gracias!

¿Fue útil?

Solución

Usted tiene algunas opciones. Puede crear una consulta y pasar los valores de control de formulario en los valores allí, creando así una consulta 1 registro, que se puede basar el informe.

Cada columna tendrá el siguiente aspecto: datos: Forms! [MyForm] [MyControl]

O puede simplemente enlazar los controles del formulario directamente a los controles de informe.

Usted tendrá que dejar abierto el formulario que contiene los valores mientras se abre el informe, si se opta por cualquiera de estas rutas. No se necesita código complejo.

Otros consejos

Creo que me falta algo. ¿Por qué no sólo tiene Recordsource del informe sea el mismo que Recordsource del formulario, y luego filtrar en tiempo de ejecución a un MainID particular, en el argumento de la WhereCondition DoCmd.OpenReport? A continuación, puede ejecutar el informe sin necesidad de tener la forma abierta.

A menos que la forma no está consolidado, o tiene campos que son caros de calcular sobre la marcha, no puedo ver ninguna ventaja a la unión del informe a la forma en absoluto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top