USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Experts em Active Report
JoFer
SÃO PAULO
SP - BRASIL
Postada em 25/06/2004 08:39 hs            
Ola Pessoal
Estou com um probleminha e por ser novato no uso do Active Report preciso do vosso socorro... :o)
Preciso imprimir um relatório com conteúdos de 3 tabelas do Access. Essas tabelas são:
a) OrdemServico
b) HorasUtilizadas
c) MateriaisUtilizados
 
O problema é o seguinte: Para cada registro da tabela OrdemServico eu tenho várias ocorrencias nas tabelas HorasUtilizadas e MateriaisUtilizados e preciso colocar isso no papel.
O layout desse relatório seria mais ou menos assim:
a) Na parte superior, os dados da Ordens de Serviço, tipo numero, data, etc. (um único registro)
b) Na parte central, todos os registros daquela OS contidos na tabela HorasUtilizadas (vários registros)
c) Na parte inferior, todos os registros daquela OS contidos na tabela MateriaisUtilizados (vários registros)
 
O campo de relacionamento entre as três tabelas é o CodigodaOrdemdeServiço
 
Acho que é isso... agradeço àqueles que me puderem dar uma dica.
Abraços!
JoFer
     
Vaughyman
RIO DE JANEIRO
RJ - BRASIL
Postada em 25/06/2004 11:31 hs            
Não sou expert mas vou tentar ajuda-lo...
 
Para melhor exemplificar, vou pular partes que falam sobre conexao, já que vc já tem ideia de como criar um relatorio em active report...
Primeiro crie uma sql mais ou menos assim pois não foi enviado junto com o post a estrutura de relacionamento das tabelas:
sql = sql & "Select OrdemServico.CodigodaOrdemdeServiço,HorasUtilizadas.Campo, HorasUtilizadas.campo3... "
sql = sql & "(OrdemServico INNER JOIN HorasUtilizadas ON "
sql = sql &  "OrdemServico.CodigodaOrdemdeServiço = HorasUtilizadas.CodigodaOrdemdeServiço)
sql = sql & "INNER JOIN MateriaisUtilizados "
sql = sql & "ON OrdemServico.CodigodaOrdemdeServiço =
sql = sql & "MateriaisUtilizados.CodigodaOrdemdeServiço "
sql = sql & "ORDER BY OrdemServico.CodigodaOrdemdeServiço;
Set o objeto ADO do Active Report com essa Sql
Crie 2 group Header/Footer
Chame o primeiro de Ordens
Set a propriedade DataField para "CodigodaOrdemdeServiço"
Crie uma caixa de texto nessa seção com a propriedade DataField para o campo de sua escolha

Chame o primeiro de Horas
Set a propriedade DataField para Um campo da sua escolha
Crie uma caixa de texto nessa seção com a propriedade DataField para o campo de sua escolha
Na seção Detalhe Crie uma caixa de texto nessa seção com a propriedade DataField para o campo de sua escolha
Execute o relatorio.
O segredo está na Sql que vc criar se ela estiver bem estruturada hierarquicamente, vc não terá problema em criar o relatorio.
Os grupos devem ter seus datafields com o campo primario
Esse exemplo é apenas ilustrativo visto que não temos maiores detalhes da estrutura da sua base de dados.
 

"IF FUNCIONOU = TRUE THEN Emoções

     BLOQUEIE O POST

ELSE Emoções

    POST NOVAMENTE INFORMANDO O QUE ACONTECEU

ENDIF Emoções

     
JoFer
SÃO PAULO
SP - BRASIL
Postada em 25/06/2004 13:15 hs            
Ola Vaughyman
Agradeço sua colaboração... Emoções
A SQL aparentemente funcionou, porém, acho que não estou sabendo montar o AR.
No form da Ordem de Serviço tenho o botão imprimir que ficou com as seguintes instruções:
Private Sub cmdImprimir_Click()
        RelServ.DAODataControl1.DatabaseName = sPath
        SQL = SQL & "Select * FROM (RelatorioServico INNER JOIN HorasRel ON "
        SQL = SQL & "RelatorioServico.CodRel = HorasRel.CodRel)"
        SQL = SQL & "INNER JOIN BaixaEstoque "
        SQL = SQL & "ON RelatorioServico.CodRel = "
        SQL = SQL & "BaixaEstoque.CodRel WHERE RelatorioServico.CodRel = " & CdRel
        RelServ.DAODataControl1.RecordSource = SQL
        RelServ.Show
End Sub
No AR criei os dois grupos que vc falou (o primeiro chamado Materiais e o segundo Horas) e dentro deles coloquei os campos que eu desejo imprimir, ou seja, no primeiro grupo (Materiais) os campos da tabela materiais e no segundo grupo (Horas) os campos da tabela horas, porém, só imprime a primeira ocorrência de cada uma das tabelas e nelas tem outros registros referente a mesma Ordem de Serviço.
Não sei se deu pra entender... espero que sim!!
Abraço
JoFer
     
X-Crow Original
Pontos: 2843
VITÓRIA
ES - BRASIL
Postada em 26/06/2004 12:26 hs         
Jofer, Desculpe me intrometer mas, já me intrometendo...
Definiu as propriedades das GroupSections "Datafield = CampoQueVcDesejaAgrupar" ?
Bem digo isso pq a princípio, mesmo que você, coloque no cabeçalho do grupo o campo que é o cabeçalho de grupo, o AR não agrupa ele. Vc deve setar a propriedade citada para que isso funcione além de, é claro, incluir no final da sua instrução SQL a claúsula "ORDER BY CampoCabeçalho1 ASC, CampoCabeçalho2 ASC"
Bem qq coisa tamos ae..
Abraços, Sidnei
TÓPICO EDITADO
   
JoFer
não registrado
Postada em 28/06/2004 11:24 hs   
Olá X-Crow
Agradeço sua intromissão, pois, meu problema ainda persiste... Emoções
Isso que vc recomendou já estava feito, ou seja, os DataFields dos dois grupos estão definidos, porém, continua aparecendo só um registro de cada uma das tabelas (Horas e Materiais) e como eu disse tem outras ocorrências.
Mesmo assim, ainda tenho dúvidas se o relatório vai imprimir da forma que eu preciso.
Vou tentar colocar o lay-out do relatório que eu preciso e não sei se essa divisão por grupos vai possibilitar isso. Veja só
ORDEM DE SERVIÇO
Cliente: Empresa ABC Ltda
Serviço Solicitado: Conserto do equipamento x
---------------------------------------------------------------------------------
Materiais Utilizados
00.735.236 - Eixo do comando                         2          1,50                  3,00
00.836.978 - Protetor do eixo                          2          0,50                  1,00
00.123.456 - Arruela                                      4          0,10                  0,40
---------------------------------------------------------------------------------
Horas
02/06/2004        AAA-1234       08:00 45335Km           10:35 45365Km
03/06/2004        AAA-1234       09:15 45375Km           11:45 45405Km
06/06/2004        AAA-1234       14:00 45702Km           17:00 45732Km
---------------------------------------------------------------------------------
 
O Layout é mais ou menos esse e não sei se se utilizando dos groups vai ter como separar assim, pois, primeiro quero imprimir todas as ocorrencias de uma tabela (Materiais) e depois todas as ocorrencias da outra tabelas (Horas) e até onde eu conheço, um group dentro do outro irá me imprimir alternadamente. Não é isso?
Bem... espero que vc consiga me resolver este problema... to quase apelando para o objeto printer... só não fiz isso, pq o layout do relatório será um pouco que "floreado". Emoções
Abraço
JoFer
     
X-Crow Original
Pontos: 2843
VITÓRIA
ES - BRASIL
Postada em 28/06/2004 14:07 hs         
Você está correto. Sairiam alternadas.
 
Uma solução seria então você colocar dois sub-relatórios na seção detalhe do relatório e, vincular o código da OS a cada um dos subrelatórios. A largura de cada sub-relatório vai ser fixa mas a altura se ajustará automáticamente ao conteúdo de cada sub-relatório.
 
Bem basicamente poderia ser solucionado assim. Qualquer tamos ae.
Abraços, Sidnei
     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página