Imprimir grilla

Buenas experto, tu anterior respuesta me ha ayudado mucho. El criystal report le tengo (aunque en su día le desinstalé). Estoy utilizando el objeto printer (aunque sea más laborioso) el problema ve viene que cuando imprimo los datos de la grilla (suponemos que tenemos dos registros) este ultimo registro me lo imprime tantas veces como´"lineas" tengo creadas te paso el código: ¿Me puedes ayudar?
Private Sub aceptar_pretamos_Click()
On Error Resume Next
Dim logo As Picture
Set logo = LoadPicture("F:\SEÑOR\PROGRAMACION\SERVIGUARDA\SERVIGUARDA\logo.gif")
Printer.PaintPicture logo, 1500, 0
Printer.CurrentX = 1500
Printer.CurrentY = 1400
Printer.Print "JOAQUIN Y ANA, S.L."
Printer.CurrentX = 1500
Printer.CurrentY = 1600
Printer.Print "C/ GALLO, 3"
Printer.CurrentX = 1500
Printer.CurrentY = 1800
Printer.Print "47012-VALLADOLID"
Printer.CurrentX = 7500
Printer.CurrentY = 750
Printer.Font.Size = 10
Printer.Print "Salida nº:"
Printer.CurrentX = 8600
Printer.CurrentY = 750
Printer.Font.Size = 10
Printer.Print frmprestamos.txtsalida
Printer.CurrentX = 7500
Printer.CurrentY = 1000
Printer.Font.Size = 10
Printer.Print "Fecha:"
Printer.CurrentX = 8600
Printer.CurrentY = 1000
Printer.Font.Size = 10
Printer.Print frmprestamos.txtfechaalbaran
Printer.CurrentX = 7500
Printer.CurrentY = 1400
Printer.Font.Size = 10
Printer.Print "Cliente:"
Printer.CurrentX = 8600
Printer.CurrentY = 1400
Printer.Font.Size = 10
Printer.Print frmprestamos.txtnombrecliente
Printer.CurrentX = 1600
Printer.CurrentY = 4000
Printer.Font = 12
Printer.FontBold = True
Printer.Print "Código"
Printer.CurrentX = 4100
Printer.CurrentY = 4000
Printer.Font = 12
Printer.FontBold = True
Printer.Print "Descripción"
Printer.CurrentX = 7500
Printer.CurrentY = 4000
Printer.Font = 12
Printer.FontBold = True
Printer.Print "Tipo de consulta"
'para la linea del grid 1
Printer.CurrentX = 1600
Printer.CurrentY = 4500
frmprestamos.grillaprestar.Col = 1
frmprestamos.grillaprestar.Row = 1
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 4100
Printer.CurrentY = 4500
frmprestamos.grillaprestar.Col = 2
frmprestamos.grillaprestar.Row = 1
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 7500
Printer.CurrentY = 4500
frmprestamos.grillaprestar.Col = 3
frmprestamos.grillaprestar.Row = 1
Printer.Print frmprestamos.grillaprestar.Text
'para la linea del grid 2
Printer.CurrentX = 1600
Printer.CurrentY = 4800
frmprestamos.grillaprestar.Col = 1
frmprestamos.grillaprestar.Row = 2
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 4100
Printer.CurrentY = 4800
frmprestamos.grillaprestar.Col = 2
frmprestamos.grillaprestar.Row = 2
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 7500
Printer.CurrentY = 4800
frmprestamos.grillaprestar.Col = 3
frmprestamos.grillaprestar.Row = 2
Printer.Print frmprestamos.grillaprestar.Text
'para la linea del grid 3
Printer.CurrentX = 1600
Printer.CurrentY = 5100
frmprestamos.grillaprestar.Col = 1
frmprestamos.grillaprestar.Row = 3
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 4100
Printer.CurrentY = 5100
frmprestamos.grillaprestar.Col = 2
frmprestamos.grillaprestar.Row = 3
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 7500
Printer.CurrentY = 5100
frmprestamos.grillaprestar.Col = 3
frmprestamos.grillaprestar.Row = 3
Printer.Print frmprestamos.grillaprestar.Text
'para la linea del grid 4
Printer.CurrentX = 1600
Printer.CurrentY = 5400
frmprestamos.grillaprestar.Col = 1
frmprestamos.grillaprestar.Row = 4
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 4100
Printer.CurrentY = 5400
frmprestamos.grillaprestar.Col = 2
frmprestamos.grillaprestar.Row = 4
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 7500
Printer.CurrentY = 5400
frmprestamos.grillaprestar.Col = 3
frmprestamos.grillaprestar.Row = 4
Printer.Print frmprestamos.grillaprestar.Text
'para la linea del grid 5
Printer.CurrentX = 1600
Printer.CurrentY = 5700
frmprestamos.grillaprestar.Col = 1
frmprestamos.grillaprestar.Row = 5
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 4100
Printer.CurrentY = 5700
frmprestamos.grillaprestar.Col = 2
frmprestamos.grillaprestar.Row = 5
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 7500
Printer.CurrentY = 5700
frmprestamos.grillaprestar.Col = 3
frmprestamos.grillaprestar.Row = 5
Printer.Print frmprestamos.grillaprestar.Text
'para la linea del grid 6
Printer.CurrentX = 1600
Printer.CurrentY = 6000
frmprestamos.grillaprestar.Col = 1
frmprestamos.grillaprestar.Row = 6
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 4100
Printer.CurrentY = 6000
frmprestamos.grillaprestar.Col = 2
frmprestamos.grillaprestar.Row = 6
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 7500
Printer.CurrentY = 6000
frmprestamos.grillaprestar.Col = 3
frmprestamos.grillaprestar.Row = 6
Printer.Print frmprestamos.grillaprestar.Text
'para la linea del grid 7
Printer.CurrentX = 1600
Printer.CurrentY = 6300
frmprestamos.grillaprestar.Col = 1
frmprestamos.grillaprestar.Row = 7
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 4100
Printer.CurrentY = 6300
frmprestamos.grillaprestar.Col = 2
frmprestamos.grillaprestar.Row = 7
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 7500
Printer.CurrentY = 6300
frmprestamos.grillaprestar.Col = 3
frmprestamos.grillaprestar.Row = 7
Printer.Print frmprestamos.grillaprestar.Text
'para la linea del grid 8
Printer.CurrentX = 1600
Printer.CurrentY = 6600
frmprestamos.grillaprestar.Col = 1
frmprestamos.grillaprestar.Row = 8
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 4100
Printer.CurrentY = 6600
frmprestamos.grillaprestar.Col = 2
frmprestamos.grillaprestar.Row = 8
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 7500
Printer.CurrentY = 6600
frmprestamos.grillaprestar.Col = 3
frmprestamos.grillaprestar.Row = 8
Printer.Print frmprestamos.grillaprestar.Text
'para la linea del grid 9
Printer.CurrentX = 1600
Printer.CurrentY = 6900
frmprestamos.grillaprestar.Col =...

1 Respuesta

Respuesta
1
Vamos a hacer lo siguiente:
1 - Dejamos la primera parte como está, esto sería el encabezado.
2 - Manejamos la impresión de los detalles como un loop.
Para ello al cargar la grilla controlamos cuantas líneas de datos cargamos,
normalmente este dato está contenido en Grillaprestar. Rows - 1 (menos la de títulos)
Usamos una variables para controlar las líneas y el valor de la coordenada vertical.
La impresión del detalle quedaría más o menos así:
Linw = Grillaprestar.Rows - 1
Valy = 4000
For K = 1 to Linw
Valy = valy + 500
Printer.CurrentX = 1600
Printer.CurrentY = valy
frmprestamos.grillaprestar.Col = 1
frmprestamos.grillaprestar.Row = K
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 4100
Printer.CurrentY = Valy
frmprestamos.grillaprestar.Col = 2
frmprestamos.grillaprestar.Row = K
Printer.Print frmprestamos.grillaprestar.Text
Printer.CurrentX = 7500
Printer.CurrentY = Valy
frmprestamos.grillaprestar.Col = 3
frmprestamos.grillaprestar.Row = K
Printer.Print frmprestamos.grillaprestar.Text
Next K
frmprestamos.cmdprestar.Enabled = True
frmprestamos.cmdprestar.SetFocus
frmprestamos.cmdimprimir.Enabled = False
Printer.EndDoc
End Sub
Si el impreso puede ser de más de una página entonces
colocas el encabezado en una Sección aparte y tendrías
que controlar por el valor de la coordenada vertical
o por el número de líneas impresas cuando debes hacer el
salto de página con Printer. NewPage
No olvides valorar y cerrar la respuesta.
Valorar y cerrar esta consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas