border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

  #1 (permalink)  
Antiguo 07-05-2008, 17:34:52
Buena Participación en el Foro
 
Registrado: abr 2008
Posts: 72
william_085 Aun no valorado
Predeterminado imprimir datagrid

hola amigos, deseo imprimir el contenido de un datagrid pero solo de unos campos especificos, no todo completo.

nombre (campo de bd)
fecha dd/mm/yyyy (campo de bd)
__________________________________________

producto:

(nombre de producto)
1.- pedido1 2.- pedido2 3.- pedido3
(nombre de producto)
1.- pedido1 2.- pedido2 3.- pedido3
(nombre de producto)
1.- pedido1 2.- pedido2 3.- pedido3

y asi sucesivamente el detalle es que necesito imprimirlo en una impresora de tickets.

de antemano les agradesco mucho su tiempo.

saludos
Responder Con Cita
  #2 (permalink)  
Antiguo 07-05-2008, 21:53:37
Buena Participación en el Foro
 
Registrado: abr 2008
Posts: 72
william_085 Aun no valorado
Predeterminado Re: imprimir datagrid

ya puedo imprimir pero no me salen alineada la impresion, la primer columna esta bien alineada a la izquierda
Responder Con Cita
  #3 (permalink)  
Antiguo 07-05-2008, 22:27:06
Avatar de J.M.Movilla
Administrator
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 5.256
J.M.Movilla Valoración +2
Predeterminado Re: imprimir datagrid

Para que te salgan las columnas bien alineadas, tienes que definir el punto horizontal en que quieres que comience la impresión de los datos de cada columna:

Código:
Printer.CurrentY = ValorParaLaLínea

Printer.CurrentX = ValorParaLaPrimeraColumna
Printer.Print DatoDeLaPrimeraColumna

Printer.CurrentX = ValorParaLaSegundaColumna
Printer.Print DatoDeLaSegundaColumna

Printer.CurrentX = ValorParaLaTerceraColumna
Printer.Print DatoDeLaTerceraColumna
Naturalmente, esto te resultará más fácil si manejas un Array (aCol(0), aCol(1), aCol(2)... - aDat(0), aDat(1), aDat(2)...) y puedas poner

Código:
Printer.CurrentY = ValorParaLaLínea
For i = 0 to xxx
    Printer.CurrentX = aCol(i)
    Printer.Print aDat(i)
Next i
__________________
José María Movilla Cuadrado
______________________

Visual Basic Videos Programacion Foro Programacion
Tutoriales Programacion Trucos Programacion Codigos Programacion
Responder Con Cita
  #4 (permalink)  
Antiguo 07-05-2008, 22:30:30
Buena Participación en el Foro
 
Registrado: abr 2008
Posts: 72
william_085 Aun no valorado
Predeterminado Re: imprimir datagrid

a muy bien, solo una cosa mas, yo uso esta funcion para imprimir.

Public Function imprimir(ByVal DataGrid As DataGrid, _
ByVal rs3 As ADODB.Recordset, _
ByVal Titulo As String) As Boolean



Dim c As Integer
Dim dato As String
Dim Titles As String
Dim Header As String
Dim l As Integer 'number of lines For portrait
Dim LLCount As Integer 'temporary line counter
Dim Rowado As Integer
Dim Rowdatag As Integer
Dim registro As String * MAX_CARACTERES
Dim t As String * MAX_CARACTERES

Screen.MousePointer = vbHourglass

DataGrid1.Row = 0
Header = " PRODUCTOS:"
Printer.Font.Size = 10
Printer.Font.Bold = True
Printer.Font.Name = "Courier"


Printer.Print " SUCURSAL: "; Label3
Printer.Print " "
Printer.Print " FECHA: "; Label4


For c = 1 To DataGrid.Columns.Count

t = DataGrid.Columns(c - 1).Caption

Titles = " " & LTrim(Titles & t) & " "
Next
' Configura la fuente de la impresión para el encabezado

Printer.Font.Size = 8
Printer.Font.Bold = True
Printer.Font.Name = "courier"



l = 82
' imprime el titulo , el encabezado y el número de página

Printer.Print Space(20) & Titulo
Printer.Print Header; Printer.Page
Printer.Print Titles
Printer.Font.Bold = False

DataGrid.Refresh

' recorre los datos del datagrid
For Rowado = 1 To Int((rs3.RecordCount - 1) / 13) + 1


For Rowdatag = 0 To DataGrid.VisibleRows - 2
DataGrid.RowBookmark (Rowdatag)
dato = Space(MAX_CARACTERES)

Dim s As Variant
For c = 1 To DataGrid.Columns.Count

registro = DataGrid.Columns(c - 1).CellText(DataGrid.Bookmark)

dato = " " & LTrim(dato & registro) & " "

Next
LLCount = LLCount + 1


If LLCount <= l Then

Printer.Print dato
Else
' Agrega una nueva hoja

Printer.NewPage
Printer.Print Space(40) & Titulo
Printer.Print Header; Printer.Page
Printer.Print Titles
Printer.Print dato
LLCount = 0

End If
rs3.MoveNext
Next Rowdatag
DataGrid.Scroll 0, DataGrid.VisibleRows
Next Rowado
Printer.Print " "
Printer.EndDoc
Screen.MousePointer = vbNormal

imprimir = True

Exit Function

' error
Error_Function:

MsgBox Err.Description, vbCritical


End Function

aqui me imprime los datos completo que contiene el datagrid, pero dentro de este, como le podre meter ese tipo de codigo de scalex scaley para alinear los datos que vienen desde el datagrid?
Responder Con Cita
  #5 (permalink)  
Antiguo 08-05-2008, 19:24:34
Avatar de J.M.Movilla
Administrator
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 5.256
J.M.Movilla Valoración +2
Predeterminado Re: imprimir datagrid

No me veo yo con tu código... Creo que tal como lo tienes diseñado no es la mejor forma para que puedas controlar los encolumnados y la alineación de los datos, sobre todo los numéricos, para que vayan con decimales, a la derecha...

Quizás consigas hacer una alineación adecuada cambiando la línea
Código:
                 dato = "   " & LTrim(dato & registro) & " "
por
Código:
                 dato = "   " & LTrim(dato & registro) & vbTab
__________________
José María Movilla Cuadrado
______________________

Visual Basic Videos Programacion Foro Programacion
Tutoriales Programacion Trucos Programacion Codigos Programacion
Responder Con Cita
  #6 (permalink)  
Antiguo 08-05-2008, 20:40:08
Buena Participación en el Foro
 
Registrado: abr 2008
Posts: 72
william_085 Aun no valorado
Predeterminado Re: imprimir datagrid

si, ya salieron un poco mejor, solo una ultima duda por favor.

como le puedo hacer para que la primera columna del data grid queda arriba y las demas abajo.

asi:

primera columna.
(dato1)

segunda columna tercera columna cuarta columna
(dato1) (dato1) (dato1)


primera columna.
(dato2)

segunda columna tercera columna cuarta columna
(dato2) (dato2) (dato2)


primera columna.
(dato3)

segunda columna tercera columna cuarta columna
(dato3) (dato3) (dato3)


............... y asi sucesivamente
como le puedo hacer para que me los imprima asi??

por que asi como tengo el codigo me los imprime asi:

primera columna segunda columna tercera columna cuarta columna
(dato1) (dato1) (dato1) (dato1)


gracias y disculpa con tanta pregunta
Responder Con Cita
  #7 (permalink)  
Antiguo 08-05-2008, 21:25:54
Buena Participación en el Foro
 
Registrado: feb 2005
Ubicación: Detras de un monitor...
Posts: 86
lee-mon-shu-pao Valoración +2
Predeterminado Re: imprimir datagrid

Concuerdo con J.M.,
lo que tienes es una mala solucion para la alineacion,
lo basico para que necesitas para imprimir son estas instrucciones :

Printer.CurrentX = 999 'Te sirven para posicionarte
Printer.CurrentY = 999

Printer.TextWidth ("El ancho del texto") 'Funcion que te entrega el ancho del texto
Printer.TextHeight ("El alto del texto") 'Funcion que te entrega el alto del texto

Printer.Print "Lo que quieras que imprimir"

Olvidate de los espacios!!!
__________________
---------------------
Ácido, pero vitamínico.

Maipú- Chile
Responder Con Cita
  #8 (permalink)  
Antiguo 08-05-2008, 21:26:07
Avatar de J.M.Movilla
Administrator
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 5.256
J.M.Movilla Valoración +2
Predeterminado Re: imprimir datagrid

Supongo que si imprimes el dato de la primera columna, y luego sustituyes
Código:
             For c = 1 To DataGrid.Columns.Count
por
Código:
             For c = 2 To DataGrid.Columns.Count
ya tendrás solucionado este otro escollo...
__________________
José María Movilla Cuadrado
______________________

Visual Basic Videos Programacion Foro Programacion
Tutoriales Programacion Trucos Programacion Codigos Programacion
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado



La franja horaria es GMT. Ahora son las 11:21:52.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right