Ver Mensaje Individual
  #6 (permalink)  
Antiguo 12/10/2008, 22:54
KingColt
 
Fecha de Ingreso: febrero-2008
Mensajes: 303
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Imprimir recordset - expertos en el objeto printer

Bueno agregue mas columnas y todo perfecto.
Ahora al poner un campo contenido en txtTotal que esta fuera del bucle, se descuadra con
relacion al campo !subTotal que esta dentro del bucle, pero solo a veces y no pillo donde esta el error de por que se descuadra, solo sucede esto cuando la lista es muy extensa, dejo esta imagen para que vean el problema

Código:
Private Sub cmdImprimir_Click()
Dim iCol As Integer, iFila As Integer, sImp As String, sImp2 As String, sImp3 As String
    
iCol = 5        ' margen izquierdo
iFila = 2       ' 1ª línea de págima

' Inicializamos la impresora
Printer.Print "";
With Printer
    .ScaleMode = vbCharacters
    .FontName = "LinePrinter"
    .FontSize = 9
    .CurrentY = iFila
    .CurrentX = iCol
End With

Printer.Print "Fecha" & " : " & txtFecha;
Printer.CurrentX = 56
Printer.Print "Boleta Nº" & " : " & txtBoleta
Printer.Print

' Encabezado del informe
Printer.CurrentX = iCol
Printer.Print "Descripción";
Printer.CurrentX = iCol + 39.5
Printer.Print "Precio";
Printer.CurrentX = iCol + 47.5
Printer.Print "Cantidad";
Printer.CurrentX = iCol + 58
Printer.Print "Subtotal";
Printer.Print

'Printer.FontBold = False
rsTemporal.MoveFirst
Do Until rsTemporal.EOF
    With rsTemporal
        Printer.CurrentX = iCol
        Printer.Print !nomProd;
        sImp = Format(!precioVenta, "###0.00")
        Printer.CurrentX = 49 - (Printer.TextWidth(sImp)) 'Alinea los decimales a la derecha?
        Printer.Print sImp;
       
        sImp2 = Format(!cantidad)
        Printer.CurrentX = 59 - (Printer.TextWidth(sImp2))
        Printer.Print sImp2;
        
        sImp3 = Format(!SubTotal, "###0.00")
        Printer.CurrentX = 69 - (Printer.TextWidth(sImp3))
        Printer.Print sImp3;
        
        Printer.CurrentY = Printer.CurrentY + 0.9 'Espacio entre cada fila del rs
    End With
    rsTemporal.MoveNext
Loop

Printer.Print
Printer.CurrentX = 69 - (Printer.TextWidth(sImp3))
Printer.Print Trim(txtTotal)
Printer.Print
Printer.CurrentX = 5
Printer.Print "Vendedor" & " : " & dtcEmpleado.Text
Printer.EndDoc

End Sub
saludos