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)