|
Imprimir Datagridview, este codigo esta en visual estudio, no lo tengo en .NET, quizas te sirva. Salu2.
Dim cn As Connection Dim rs As Recordset Const MAX_CARACTERES As Byte = 30
Public Function imprimir(ByVal DataGrid As DataGrid, _ ByVal rs 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 = " - Página n°: " 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 New" l = 82 ' imprime el titulo , el encabezado y el número de página Printer.Print Space(40) & 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((rs.RecordCount - 1) / 13) + 1 For Rowdatag = 0 To DataGrid.VisibleRows - 1 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 rs.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
' botón que imprime Private Sub Command1_Click() Call imprimir(DataGrid1, rs, "Ejemplo") End Sub
Private Sub Form_Load() Set cn = New Connection cn.CursorLocation = adUseClient ' usa la base de datos Nwind del directorio de visual basic cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ "C:\Archivos de programa\Microsoft Visual Studio\" & _ "VB98\NWIND.MDB;Persist Security Info=False" ' abre la conexión ado cn.Open ' Crea un nuevo recordset Set rs = New Recordset ' abre el conjunto de registros rs.Open "Select IdEmpleado,Apellidos,Nombre,cargo From Empleados", _ cn, adOpenStatic, adLockOptimistic ' enlaza el datagrid Set DataGrid1.DataSource = rs End Sub
|
|
|
|