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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Montar um Catalogo de Fotos no DataReport?
Sérgio Pascoal
.
. - BRASIL
ENUNCIADA !
Postada em 01/04/2005 10:48 hs            
Olá pessoal:
Como montar um Catalogo com o data report?
Tenho em meu banco de dados os dados do produto onde o nome da foto é o código do produto, exemplo (0001.jpg) 0001 é o código do produto.
Mas nem sempre a foto é do mesmo tamanho, então como faço para redimensionar a foto no Report?
Estou usando assim:
 
Dim db As New ADODB.Connection
Dim rs As New ADODB.Recordset
db.Open "DRIVER={Microsoft Access Driver (*.mdb)};dbq=" & App.Path & "DadosCadProd.mdb"
Set rs = db.Execute("select * from Produtos)
If rs.EOF = False Then
   Set Report1.DataSource = rs
   vCodigo = App.Path & "Fotos" & rs!Codigo & ".jpg"
   If Dir$(vCodigo) <> "" Then
      Set Report1.Sections("section1").Controls("Image1").Picture = LoadPicture(vCodigo)
   End If
   Report1.Show
Else
   MsgBox "Não há registros a serem impressos"
End If
E desta forma acima, aparece apenas a primeira foto em todos os registro.
Obriagdo.
   
Mateus
AMADORA
PT - PORTUGAL
ENUNCIADA !
Postada em 01/04/2005 11:31 hs            
Tenho alguma prática de trabalhar com DataReport, no entanto hoje já não utilizo, por isso, a minha "dica" pode estar completamente desactualizada, no entanto se não aparecer outra, fica com uma gambiarra que o pode ajudar a resolver o problema.
 
Em determinada altura, precisei de fazer exactamente o que pretende, e acontecia-me exactamente o mesmo que lhe está acontecendo, isto é, em todos os registos aparecia-me sempre a imagem do primeiro registo. Então procurei na net e, não conseguindo encontrar uma solução melhor, encontrei algures uma sugestão que utilizei e resultou. A solução era, se não me falha a memória, mais ou menos esta(a solução só é válida para a impressão de uma foto por página):
1. Criar uma recordset temporária vazia exactamente com os campos que precisava para imprimir o report (essa recordset só existe em memória);
 
2. Depois fazia um loop sobre a recordset que seleccionava os dados a imprimir(no seu caso a
db.Open "DRIVER={Microsoft Access Driver (*.mdb)};dbq=" & App.Path & "DadosCadProd.mdb"
Set rs = db.Execute("select * from Produtos)
e ia carregando os registos um a um na tal recordset a que poderíamos chamar, por exemplo, rsTemp, e ia imprimindo um a um;
 
3. Neste caso a origem dos dados para o report seria a tal rsTemp, portanto
 Set Report1.DataSource = rs
 seria
 Set Report1.DataSource = rsTemp
 
Não fazia o show do report, mas sim o Print
 
4. Uma vez imprimido o report deletava o registo,carregava com o seguinte, imprimia e assim sucessivamente até a recordset de origem (logo que rs.EOF) chegasse ao fim.
 
Como nas páginas a imprimir precisava do número da página e do total de páginas, guardava também esses dados na tal recordset temporária, como:
- Para cada página com uma variável, que era inicializada em 1, para o total de páginas, através do recordcount da recordset. Estes resultados eram impressos numa label no footer de cada página.
 
Se esta solução for a solução que procura e tiver dificuldades em construir a recordset temporária para carregar os dados, poderá dar uma vista de olhos na minha página pessoal e lá em "Programação"-"Dicas"-"Rotina de Emissão de Uma Guia de Remessa" tem um exemplo de construção de uma recordset desse tipo e até, como depois utilizá-la na impressão do DataReport.
 
Espero, pelo menos, ter ajudado a dar alguma "luz" sobre o assunto (isto se não compliquei ainda mais)
 



 

João Mateus

Se precisar de ajuda extra, visite:

http://joaomateus.planetaclix.pt

   
Mateus
AMADORA
PT - PORTUGAL
ENUNCIADA !
Postada em 01/04/2005 20:14 hs            
Como mde pareceu um bom tópico para elaborar um exemplo detalhado, meti-me ao trabalho, e ele aí está:
 

João Mateus

Se precisar de ajuda extra, visite:

http://joaomateus.planetaclix.pt

   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

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

HTML DESLIGADO

     
 VOLTAR

  



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