SELECIONA EM DATAENVIROMENT

ALANTB 16/06/2016 12:28:20
#463620
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
ALVAROVB2009 16/06/2016 13:50:45
#463627
Resposta escolhida
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
ALANTB 17/06/2016 10:15:36
#463717
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
Tópico encerrado , respostas não são mais permitidas