RECORDSET NO ACTIVEREPORT 2.0

ADEMIRBP 20/05/2011 14:37:55
#374573
A sintaxe abaixo é pra listar pessoas e seus respectivos carros, tá resumido somente para sanar minha dúvida, segu o código:

Private Sub ActiveReport_ReportStart()
Dim codigo As Integer
Dim nome, veiculo As String
Sql = [Ô]SELECT VIS_CODIGO, VIS_NOME FROM VISITANTES[Ô]
Set Rs = Cn.Execute(Sql)
Do Until Rs.EOF
codigo = Rs!VIS_CODIGO
nome = Rs!VIS_NOME
Sql2 = [Ô]SELECT VEI_MODELO FROM VEICULOS WHERE FVIS_CODIGO =[Ô] & codigo
Set Rs2 = Cn.Execute(Sql2)
Do Until Rs2.EOF
veiculo = Rs2!VEI_MODELO
Rs2.MoveNext
Loop
Rs.MoveNext
Loop
End Sub


O que eu gostaria de fazer é exibir essas informações dentro do ActiveReport2.0, tentei várias maneiras mas não consegui, fico agradecido se alguem puder me ajudar
KIKO.WIZZ 20/05/2011 15:00:19
#374576
Esse código está onde? No codigo do ActiveReports ou em um WindowsForm?
ADEMIRBP 20/05/2011 15:01:21
#374577
A princípio eu coloquei ele no ActiveReport, ao carregar ele
ALFTERRA 20/05/2011 16:17:49
#374583
[Ô]EU[Ô] uso assim: desenho meu relatorio e coloco nele um objeto pra conexao ADO e chamo o relatório com todos ops códigos direto de um botao do meu projeto:


Private Sub CmdImprimir_Click()

10 With Me
20 If .CboMES.Text = Empty Or .CboMES.Text = [Ô]-[Ô] Then
30 MsgBox [Ô]DEFINA O MÊS DE IMPRESSÃO DA [Ô] & .Frame1.Caption, vbCritical, .Frame1.Caption
40 .CboMES.SetFocus
50 Exit Sub
60 End If
70 If .CboANOS.Text = Empty Or .CboANOS.Text = [Ô]-[Ô] Then
80 MsgBox [Ô]DEFINA O ANO DE IMPRESSÃO DA [Ô] & .Frame1.Caption, vbCritical, .Frame1.Caption
90 .CboANOS.SetFocus
100 Exit Sub
110 End If

If .CboSETORES.Text = [Ô]TODAS[Ô] Then
120 SQL = [Ô]SELECT DISTINCT * FROM tblContribuinte ORDER BY RazãoSocial, SETOR[Ô]
130 Set TbCAD = ConexaoADO.Execute(SQL)
End If
140 With AR_LISTA_FECHAMENTO
150 .ADO.ConnectionString = CNN_string
160 .ADO.Recordset = TbCAD
170 .FieldRAZAO.MultiLine = False
180 .FieldRAZAO.CanGrow = False
200 .FieldSETORINI.DataField = [Ô]SETOR[Ô]
210 .FieldRAZAO.DataField = [Ô]RazãoSocial[Ô]
220 .FieldLISTA.Text = [Ô]LISTA PARA FECHAMENTO DA FOLHA DE PAGAMENTO REFERENTE À [Ô] & Me.CboMES.Text & [Ô] de [Ô] & Me.CboANOS.Text
230 .Caption = .FieldLISTA.Text
240 .FieldRODAPE.Text = MinhaFrase
250 .Show 1
260 End With

End Sub
DANLEONHART 21/05/2011 08:43:47
#374623
Resposta escolhida
Cara, você tem duas tabelas onde em uma você seleciona todas as informações dos campos VIS_CODIGO e VIS_NOME correto ? então, minha dúvida é, que as variaveis [Ô]codigo[Ô] e [Ô]nome[Ô] do primeiro RS vão alocar varios valores, não ?! ou você tem uma filtragem que não deixou disponivel no código informado ?

No seu script, o que você deseja exibir no relatório são os campos: Codigo, Nome e Veículo ? é isso ?!

Se for, vou te dar uma dica, da maneira que faço...existem outros meios, mas o que conheço e uso é esse:

Crie 3 Field, como a imagem abaixo:


E no script abaixo substitua o necessário...veja que tentei adaptar ao seu script:

Sub Relatorio()

With ActiveReport
[ô] Limpando as caixas que receberão os valores:
.Field1.Text = Empty
.Field2.Text = Empty
.Field3.Text = Empty

Sql = [Ô]SELECT VIS_CODIGO, VIS_NOME FROM VISITANTES[Ô]
Set Rs = Cn.Execute(Sql)
Do Until Rs.EOF
.Field1.Text = .Field1.Text & Rs!VIS_CODIGO & vbNewLine
.Field2.Text = .Field2.Text & Rs!VIS_NOME & vbNewLine

Sql2 = [Ô]SELECT VEI_MODELO FROM VEICULOS WHERE FVIS_CODIGO =[Ô] & Rs!VIS_CODIGO
Set Rs2 = Cn.Execute(Sql2)
Do Until Rs2.EOF
.Field3.Text = .Field3.Text & Rs2!VEI_MODELO & vbNewLine
Rs2.MoveNext
Loop
Rs.MoveNext
Loop

.Show vbModal
End With
End Sub


Basta colocar em um CommandButton a sub [Ô]Relatorio[Ô]...
Essa é minha sugestão...
ADEMIRBP 21/05/2011 09:56:35
#374624
DANLEONHART é o seguinte,
o primeiro recordset vai fazer uma busca onde serão exibidos todos os valores, no caso, tabela visitantes. é um relatório mestre detralhe na verdade, então dentro do segundo recordset eu verifico na tabela veiculos se existe o visitante cadastrado e mostro os veículos dele, teste o código e funciona, ficaria assim:

MARIA APARECIDA DA SILVA (visitante):
CORSA SEDAN (veículo)
VECTRA CD (veículo)

JOSé RAIMUNDO (visitante)
PALIO WEEKEND

Mas o exemplo que vc me mandou vou testar na segunda-feira, na empresa onde trabalçho e desenvolvo, creio que vá dar certo. Uma dúvida, eu não preciso inserir o componente ADO então, só fazer dessa maneira? Valeu pela dica, assim que funcionar fecho o POST
DANLEONHART 21/05/2011 10:53:09
#374628
OKs !

Nesse exemplo não precisa usar o componente ADO...pois está relacionando o resultado do RecorSet com os Objetos [Ô]TextBoxes[Ô] do ActiveReport...
Como eu falei...existem outras maneiras, porém é assim que eu uso ... e funfa !!!

VALEU !
ADEMIRBP 21/05/2011 13:59:56
#374650
Valeu então, melhor ainda se não precisar ADO, prefiro assim, vou testar no serviço segunda dandop certo fecho o post pra vc, vlw mesmo
ADEMIRBP 23/05/2011 09:19:32
#374733
DANLEONHART, deu certo em partes. Da maneira como você colocou os FIELDS, os veículos não estavam ficando em baixo dos respectivos donos, ficando apenas no final, depois de listar os donos, mas, aproveitando sua idéia, consegui fazer os donos e respectivos veículos ficarem nos seus lugares certos, usando apenas 1 FIELD, abaixo o código com a correção:

Private Sub Command1_Click()
With ArpVeiculos
[ô] Limpando as caixas que receberão os valores:
.Field1.Text = Empty
Sql = [Ô]SELECT VIS_CODIGO, VIS_NOME, VIS_CIDADE, VIS_UF, VIS_GRAU, VIS_SITUACAO FROM VISITANTES[Ô]
Set Rs = Cn.Execute(Sql)
Do Until Rs.EOF
.Field1.Text = .Field1.Text & Format(Rs!VIS_CODIGO, [Ô]00000[Ô]) & [Ô] - [Ô] & Rs!VIS_NOME & [Ô] - [Ô] & Rs!VIS_CIDADE & [Ô] - [Ô] & Rs!VIS_UF & [Ô] - [Ô] & Rs!VIS_GRAU & [Ô] - [Ô] & Rs!VIS_SITUACAO & vbNewLine
Sql2 = [Ô]SELECT VEI_CODIGO, VEI_MARCA, VEI_MODELO, VEI_PLACA FROM VEICULOS WHERE FVIS_CODIGO =[Ô] & Rs!VIS_CODIGO
Set Rs2 = Cn.Execute(Sql2)
Do Until Rs2.EOF
.Field1.Text = .Field1.Text & [Ô] [Ô] & Format(Rs2!VEI_CODIGO, [Ô]00000[Ô]) & [Ô] - [Ô] & Rs2!VEI_MARCA & [Ô] - [Ô] & Rs2!VEI_MODELO & [Ô] - [Ô] & Rs2!VEI_PLACA & vbNewLine & vbNewLine
Rs2.MoveNext
Loop
Rs.MoveNext
Loop
.Show
End With

----------------------------------------------------------------------

VALEU MESMO PELA DICA, FOI DE GRANDE RESOLUÇÃO
Tópico encerrado , respostas não são mais permitidas