Visual Basic - Imprimir facturas

Life is soft - evento anual de software empresarial
 
Vista:

Imprimir facturas

Publicado por AC (2 intervenciones) el 17/11/2005 12:25:17
Tengo 1 aplicacion creada para la gestion de 1 empresa, hasta aki todo va muy bien, el problema llega a la hora de imprimir la factura.
Esta va con folios con el membrete de la emrpe sa y he de librarlo, ademas de k es 1 empresa de transporte y en la impresion han de aparecer los datos de forma ordenada y bajo 1 cabecera de campo como por ejemplo (origen, destino, matricula, precio etc....).

me gustaria saber como controlar los saltos de pagina, k coloke las cabeceras etc para imprimir ademas de el codigo para llamar a la impresora y poder imprimir, es lo unico k necesito, ya que los procedimientos de SQL hacen la seleccion deseada(por mes, matricula, año, empresa....) pero no consigo imprimirlos.

el programa trabaja con 1 base de datos de access. Si alguien puede ayudarme en mi labor se lo agradeceria.
1 cordial saludo: AC
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

Usa Print

Publicado por GabrielDR (27 intervenciones) el 18/11/2005 02:40:15
No estoy seguro de como estas tratando de hacer tu impresion, pero me imagino que ya tienes los datos:

Tienes 2 opciones, usando el DATAREPORT, (Menu Proyecto-DATAREPORT) que creo que seria lo mas rápido poque el editor permite especificar el Campo y se encarga automaticamente de los saltos...

Ahi te dejo un link pero si revisas en el google hay varios manuales y tutoriales mas del DATAREPORT
http://www.mailxmail.com/curso/informatica/datareport/

Ahora bien, si lo que deseas es pegarte el parche, lo puedes hacer manual usando el objeto PRINT.

algo así:
1.- Crear un PictureBox en un formulario, (calcular que sea del tamaño de la factura)
2.- establecer las coodenadas de origen X y Y a la parte superior del Picture.(se puede usar la propiedada SCALE del Form para ayudarnos.

3.- Posicionarse en la primera parte que vamos a imprimir.
4.- Imprimir los datos

5.- Llevar la cuenta de las lineas y ver si no se ha llenado la página.
6.- Forzar el salto de página o fin de documento

Codigo.

'Establecen el origen del "papel"
Dim OX As Long
Dim OY As Long
'Sirven para calcular el fin de linea y de pagina
Dim posX As Long
Dim poxY As Long

Set DB = OpenDatabase("c:\clientes.mdb", True, False, ";pwd=clave")
DB.OpenRecordset ("Select * from Clientes")

'PASO 1
'Se pone la escala del FORM A Centimetros
Me.ScaleMode = 7
'se redimencional el Picture al tamaño de la factura
Me.Picture1.Height = 28
Me.Picture1.Width = 21

'PASO 2
'El 19 y el 26 es el ancho y alto del margen de impresion
'Los valores OX y OY servirán para dar los puntos de origen en la pantalla
OX = Me.Picture1.Top + 1
OY = Me.Picture1.Left + 1

FinOX = OX + 19
finoy = OY + 26

'PASO 3
'Sirven para cargar indicar las coordenadas de impresion
posX = 1 + OX

'Con este ciclo se realiza desde el inicio del margen hasta el final de la hoja.
For POSY = OY To finoy

'PASO 4
'Se puede usar referencias a las variables o asignar directo el valor a las coordenadas X,Y
Me.Picture1.CurrentX = posX 'Establece la posicion Horizontal
Me.Picture1.CurrentY = POSY 'Establece la posicion Vertical
Me.Picture1.Print RS!Cliente & vbKeyTab & RS!direccion & vbKeyTab & RS!telefono

'(tambien podia haber sido así)

Me.Picture1.Currenx = 1
Me.Picture1.CurrentY = POSY
Me.Picture1.Print RS!Cliente
Me.Picture1.Currenx = 4
Me.Picture1.Print RS!direccion
Me.Picture1.Currenx = 8
Me.Picture1.Print RS!telefono

'PASO 5
'luego lo que queda es aumentar el alto de la linea (normalmente solo es unos cuantos pixeles 25 o 30)
RS.MoveNext
POSY = POSY + 1
Next

'BIEN HASTA AQUI EN DEMOSTRADO COMO SE CREARIA UN PREVIEW DE LA IMPRESION, LO UNICO QUE HAY QUE HACER SUSTITUIR
'EL OBJETO PICTURE1 POR EL OBJETO "PRINTER" PARA SACAR EL MISMO FORMATO A LA IMPRESORA
'EJEMPLO: Printer.CurrentX = POSX
' Printer.CurrentY = POSY
' Printer.Print RS!Cliente & vbKeyTab & RS!direccion & vbTab & RS!telefono


'PASO 6
'Si llegamos a este punto es porque la POSY llego al final de la hoja, hay que hacer que salte de pagina

Printer.NewPage

'asi automaticamente la impresora brincara a otra hoja
'y si teniamos un ciclo Do while not RS.EOF continuará imprimiendo registros
'Si queremos finalizar la impresion usamos

Printer.EndDoc

De cualquier forma checha la documentación del Objeto Printer, con ella se puede cambiar la impresora por default, establecer tamaños de hoja, numeros de pagina, tamaños de fuente, etc, etc,

Suerte.
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