¿Cómo imprimir un informe en VB6.0? Será mejor que me envíes el código, ¡te lo ruego de rodillas! !
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 p>
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...") p>
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.