Access - Informe por vba

   
Vista:

Informe por vba

Publicado por ROBERTO (14 intervenciones) el 02/02/2016 10:29:27
Buenas. Necesito hacer un informe por vba . Lo que estoy haciendo ahora mismo es colocar varios cuadros de texto en el informe y en el detalle ejecuto el evento al imprimir y ahí es donde hago la select para ir asignando cada valor en los campos que corresponda. Ahora mismo solo me muestra el último registro de la consulta. Lo que necesitaría es hacer el salto de línea y retorno de carro por cada registro.
Graicas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Informe por vba

Publicado por Enrique Heliodoro (1663 intervenciones) el 02/02/2016 11:42:24
Creo que la 'visión' que tienes del 'objeto informe' es que se comporta como una maquina de escribir (de las primeras que salieron al mercado) y eso tiene un gran problema: no se ajusta a la realidad.

Si los objetos (y valores a mostrar) son heterogéneos y sin relación entre ellos (esto es: se considera al informe 'como una hoja de papel') se tendrían que crear (con el informe en su vista diseño) tantos cuadros de texto (u objetos simples) como se precisaran para cada uno de los valores a presentar y asignarles su origen de datos en tiempo de ejecución.

Lo que se acostumbra a hacer normalmente (si, el resto del mundo lo hace 'al revés') suele ser asignar el conjunto de datos (normalmente una consulta de selección en formato SQL) como origen de datos del informe y solo preocuparse de generar la 'estética' de una línea (la sección cero o sección detalle), que el propio formulario al ejecutarse repetirá (con sus respectivos valores) tanta veces como necesite .... en fin, lo que se conoce como 'un clásico'.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Informe por vba

Publicado por Roberto (14 intervenciones) el 02/02/2016 11:47:19
Hola. si si esa es la manera que suelo utilizar para hacer mis informes pero esta vez necesito hacerlo de esta manera.
Necesito mostrar valores de varias consultas por código y asignar los valores a los cuadros de texto que tengo en el informe.
Despues hacer el salto de linea correspondiente y retorno de carro. Finalmente contralar los saltos de página.

Te muestro el ejemplo:
Imagina que tengo un informe sin origen de registro ni nada, solo 4 cuadros de texto situados en él con sus etiquetas y demas.
en el evento al imprimir de la sección de Detalle, tengo esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Dim rst As dao.Recordset
Dim Mensaje As Integer
Dim mensaje_a_copiar As String
 
On Error Resume Next
Set rst = CurrentDb.OpenRecordset("Select * from [TEMAS_PENDIENTES_1] where [PRODUC] Is Not Null")
 
rst.MoveFirst
While Not rst.EOF
    rst.Edit
    Me.REL = rst![REL]
    Me.ARTICULO = rst![ARTIC]
    Me.FECHA = rst![FECHA_TEMASPEND]
    Me.TEMAS_PENDIENTES = rst![PRODUC]
    Me.SALTO_LINEA = Chr(13) + Chr(10)
    rst.MoveNext
Wend
 
rst.Close


Lo que me muestra esto ahora mismo es el último registro que lee no hace ni saltos de linea ni nada de nada.
Ese es el tema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Informe por vba

Publicado por Enrique Heliodoro (1663 intervenciones) el 02/02/2016 12:37:56
La metodología que se intenta aplicar es la que se utilizaba en los arcaicos tiempos de las impresoras matriciales, metodología que a su vez provenía de la implementada en los teletipos .... pero esa metodología no tien aplicacon hoy en dia (con la excepción de que se trabaje con ese tipo de impresoras, en cuyo caso se tendría que aplicar la técnica adecuada:
.- Abrir un canal de comunicación (antes era definir el puerto LPT a utilizar)
.- Enviarle comandos de control a la impresora (por ejemplo los avances de línea)
.- Enviarle los datos mediante sentencias 'Print #canal .....'

Para emular el actual método, seria necesario:
.- Abrir el objeto informe en modo diseño
.- Conocer de antemano las líneas a rellenar
.- Generar (con objetos cuadro de texto) las ubicaciones de campos y líneas (TODAS Y CADA UNA DE ELLAS)
.- Guardar el informe
.- Abrir el informe recién guardado
.- Recorrer los objetos, asignando de forma INDIVUAL a cada uno su contenido (según sea su campo y línea)

Esto es.... trabajar 'mas que un chino' para un paupérrimo resultado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de douglas

Informe por vba

Publicado por douglas (280 intervenciones) el 02/02/2016 18:13:03
Me encantan tus respuestas Enrique me imagine el puerto de la impresora. Preguntándole al sistema que sigue para imprimirlo

jajajajajajajaja

Ahora para ayudar a nuestro desordenado prototipo de informe lo que necesitas es replantear tu concepto de informe y trasladar lo que quieres a un formulario con botón de imprimir registro y darle a tú formulario el mismo formato del informe buscado.
Y listo si ocupas un ejemplo me avisas.
Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Informe por vba

Publicado por Enrique Heliodoro (1663 intervenciones) el 02/02/2016 20:17:40
No es un método muy extraño, aun se utiliza en muchas impresoras de punto de venta que son matriciales (las mas económicas en mantenimiento), aunque cada vez mas se decantan por la térmicas que imprimen con la misma rapidez (o mayor) que las matriciales pero mas silenciosas y en formato grafico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar