Como criar programaticamente uma nova coluna num relatório do Access
Número original da BDC: 812719
Resumo
Este artigo descreve como criar programaticamente uma coluna num relatório do Access. Pode adicionar dinamicamente a coluna ao relatório com o Método 1 ou o Método 2 descritos na secção "Mais Informações".
Nota
O código de exemplo neste artigo utiliza Objetos do Microsoft Data Access. Para que este código seja executado corretamente, tem de referenciar a Biblioteca de Objetos do Microsoft DAO 3.6. Para tal, clique em Referências no menu Ferramentas no visual basic Revisor e certifique-se de que a caixa de verificação Biblioteca de Objetos do Microsoft DAO 3.6 está selecionada.
Método 1: Adicionar Colunas ao Relatório Programaticamente
O exemplo que se segue mostra-lhe como criar programaticamente um relatório do Access. O código gera um relatório baseado na consulta de origem de registos. O relatório gerado apresenta a coluna Firstname e a coluna Lastname da tabela Employees da base de dados de exemplo Northwind.mdb.
Inicie o Access.
No menu Ajuda , clique em Bases de Dados de Exemplo e, em seguida, clique em Base de Dados de Exemplo da Northwind. Feche o formulário Do Painel de Navegação Principal quando for apresentado.
Nota
No Access 2007, clique em Exemplo no painel Categorias de Modelo, clique em Northwind 2007 e, em seguida, clique em Transferir.
No painel esquerdo, clique em Relatórios.
Nota
No Access 2007, ignore este passo.
No painel direito, faça duplo clique em Criar relatório na Vista estrutura.
Nota
No Access 2007, clique em Estrutura do Relatório no grupo Relatórios no separador Criar .
No menu Ficheiro , clique em Guardar.
Nota
No Access 2007, clique no Botão do Microsoft Office e, em seguida, clique em Guardar.
Na caixa de diálogo Guardar Como , escreva AccessColumnBuilder e, em seguida, clique em OK.
Feche o relatório.
No painel esquerdo, selecione Formulários.
Nota
No Access 2007, ignore este passo.
No painel direito, faça duplo clique em Criar formulário na Vista estrutura.
Nota
No Access 2007, clique em Estrutura do Formulário no grupo Formulários no separador Criar .
Adicionar um botão de comando ao formulário.
Nota
No Access 2007, clique em Botão para adicionar um botão ao formulário no grupo Controlos no separador Estrutura .
Clique com o botão direito do rato no botão de comando, clique em Criar Evento, clique em Construtor de Código na caixa de diálogo Escolher Construtor e, em seguida, clique em OK.
Adicione o código que se segue ao evento OnClick do botão de comando:
Dim txtNew As Access.TextBox Dim labNew As Access.Label Dim lngTop As Long Dim lngLeft As Long Dim lblCol As Long Dim rpt As Report Dim reportQuery As String Dim rs As DAO.Recordset Dim i As Integer Dim prevColwidth As long lngLeft = 0 lngTop = 0 ' Open the report to design. ' To make changes in the number of columns that appear at run time. DoCmd.OpenReport "AccessColumnBuilder", acViewDesign Set rpt = Reports![AccessColumnBuilder] ' Change the number of columns required as per your requirement. reportQuery = "SELECT FirstName, LastName FROM Employees" ' Open the recordset. Set rs = CodeDb().OpenRecordset(reportQuery) ' Assign the query as a record source to report control. rpt.RecordSource = reportQuery ' Set the value to zero so that the left margin is initialized. prevColwidth = 0 lblCol = 0 ' Print the page header for the report. For i = 0 To rs.Fields.Count - 1 Set labNew = CreateReportControl(rpt.Name, acLabel, acPageHeader, _ , rs.Fields(i).Name, lblcol, , , lngTop) labNew.SizeToFit lblCol = lblCol + 600 + labNew.Width Next ' Create the column depending on the number of fields selected in reportQuery. ' Assign the column value to new created column. For i = 0 To rs.Fields.Count - 1 ' Create new text box control and size to fit data. Set txtNew = CreateReportControl(rpt.Name, acTextBox, _ acDetail, , , lngLeft + 15 + prevColwidth, lngTop) txtNew.SizeToFit txtNew.ControlSource = rs(i).Name ' Modify the left margin depending on the number of columns ' and the size of each column. prevColwidth = prevColwidth + txtNew.width Next 'To save the modification to the report, uncomment the following line of code: 'DoCmd.Save ' View the generated report. DoCmd.OpenReport "AccessColumnBuilder", acViewPreview ' This opens the report in preview.
Guarde e, em seguida, execute o formulário.
Para pré-visualizar o relatório, clique no botão de comando que adicionou no passo 10.
Os registos que se seguem aparecem na primeira página:
First NameLast Name NancyDavolio MargaretPeacock ...............
O relatório contém a coluna Nomepróprio e a coluna Apelido da tabela Funcionários . Pode guardar o relatório ou fazer as alterações necessárias à consulta e, em seguida, executar o relatório.
Método 2: Adicionar colunas ao relatório no tempo de execução ao definir a propriedade visível da coluna existente
Este exemplo mostra-lhe como apresentar uma nova coluna num relatório ao manipular a propriedade Visible do controlo.
O relatório contém quatro colunas. A Visible
propriedade das três primeiras colunas está definida como sim. A Visible
propriedade da quarta coluna está definida como não. Numa quebra de página, a Visible
propriedade da quarta coluna está definida como sim quando a coluna é apresentada.
Inicie o Access.
No menu Ajuda , clique em Bases de Dados de Exemplo e, em seguida, clique em Base de Dados de Exemplo da Northwind. Feche o formulário Do Painel de Navegação Principal quando for apresentado.
Nota
No Access 2007, clique em Exemplo no painel Categorias de Modelo, clique em Northwind 2007 e, em seguida, clique em Transferir.
Para criar um relatório com o nome Report1 e baseado na tabela Produtos , siga estes passos:
Na janela Base de Dados , clique em Relatórios e, em seguida, clique em Novo.
Nota
No Access 2007, clique em Assistente de Relatórios no grupo Relatórios no separador Criar .
Na caixa de diálogo Novo Relatório , clique em Vista Estrutura, selecione Produtos e, em seguida, clique em OK.
Adicione as seguintes caixas de texto à secção Detalhes do relatório. Alinhar as caixas de texto.
Coloque as etiquetas correspondentes na secção Cabeçalho da Página do relatório. Alinhe as etiquetas.
Report: Report1 -------------------------- Caption: TestReport ControlSource: Products Label: Name: ProductName_label Text Box: Name: ProductName ControlSource: ProductName Label: Name: UnitPrice_label Text Box: Name: UnitPrice ControlSource: UnitPrice Label: Name: UnitsInStock_label Text Box: Name: UnitsInStock ControlSource: UnitsInStock Label: Name: TotalPrice_label Visible: No Text Box: Name: TotalPrice ControlSource: =[UnitPrice] * [UnitsInStock] Visible: No
Adicione um controlo de caixa de texto com as seguintes propriedades à secção Detalhes . Coloque a caixa de texto diretamente acima do controlo ProductName .
Este controlo funciona como um contador para o número de registos no relatório.
Text Box: ----------------------- Name: Counter ControlSource: =1 Visible: No RunningSum: Over All
Na Caixa de Ferramentas, clique em Quebra de Página.
Nota
No Access 2007, clique em Adicionar ou Remover Quebra de Página no grupo Controlos no separador Estrutura .
Adicione um controlo de quebra de página ao canto inferior esquerdo da secção Detalhes . Coloque o controlo de quebra de página diretamente abaixo do controlo ProductName . Defina a propriedade Nome como PageBreak.
Na secção Detalhe , defina a propriedade OnFormat para o seguinte procedimento de evento:
If Me![Counter] Mod 2 = 0 Then Me![PageBreak].Visible = True _ Else Me![PageBreak].Visible = False
Para reduzir o espaço em branco no relatório, coloque o ponteiro entre a parte inferior da secção Detalhe e o Rodapé da Página e, em seguida, arraste para cima.
Na secção Rodapé da Página , defina a propriedade OnPrint para o procedimento de evento que se segue:
If Me![PageBreak].Visible = True Then Me![TotalPrice].Visible = True Me![TotalPrice_label].Visible = True Else Me![TotalPrice].Visible = False Me![TotalPrice_label].Visible = False End If
Quando o PageBreak ocorre, é apresentada a coluna Preço Total .
Pré-visualize o relatório. Os registos que se seguem aparecem na primeira página:
Product NameUnit PriceUnit in Stock Cahi$18.0039 Chang$19.0017
Nota
A primeira página do relatório contém três colunas.
Os registos que se seguem aparecem na segunda página:
Product NameUnit PriceUnit in StockTotal Amount Aniseed Syrup $10.0013 130 Chef A... $22.00 53 1166
Nota
A quebra de página ocorre após a primeira página. Por conseguinte, a segunda página do relatório contém quatro colunas.
Referências
Para obter mais informações sobre como criar programaticamente um relatório do Access, veja o seguinte artigo:
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários