Red de conocimientos sobre prescripción popular - Enciclopedia de Medicina Tradicional China - ¿Cómo imprimir un informe en VB6.0? Será mejor que me envíes el código, ¡te lo ruego de rodillas! !

¿Cómo imprimir un informe en VB6.0? Será mejor que me envíes el código, ¡te lo ruego de rodillas! !

Se presentan varias tecnologías de impresión de informes en VB6.0 y sus ventajas y desventajas, especialmente se presenta en detalle la realización de la impresión de informes a través de la programación.

VB6.0, programación, informes

1. Prefacio

En los sistemas de bases de datos desarrollados con Visual Basic, la impresión de informes es la más importante y comúnmente utilizada. las funciones. Según el método de implementación del informe, se puede dividir aproximadamente en tres categorías: la primera categoría es el método primitivo, que controla directamente el objeto de la impresora, la impresora dibuja líneas e imprime la segunda categoría es el uso de controles, como los datos; informes, informes de cristal, informes activos, etc. El tercer método es guardar el informe para imprimir en un formato que pueda ser reconocido por otros programas o ingresarlo directamente en otros programas y usar la función de impresión de otros programas para operar. Los representantes típicos imprimen informes a través de Word y Excel.

2. Introducción al método

Cuando se utiliza la programación de objetos de impresora para imprimir, el mayor problema es que a menudo se realizan operaciones de coordenadas y se deben considerar muchas cuestiones triviales. La cantidad de código es grande y no se puede obtener una vista previa del contenido impreso. La ventaja es el control flexible y el buen efecto de impresión. En aplicaciones prácticas, este método es ideal para algunos informes con alta flexibilidad y funciones complejas. Los ejemplos de este artículo presentan principalmente el proceso de implementación de este método.

En comparación con las impresoras, la programación de informes de datos incorporada de VB es mucho menos intensiva. Diseña informes de forma WYSIWYG, que es más intuitiva, los informes impresos son más hermosos y la función de vista previa de impresión es relativamente. Simple. Su desventaja es que no es lo suficientemente flexible y el contenido vinculante solo puede ser un conjunto de registros, lo que tiene muchas restricciones.

Crystal Report es un control de impresión de informes producido por Seagate. Los libros con formato superior a 8.0 tienen funciones muy potentes y control flexible, lo que los convierte en una solución de generación de informes clásica. Su desventaja es que es un software potente, comercial y caro.

El Informe de Actividad es un excelente control de impresión producido por Data Dynamic Company. Como versión mejorada del informe de datos, el informe activo tiene control flexible, funciones completas y es totalmente capaz de imprimir informes diarios.

Utilice VBA para llamar a algún software externo para resolver problemas de impresión, entre los cuales Word y Excel se utilizan comúnmente como "agentes de impresión". Las ventajas de este método son un control sencillo y una potente función de impresión. La desventaja es que la computadora que ejecuta el programa de impresión de informes debe tener instalado el software correspondiente (como Word o Excel).

3. Implementación del plan

1. Cree un nuevo proyecto estándar denominado Proyecto 1. Cree un formulario llamado Forml en el proyecto.

2. Haga clic en el elemento Selección de componentes en el menú Proyecto, seleccione la opción Microsoft flex grid Control 6.0 (SP3) en la lista emergente y luego haga clic en Aceptar para agregar el control MSFlexGrid a la caja de herramientas.

3. Coloque 1 control MSFlexGrid, 8 controles TextBox, 8 controles Label y 5 controles CommandButton en el formulario Forml. La siguiente tabla muestra las propiedades de los principales objetos de control.

Lista de propiedades del control principal

Callejón

Tipo

Valor

Energía de trabajo

MSFlexGrid

Nombre

MSFlexGrid1

Ingrese información de almacenamiento

Texto1

Nombre

Texto1

Texto2

Nombre

TxtWhm_1

Ingrese el número de archivo

Texto3

p>

Nombre

TxtWhm_2

Mostrar el número de variedades

Texto 4

Nombre

TxtWhm_3

Mostrar cantidad total

Texto 5

Nombre

TxtWhm_4

Mostrar importe total

Texto 6

Nombre

TxtWhm_6

Ingrese el nombre del proveedor.

Texto 7

Nombre

TxtWhm_7

Introducir fecha

Texto 8

Nombre

TxtWhm_8

Procesador de entrada

Comando 1

Nombre

registro cmd

Orden de registro

Título

Registro

Comando 2

Nombre

CmdSave

Guardar comando

Título

Proteger

Comando 3

Nombre

Cmdprint

Imprimir Comando

Título

Imprimir

Comando 4

Nombre

CmdCancel

Cancelar

Título

Cancelar

Comando 5

Nombre

CmdEnd

Salir del comando

Título

Renunciar

4. Agregar código de programa

Aquí tomamos el formulario de almacenamiento de medicamentos como ejemplo para imprimir. un informe. El núcleo El código es el siguiente:

Private Sub CmdPrint_Click()' Programación para realizar la impresión de paginación continua de billetes.

Definición de parámetros, utilizados para determinar las coordenadas de impresión.

Dim i, A es un número entero

Dim v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13 son números enteros

p>

v1 = 5

V2 = v1+msflexgrid1. Ancho de columna (0) * 1,2 'Número de serie

V3 = v2+msflexgrid1. ancho de col (1) * 1 # 'Código de fármaco.

V4 = v3+msflexgrid1. ancho de col (2) * 0,95 'Nombre del fármaco.

V5 = v4+msflexgrid1. Ancho de columna(3) * 0,9 'Especificaciones.

V6 = V5+msflexgrid 1 . ancho de columna(4)* 0.8' Origen.

V7 = V6+msflexgrid 1 . ancho de columna(5)* 0,9 'Número de lote.

V8 = V7+msflexgrid1. ancho de col (6) * 0,8 'Período de validez.

v9 = V8+msflexgrid 1 . ancho de columna(7)* 0,9' unidad.

V10 = V9+msflexgrid1. ancho de col (8) * 1.4 'Cantidad

v 11 = v 1msflexgrid 1. ancho de col (9) * 1,2 'Precio unitario - precio de compra.

v 12 = v 11+msflexgrid 1. Colwidth (10) * 1.3 'Cantidad

v13 = 11500

Dim m As Integer 'Número total de registros

' Dim N As Integer 'Número de registros por página

"Dim ii As Integer"Número total de páginas

Dim j As Integer 'Número de página

Dim k As Integer 'Iniciar control de grabación en cada una página.

Dim TmpLowerPageMoney es una única 'cantidad total por página'

M = Val(TxtWhm_2. Text) '(variedad de almacenamiento TxtWhm_2): registro total.

N = 4 '4 registros por página

Si Int(m/N) - m/N = 0, entonces

ii = m/N

Otro

ii = Int(m / N) + 1

Terminará si...

Impresora. altura = 7530450 * n+901000 'Define la altura del papel en función del número de registros por página.

Impresora. "Ancho=12000" define el ancho del papel.

Para j = 1 a ii 'El bucle exterior controla el número de páginas a imprimir.

' TmpLowerPageMoney = 0# 'Cantidad total por página: la nueva página comienza a borrarse.

Impresora. Actual = 4000

Impresora. Valor actual = 200

Impresoras. Tamaño de fuente = 16

Impresora. Imprimir "Factura de almacén de Xiangtan Weimin Trading Co., Ltd."

Impresora. El número de página "CurrentX = 9250" se encuentra en la esquina superior izquierda.

Impresora. Valor actual = 200

Impresoras. Tamaño de fuente = 10

Impresora. print " página "+Trim(Str(j))+" * * " &;Trim(Str(ii))+"página "

Impresora. CurrentX = 200

Impresora. Valor actual = 750

Impresora. Tamaño de fuente = 10

Impresora. Imprimir "Proveedor":&TxtWhm_6. Texto

Impresora. Actual = 5000

Impresora. Valor actual = 750

Impresora. Tamaño de fuente = 10

Impresora. Imprimir" (Este recibo no se utiliza como comprobante de reembolso)

Impresora. Actual = 8800

Impresora. Valor actual = 750

Impresora. Tamaño de fuente = 10

Impresora. Imprimir "número de ticket":&;"& ampTxtWhm_1. Texto

Encabezado de columna

a-Altura vertical del cuerpo de la tabla

A = 1050

Printer.line (V1, a)- (V13,a)' Dibuja la línea horizontal superior.

Si MSFlexGrid1. ColWidth(0)>0 Luego 'Columna 1

Impresora. La línea (v1, a)-(v1, a+450)' dibuja la línea del borde sólido izquierdo.

Impresora. CurrentX = 50

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

Impresora. Imprimir "número de serie"

Finalizar si...

Si MSFlexGrid1. ColWidth(1)>0 Luego 'Columna 2

Impresora. Línea(v2,A)-(v2,A+450)

Impresora. CurrentX = v2 + 10

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

Impresora. Imprimir "código de medicamento"

Finalizar si...

Si MSFlexGrid1. ColWidth(2)>0 Luego 'Columna 3

Impresora. Línea(v3,A)-(v3,A+450)

Impresora. CurrentX = v3 + 40

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

Impresora. Imprimir "nombre del medicamento"

Finalizar si...

Si MSFlexGrid1.

ColWidth(3)>0 Luego 'Columna 4

Impresora. Línea(v4,A)-(v4,A+450)

Impresora. CurrentX = v4 + 40

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

Impresora. Imprimir "Especificaciones"

Finalizar si...

Si MSFlexGrid1. ColWidth(4)>0 y luego columna 5

Impresora. Línea(v5,A)-(v5,A+450)

Impresora. CurrentX = v5 + 40

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

Impresora. Imprimir "Origen"

Finalizar si...

Si MSFlexGrid1. ColWidth(5)>0 y luego 'Columna 6

Impresora. Línea(v6,A)-(v6,A+450)

Impresora. CurrentX = v6 + 40

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

Impresora. Imprimir "número de lote"

Finalizar si...

Si MSFlexGrid1. ColWidth(6)>0 y luego 'Columna 7

Impresora. Línea(v7,A)-(v7,A+450)

Impresora. CurrentX = v7 + 40

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

Impresora. Imprimir "Fecha de vencimiento"

Finalizar si...

Si MSFlexGrid1. ColWidth(7)>0 y luego 'Columna 8

Impresora. Línea(v8,A)-(v8,A+450)

Impresora. CurrentX = v8 + 20

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

Impresora. Imprimir "unidades"

Finalizar si...

Si MSFlexGrid1. ColWidth(8)>0 y luego 'Columna 9

Impresora. Línea(v9,A)-(v9,A+450)

Impresora. CurrentX = v9 + 30

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

Impresora. Imprimir "cantidad"

Finalizar si...

Si MSFlexGrid1. ColWidth(9)>0 Luego 'Columna 10

Impresora. Línea(v10,A)-(v10,A+450)

Impresora. CurrentX = v10 + 80

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

Impresora. Imprimir "Precio Unitario"' Nota: El "Precio Unitario" aquí corresponde al "Precio de Compra"

Terminará si...

Si MSFlexGrid1. ColWidth(10)>0 Luego 'Columna 11

Impresora. Línea(v11,A)-(v11,A+450)

Impresora. CurrentX = v11 + 20

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

Impresora. Imprimir "Cantidad"

Impresora.

Línea (v12+10, a)-(v12+10, a+450)' dibuja el lado derecho (sello).

Terminará si...

a = 1500 ' a-La altura longitudinal del cuerpo de la mesa.

Printer.line (V1, a)-(V13, a)' Dibuja una línea horizontal.

Si j = 1, entonces 'k' inicia el control de grabación de cada página

K = 1 'k=0 significa línea 1, K = 1 significa línea 2.

Otros

k = (j - 1) * N + 1

Terminará si...

Para i = k To j * N 'El bucle interno controla la impresión en cada página: impresión de paginación.

Si MSFlexGrid1. ColWidth(0)>0 y luego 'columna número 1

Impresora. La línea (v1, a)-(v1, a+450)' dibuja la línea del borde sólido izquierdo.

Impresora. CurrentX = 245

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

si MSFlexGrid1. TextMatrix(i, 0)<>""Entonces 'I = 0' es la fila 1, la fila del título.

Impresora. ImprimirMSFlexGrid1. TextMatrix(i, 0)

Terminará si...

Terminará si...

Si MSFlexGrid1. ColWidth(1)>"0 Luego" código de medicamento en la columna 2

Impresora. Línea(v2,A)-(v2,A+450)

Impresora. CurrentX = v2 + 10

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

si MSFlexGrid1. TextMatrix(i, 1)<>""Luego

Impresora. ImprimirMSFlexGrid1. TextMatrix(i, 1)

Terminará si...

Terminará si...

Si MSFlexGrid1. ColWidth(2)>"0 Luego" nombre del medicamento en la tercera columna

Impresora. Línea(v3,A)-(v3,A+450)

Impresora. CurrentX = v3 + 10

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

si MSFlexGrid1. TextMatrix(i, 2)<>""Luego

Impresora. ImprimirMSFlexGrid1. TextMatrix(I, 2)

Terminará si...

Terminará si...

Si MSFlexGrid1. ColWidth(3)>"0 Luego" especificación de la cuarta columna

Impresora. Línea(v4,A)-(v4,A+450)

Impresora. CurrentX = v4 + 20

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

si MSFlexGrid1. TextMatrix(i, 3)<>""Luego

Impresora. ImprimirMSFlexGrid1. TextMatrix(I, 3)

Terminará si...

Terminará si...

Si MSFlexGrid1. ColWidth(4)>0 luego el quinto origen

Impresora. Línea(v5,A)-(v5,A+450)

Impresora.

CurrentX = v5 + 50

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

si MSFlexGrid1. TextMatrix(i, 4)<>""Luego

Impresora. ImprimirMSFlexGrid1. TextMatrix(I, 4)

Terminará si...

Terminará si...

Si MSFlexGrid1. ColWidth(5)>"0 Luego" número de lote en la columna 6

Impresora. Línea(v6,A)-(v6,A+450)

Impresora. CurrentX = v6 + 30

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

si MSFlexGrid1. TextMatrix(i, 5)<>""Luego

Impresora. ImprimirMSFlexGrid1. TextMatrix(I, 5)

Terminará si...

Terminará si...

Si MSFlexGrid1. ColWidth(6)>0 y luego 'Validez de la columna 7

Impresora. Línea(v7,A)-(v7,A+450)

Impresora. CurrentX = v7 + 60

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

si MSFlexGrid1. TextMatrix(i, 6)<>""Luego

Impresora. ImprimirMSFlexGrid1. TextMatrix(I, 6)

Terminará si...

Terminará si...

Si MSFlexGrid1. ColWidth(7)>La celda "0 Luego" en la columna 8

Impresora. Línea(v8,A)-(v8,A+450)

Impresora. CurrentX = v8 + 30

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

si MSFlexGrid1. TextMatrix(i,7)<>""Luego

Impresora. ImprimirMSFlexGrid1. TextMatrix(I, 7)

Terminará si...

Terminará si...

Si MSFlexGrid1. ColWidth(8)>El número "0 Luego" en la columna 9

Impresora. Línea(v9,A)-(v9,A+450)

Impresora. CurrentX = v9 + 60

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

si MSFlexGrid1. TextMatrix(i, 8)<>""Luego

Impresora. ImprimirMSFlexGrid1. TextMatrix(I, 8)

Terminará si...

Terminará si...

Si MSFlexGrid1. ColWidth(9)>0 y luego 'Columna 10 de precio de compra

Impresora. Línea(v10,A)-(v10,A+450)

Impresora. CurrentX = v10 + 150

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

si MSFlexGrid1. TextMatrix(i,9)<>""Luego

Impresora.

PrintFormat(MSFlexGrid1. TextMatrix(i, 9), "0.00")

Terminará si...

Terminará si...

Si MSFlexGrid1 . ColWidth(10)>0 y luego 'Cantidad en la columna 11

Impresora. Línea(v11,A)-(v11,A+450)

Impresora. CurrentX = v11 + 200

Impresora. ActualY = A + 100

Impresora. Tamaño de fuente = 10

si MSFlexGrid1. TextMatrix(i, 10)<>""Luego

Impresora. Formato de impresión(MSFlexGrid1. TextMatrix(i, 10), "0.00")

Terminará si...

' tmplowerpagemoney = tmplowerpagemoney+val(msflexgrid 1. text Matrix( I, 10))'Importe total por página.

TxtPageLowerMoney = Round(TmpLowerPageMoney, 2)

Impresora. Línea (V12, a)-(V12, A+450)' dibuja la línea derecha (sello).

Terminará si...

Impresora. Filas (V1, A+450)-(V13, A+450) 'El monto total de esta página está en mayúscula' encima de la línea horizontal.

A = A+450 'El interlineado aumenta en 450 cada vez.

A continuación I 'Fin del bucle interno

Impresora. Tamaño de fuente = 10

Impresora. Línea(v1,A+450)-(v13,A+450)

Impresora. CurrentX = v1 + 300

Impresora. ActualY = A + 100

Impresora. Imprimir "Cantidad total de dinero en mayúsculas en esta página"&;"& ampFormat(LabPageUpperMoney, "0.00 0.00")'Cantidad total de dinero por página (en mayúsculas)

Impresora. No. (v3+ 550, a)-(v3+ 550, a+450) La línea vertical a la derecha de "Monto de capital total en esta página"

Impresora CurrentX = v9 + 60 'v1 + 7500< /. p>

Impresora. CurrentY = A + 100

Impresora.Imprimir "minúsculas:&Format(TxtPageLowerMoney, "0.00")& "Yuan" total por página (minúsculas)

p>

Impresora. Línea (v9, A)-(v9, A+450)’” minúscula: “Línea vertical a la derecha.

Printer.line (V1, A+450)-(V13, A+450)' Dibuja una línea horizontal.

Impresora. Tamaño de fuente = 10

Impresora. CurrentX = v1 + 20

Impresora. Valor actual = A + 550

Impresora. Imprimir "Notas"

Impresora. Línea (v2, a+450)-(v2, a+900)' "Observaciones" a la derecha de la línea vertical

Impresora. Tamaño de fuente = 10

Impresora. CurrentX = v9 + 60 'v1 + 7500

Impresora. Valor actual = A + 550

Impresora. Imprima "Importe total de esta factura:" y formato (TxtWhm_4, "0.00") y monto total 'yuanes' (minúsculas)

Impresora. Línea (v 9, a+450)-(v 9, a+900)' "Importe total de esta factura:" línea vertical a la derecha.

Impresora. La línea (V1, A+900)-(V13, A+900)' dibuja la línea horizontal inferior.

Impresora. Tamaño de fuente = 10

Impresora. CurrentX = v1 + 10

Impresora. ActualY = A + 1000

Impresora. Imprimir "Pagador": &TxtWhm_8.Text

Printer.FontSize = 10

Printer.CurrentX = v1 + 2200

Printer.CurrentY = A + 1000

Imprimir "Destinatario: Comprobador: Repartidor:"

Impresora.

Documento de Impresora" cambia de página

El siguiente j' final del bucle externo

Llamar a MsgBox("Imprimir...!", vbOKOnly+vbInformation, "Preguntar...")

Finalizar conector

5. resultados de ejecución

El efecto de ejecución del programa se muestra en la Figura 1 y el efecto de impresión se muestra en la Figura 2.

Figura 1 Resultados de ejecución de la orden de recibo de medicamento

Figura 2 Resultados de la impresión del informe de recibo de medicamentos

IV.Conclusión

La impresora es un objeto proporcionado por Visual Basic y se utiliza para operaciones de impresión básicas. funciones y puede personalizar el formato de impresión, el número de páginas impresas, el grosor de la tabla y el tamaño de fuente. Aunque la codificación es un poco problemática (requiere muchos cálculos de coordenadas), también es el más flexible para imprimir informes. El autor utilizó este método para diseñar la lista de inventario en el sistema de gestión de inventario, compra y venta de medicamentos y logró buenos resultados. Esta idea de diseño se puede utilizar para implementar la impresión de informes de su propio sistema de acuerdo con las necesidades reales del desarrollo. propio sistema MIS.