SELECIONA EM DATAENVIROMENT
Olá, tenho um relatório datareport com group conectado via dataenviroment (vb6/access) que carrega todos dados de uma consulta do access . Pretendo inserir um textbox para que seja feita uma impressão por código. A rotina que imprime o relatorio é bem simples e não faz nenhuma seleção. Como se faz a seleção de registros pelo código digitado no textbox???Abaixo segue rotina de impressão..
Sub ImprimirRel() [ô] essa imprime todos normalmente
With rptListaRegistros
[ô].Orientation = rptOrientLandscape
.Show
End With
End Sub
Tentei algo assim mas dá erro:
Sub ImprimeSelecao()
Dim Sql As String
Dim rs As New ADODB.Recordset
With rptListaRegistros
Sql = [Ô]Select * from ConsultaRegistro WHERE ConsultaRegistro.codConselheiro=[Ô] & txtCodConselheiro.Text
[ô]Set rs = conn.Execute(Sql)
If rs.EOF = False Then
Set rptListaRegistros.DataSource = rs
End If
.Show
End With
End Sub
Sub ImprimirRel() [ô] essa imprime todos normalmente
With rptListaRegistros
[ô].Orientation = rptOrientLandscape
.Show
End With
End Sub
Tentei algo assim mas dá erro:
Sub ImprimeSelecao()
Dim Sql As String
Dim rs As New ADODB.Recordset
With rptListaRegistros
Sql = [Ô]Select * from ConsultaRegistro WHERE ConsultaRegistro.codConselheiro=[Ô] & txtCodConselheiro.Text
[ô]Set rs = conn.Execute(Sql)
If rs.EOF = False Then
Set rptListaRegistros.DataSource = rs
End If
.Show
End With
End Sub
Vc tem que verificar se o Datamember dos campos esta mesmo ligado ao lugar correto e depois de jogar o seu RS para o datasource tem que dar um refresh
Deixei em negrito no meu comando o que te falei
Segue meu preenchimento, no meu caso eu preencho o relatório sem o dataenviroment, achei mais fácil ter o controle na mão
Caso queira dar uma olhada segue o Link
With Relatorio
Set .DataSource = Rs
.DataMember = [Ô][Ô]
With .Sections([Ô]Section1[Ô]).Controls
[ô]preenche os campos com a ordem, de acordo com o que esta no select
For I = 1 To .Count
If TypeOf .Item(I) Is RptTextBox Then
.Item(I).DataMember = [Ô][Ô]
.Item(I).DataField = Rs(Z).Name
Z = Z + 1
End If
Next I
End With
[ô]O relatório não usa a mensagem e nem o perÃodo
.Sections([Ô]section2[Ô]).Controls(14).Caption = [Ô][Ô] [ô]Periodo
.Sections([Ô]section2[Ô]).Controls(15).Caption = [Ô][Ô] [ô]Mensagem
If TipoAssociado <> [Ô][Ô] And AssociadoAtivo = [Ô][Ô] Then
.Sections([Ô]section2[Ô]).Controls(16).Caption = [Ô]Tipo de Associado: [Ô] & TipoAssociado
ElseIf AssociadoAtivo <> [Ô][Ô] And TipoAssociado = [Ô][Ô] Then
.Sections([Ô]section2[Ô]).Controls(16).Caption = [Ô]Tipo de Associado: [Ô] & AssociadoAtivo
ElseIf AssociadoAtivo <> [Ô][Ô] And TipoAssociado <> [Ô][Ô] Then
.Sections([Ô]section2[Ô]).Controls(16).Caption = [Ô]Tipo de Associado: [Ô] & TipoAssociado & [Ô] e [Ô] & AssociadoAtivo
End If
.Sections([Ô]section5[Ô]).Controls(1).Caption = [Ô]Total de Associados: [Ô] & Rs.RecordCount
[ô]Posição do texto na folha
.LeftMargin = 300
.RightMargin = 0
.TopMargin = 300
.Refresh
.Show 1
End With
Deixei em negrito no meu comando o que te falei
Segue meu preenchimento, no meu caso eu preencho o relatório sem o dataenviroment, achei mais fácil ter o controle na mão
Caso queira dar uma olhada segue o Link
With Relatorio
Set .DataSource = Rs
.DataMember = [Ô][Ô]
With .Sections([Ô]Section1[Ô]).Controls
[ô]preenche os campos com a ordem, de acordo com o que esta no select
For I = 1 To .Count
If TypeOf .Item(I) Is RptTextBox Then
.Item(I).DataMember = [Ô][Ô]
.Item(I).DataField = Rs(Z).Name
Z = Z + 1
End If
Next I
End With
[ô]O relatório não usa a mensagem e nem o perÃodo
.Sections([Ô]section2[Ô]).Controls(14).Caption = [Ô][Ô] [ô]Periodo
.Sections([Ô]section2[Ô]).Controls(15).Caption = [Ô][Ô] [ô]Mensagem
If TipoAssociado <> [Ô][Ô] And AssociadoAtivo = [Ô][Ô] Then
.Sections([Ô]section2[Ô]).Controls(16).Caption = [Ô]Tipo de Associado: [Ô] & TipoAssociado
ElseIf AssociadoAtivo <> [Ô][Ô] And TipoAssociado = [Ô][Ô] Then
.Sections([Ô]section2[Ô]).Controls(16).Caption = [Ô]Tipo de Associado: [Ô] & AssociadoAtivo
ElseIf AssociadoAtivo <> [Ô][Ô] And TipoAssociado <> [Ô][Ô] Then
.Sections([Ô]section2[Ô]).Controls(16).Caption = [Ô]Tipo de Associado: [Ô] & TipoAssociado & [Ô] e [Ô] & AssociadoAtivo
End If
.Sections([Ô]section5[Ô]).Controls(1).Caption = [Ô]Total de Associados: [Ô] & Rs.RecordCount
[ô]Posição do texto na folha
.LeftMargin = 300
.RightMargin = 0
.TopMargin = 300
.Refresh
.Show 1
End With
ALVAROVB2009, fiz de outra forma e deu certo. Eu já tinha um dataenviroment com um comand que exibe TODOS os dados em um group no relatório. Então para não me confundir criei outro dataenviroment, para outro datareport e no comand para filtrar por código não usei tabela e nem view usei Sql Statement e digitei a query no campo abaixo: select * from ConsultaRegistros where codConseleheiro=? e na guia grouping habilitei group e adicionei os campos de agrupamento nos lists. No datareport setei o datamember para o comand e o datasource para o dataenviroment2 e no relatório com botão direito ativei a opção retrieve fields e configurei o design do relatório normalmente. Finalmente foi só configurar o botão imprimir como segue abaixo:
Private Sub cmdImprimir_Click()
If txtCodConselheiro.Text = [Ô][Ô] Then
ImprimirRel
End If
If txtCodConselheiro.Text <> [Ô][Ô] Then
ImprimeSelecao
End If
End Sub
Sub ImprimeSelecao()
DataEnvironment2.cmdSelRegistros_Grouping txtCodConselheiro [ô] txt do form onde digito o código do conselheiro para filtrar os dados.
rptListaRegistrosSel.Show
rptListaRegistrosSel.Refresh
DataEnvironment2.rscmdSelRegistros_Grouping.Close
End Sub
é isso ai. ALVAROVB2009 valeu a atenção, mesmo assim vou te pontuar e encerrar por aqui...!!!!
Alan
Private Sub cmdImprimir_Click()
If txtCodConselheiro.Text = [Ô][Ô] Then
ImprimirRel
End If
If txtCodConselheiro.Text <> [Ô][Ô] Then
ImprimeSelecao
End If
End Sub
Sub ImprimeSelecao()
DataEnvironment2.cmdSelRegistros_Grouping txtCodConselheiro [ô] txt do form onde digito o código do conselheiro para filtrar os dados.
rptListaRegistrosSel.Show
rptListaRegistrosSel.Refresh
DataEnvironment2.rscmdSelRegistros_Grouping.Close
End Sub
é isso ai. ALVAROVB2009 valeu a atenção, mesmo assim vou te pontuar e encerrar por aqui...!!!!
Alan
Tópico encerrado , respostas não são mais permitidas