Leandro_Pirozzi Postado Abril 1, 2009 Denunciar Share Postado Abril 1, 2009 é possível imprimir o que é exibido em um Datagrid? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 1, 2009 Denunciar Share Postado Abril 1, 2009 é, veja se ajuda: http://www.macoratti.net/printer.htm Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leandro_Pirozzi Postado Abril 2, 2009 Autor Denunciar Share Postado Abril 2, 2009 Nossa de tanto q eu já li matéria sobre isso estou ficando doido e o maximo q consegui imprimir foi o cabeçalho do datagrid. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leandro_Pirozzi Postado Abril 2, 2009 Autor Denunciar Share Postado Abril 2, 2009 (editado) Nossa de tanto q eu já li matéria sobre isso estou ficando doido e o maximo q consegui imprimir foi o cabeçalho do datagrid.Bom vou postar a function que estou utilizando, porém não consigo imprimir o conteúdo do recordset. Somente imprime o cabeçalho com o nome dos campos da tabela. Se alguém puder ajudar. Agradeço.É necessário adicionar a Referencia Microsoft Activex data Objects.Public Function imprimir(ByVal DataGrid1 As DataGrid, _ ByVal rsbuscapers As ADODB.Recordset, _ ByVal Titulo As String) As Boolean On Error GoTo Error_Function 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 MyArray(20) As Integer Dim Rowado As Integer Dim Rowdatag As Integer Dim mAllowAddNew As Boolean mAllowAddNew = DataGrid1.AllowAddNew DataGrid1.AllowAddNew = False DataGrid1.Row = 0 Screen.MousePointer = vbHourglass Header = " - Página n°: " ' Recupera os dados da coluna For c = 1 To DataGrid1.Columns.Count MyArray© = Len(DataGrid1.Columns(c - 1).Caption) + 10 Titles = Titles & Space(10) & DataGrid1.Columns(c - 1).Caption Next ' Configura a fonte da impressão para os dados Printer.Font.Size = 9 Printer.Font.Bold = True Printer.Font.Name = "Courier New" Printer.Orientation = vbPRORPortrait l = 82 ' Imprime o titulo , os dados e o número de páginas Printer.Print Space(40) & Titulo Printer.Print Header; Printer.page Printer.Print Titles Printer.Font.Bold = False DataGrid1.Refresh ' Percorre os dados do Datagrid For Rowado = 1 To Int((rsbuscapers.RecordCount - 1) / 13) + 1 For Rowdatag = 0 To DataGrid1.VisibleRows - 1 DataGrid1.RowBookmark (Rowdatag) dato = Space(10) For c = 1 To DataGrid1.Columns.Count dato = dato & DataGrid1.Columns(c - 1).CellText(DataGrid1.Bookmark) & _ Space(MyArray© - _ Len(DataGrid1.Columns(c - 1).CellText(DataGrid1.Bookmark))) Next LLCount = LLCount + 1 If LLCount <= l Then Printer.Print dato Else ' Adiciona nova folha Printer.NewPage Printer.Print Space(40) & Titulo Printer.Print Header; Printer.page Printer.Print Titles Printer.Print dato LLCount = 0 End If rsbuscapers.MoveNext Next Rowdatag DataGrid1.Scroll 0, DataGrid1.VisibleRows Next Rowado Printer.Print " " Printer.EndDoc Screen.MousePointer = vbNormal imprimir = True DataGrid1.AllowAddNew = mAllowAddNew Exit Function ' erro Error_Function: MsgBox Err.Description, vbCritical DataGrid1.AllowAddNew = mAllowAddNew Screen.MousePointer = vbNormal End Function 'Aqui onde chamo a function, passando como parametros o Datagrid, o recordset e o título que será impresso. Private Sub Image1_Click() Call imprimir(DataGrid1, rsbuscapers, "PERSPECTIVAS") End Sub 'mesmo assim não imprime o conteudo do RECORDSET. Private Sub Form_Load() Me.Height = 2370 Me.Width = 4500 txtpers.Text = "pers" Set cnbuscapers = New Connection cnbuscapers.CursorLocation = adUseClient ' usa o BD cnbuscapers.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ App.Path & "\CONTATOS.mdb;Persist Security Info=False" ' abre a conexao ADO cnbuscapers.Open ' Cria um novo recordset Set rsbuscapers = New Recordset ' abre os registros rsbuscapers.Open "SELECT EMPRESA, CONTATO, HISTORICO, DATATAREFA, ASSESSOR From CONTATOS_HISTORICO", _ cnbuscapers, adOpenStatic, adLockOptimistic ' inicia o datagrid Set DataGrid1.DataSource = rsbuscapers End Sub Editado Abril 2, 2009 por Leandro_Pirozzi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 2, 2009 Denunciar Share Postado Abril 2, 2009 leandro, nunca esqueca q o seu grid ta vinculado a um recordset.sendo assim, é muito mais facil pegar os dados do recordset do q do grid.olha como o macoratti faz naquele link:Private Sub imprime_dados() Dim tamanhofolha As Integer Dim i As Integer 'define a fonte e o tamanhao da fonte Printer.FontName = "Arial" Printer.FontSize = "10" tamanhofolha = Printer.ScaleHeight - 1440 'define o tamanho da folha rs.MoveFirst 'movimenta o ponteiro para o primeiro registro contapagina = 0 'inicia o variável Call cabecalho 'chama a rotina do cabeçalhoDo While Not rs.EOF ' If Printer.CurrentY >= tamanhofolha Then 'verifica se se folha já 'encheu' Printer.NewPage Call cabecalho End If '---------------imprime os dados da tabela---------------------------- Printer.Print Tab(0); rs("nome"); Printer.Print Tab(30); rs("endereço"); Printer.Print Tab(60); rs("cidade"); Printer.Print Tab(90); rs("estado"); Printer.Print Tab(95); rs("cep") '-------------------------------------------- rs.MoveNext 'vai para o proximo registroLoopPrinter.EndDoc 'envia os dados para a impressoraMsgBox "Os dados foram enviados para a impressora ... ! "End Sub[/code] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leandro_Pirozzi Postado Abril 3, 2009 Autor Denunciar Share Postado Abril 3, 2009 leandro, nunca esqueca q o seu grid ta vinculado a um recordset.sendo assim, é muito mais facil pegar os dados do recordset do q do grid.olha como o macoratti faz naquele link:Private Sub imprime_dados() Dim tamanhofolha As Integer Dim i As Integer 'define a fonte e o tamanhao da fonte Printer.FontName = "Arial" Printer.FontSize = "10" tamanhofolha = Printer.ScaleHeight - 1440 'define o tamanho da folha rs.MoveFirst 'movimenta o ponteiro para o primeiro registro contapagina = 0 'inicia o variável Call cabecalho 'chama a rotina do cabeçalho Do While Not rs.EOF ' If Printer.CurrentY >= tamanhofolha Then 'verifica se se folha já 'encheu' Printer.NewPage Call cabecalho End If '---------------imprime os dados da tabela---------------------------- Printer.Print Tab(0); rs("nome"); Printer.Print Tab(30); rs("endereço"); Printer.Print Tab(60); rs("cidade"); Printer.Print Tab(90); rs("estado"); Printer.Print Tab(95); rs("cep") '-------------------------------------------- rs.MoveNext 'vai para o proximo registro Loop Printer.EndDoc 'envia os dados para a impressora MsgBox "Os dados foram enviados para a impressora ... ! " End SubOpa Kuroi consegui fazer imprimir, obrigadão.Deixa só perguntar uma coisa.Voce tem idéia de como fazer quando o texto q esta sendo impresso é grande e não sai na folha, porque ele imprime somente uma linha se o texto for maior não imprime na linha debaixo.olha meu codigo. Dim tamanhofolha As Integer Dim i As Integer 'define a fonte e o tamanhao da fonte Printer.FontName = "Arial" Printer.FontSize = "9" tamanhofolha = Printer.ScaleHeight - 1400 'define o tamanho da folha rsbuscapers.MoveFirst 'movimenta o ponteiro para o primeiro registro contapagina = 0 'inicia o variávelCall cabecalho 'chama a rotina do cabeçalhoDo While Not rsbuscapers.EOF ' If Printer.CurrentY >= tamanhofolha Then 'verifica se se folha já 'encheu' Printer.NewPage Call cabecalho End If '---------------imprime os dados da tabela----------------------------Printer.Print Tab(0); "EMPRESA"Printer.Print Tab(5); rsbuscapers("EMPRESA")Printer.Print Tab(0); "CONTATO"Printer.Print Tab(5); rsbuscapers("CONTATO")Printer.Print Tab(0); "HISTORICO"Printer.Print Tab(5); rsbuscapers("HISTORICO") 'Por exemplo aqui normalmente so imprime uma linha e geralmente tenho varias linhas e não continua na linha debaixo, já vai direto para DATATAREFAPrinter.Print Tab(0); "DATA DA TAREFA"Printer.Print Tab(5); rsbuscapers("DATATAREFA")Printer.Print Tab(0); "ASSESSOR"Printer.Print Tab(5); rsbuscapers("ASSESSOR")Call linha '-------------------------------------------- rsbuscapers.MoveNext 'vai para o proximo registroLoop Printer.EndDoc 'envia os dados para a impressora MsgBox "Os dados foram enviados para a impressora ... ! "End Sub Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Leandro_Pirozzi
é possível imprimir o que é exibido em um Datagrid?
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.