DATA REPORT - O RELATORIO SAI SEMPRE O MESMO.

FERNANDOAVR 22/03/2012 14:58:22
#397954
Pessoal, boa tarde.
Sou novo no site e programo tem pouco tempo. Se eu postar algo errado me avisem por favor.
Preciso de uma ajuda, estou usando vb6 e fiz um relatório usando o Data Report, na tela de seleção eu faço a seleção e mando imprimir..sai o relatório normal, aí fecho o relatório o programa continua na tela de seleção então eu mudo um item da seleção e peço a impressão, o relatório sai igual ao anterior..é como se ele ficasse na memória e não atualizasse de acordo com minha nova seleção...como faço para fazer com que ele atualize e saia com os novos dados conforme a seleção?

Valeu...obrigado.
CASTELO 22/03/2012 15:07:36
#397956
Fenando, boa tarde

Como você alimenta o relatório que você criou do Data Repot?

Favor postar seu código para interpretação.

Att.,
Eliseu
FERNANDOAVR 22/03/2012 15:25:43
#397960
Castelo, blz?

Cara..o código é um pouco grande, mas deixa eu tentar esclarecer...criei um DataEnvironment onde tenho Paciente como principal e resultados como filhos..aí eu faço select no banco e grava em tabelas temporárias que estão nesta DataEnvironment , beleza..fiz os testes..as tabelas temporárias do DataEnvironment atualizam..estão com os dados corretos e atualizados, mas o data report traz sempre o mesmo relatório...é como se não fizesse um refresh entende? Se eu tiro um laudo do paciente 1 ele sai normal...aí volto pra tela de seleção e qualquer outro paciente que eu pedir ele sai o laudo sempre daquele 1 que tirei pela primeira vez...se eu sair do programa e entrar novamente...e pedir o laudo de outro ele sai..porém se eu pedir novamente de outro..sai sempre deste...
Valeu meu amigo.
Att.
Fernando
CASTELO 22/03/2012 15:54:24
#397966
Então Fernando,

Eu estou desenvolvendo um sistema de bibliotecas e um para administração escolar. Havia cogitado utilizar DataEnvironment, porém desisti, pois pela quantidade de relatórios que utilizo, procurei me informar sobre relatórios do Data Report sem DataEnvironment e achei um material bom do Marcoratti.

E assim não tenho problemas com os relatórios no que diz respeito a atualização, pois a cada novo pedido de impressão são feitas novas consultas que alimentam o datareport.

Vamos ver se alguém tenha alguma idéia boa para ajudar.

Att.,
Eliseu
MARCELO.TREZE 22/03/2012 16:07:29
#397968
Bom sem o código que cria os relatórios fica meio difícil, veja se o problema esta em algum Loop

ROBIU 22/03/2012 16:40:32
#397978
Resposta escolhida
Tenta isso no evento Terminate do Datareport:

Private Sub DataReport_Terminate()
Set NomeDoSeuDataReport = Nothing
End Sub


ou isso

Private Sub DataReport_Terminate()
Unload NomeDoSeuDataReport
End Sub
FERNANDOAVR 22/03/2012 16:50:35
#397981
Roberto

Agradeço, mas não deu certo...é como se o relatório estivesse estampado já e ele mostra sempre o mesmo...não entendo...só consigo mudar os dados do relatório quando saio totalmente do projeto e entro novamente...aí ele faz certo..mas apenas na primeira vez...para eu conseguir mudar tenho que sair novamente do projeto...
Tentei dar refresh no rpt mas não deu...é assim...o dataenvironment está atualizado...atualiza certinho a cada mudança de seleção que faço..somente o datareport não atualiza..trás sempre os mesmos dados no relatório...vou continuar tentando..vou tentar extrair só a parte que interessa de código e tentar postar..mas se alguém puder me ajudar com estas informações..agradeço muito...

Valeu..
Fernando
ROBIU 22/03/2012 17:12:25
#397987
Antes de abrir o Datareport

Unload NomedoDataEnviromment


Tambem teste o código anterior com o nome do dataenviromment
CASTELO 22/03/2012 17:13:09
#397988
Sei lá... mas vê se ajuda

achei em um forum da internet http://www.xtremevbtalk.com/archive/index.php/t-130623.html

extrai a parte que interessa:
With DataEnv
If .rsCustomer.State = 1 Then .rsCustomer.Close
If .Cn.State = 1 Then .Cn.Close
Set DataReport1.DataSource = Nothing
DataReport1.DataMember = [Ô][Ô]

x
x
x
x
x
x
x

DataReport1.Refresh
DataReport1.Show vbModal
Unload DataEnv
End With

o código original é esse

Private Sub cmdPrint_Click()
Dim i As Integer
With DataEnv
If .rsCustomer.State = 1 Then .rsCustomer.Close
If .Cn.State = 1 Then .Cn.Close
Set DataReport1.DataSource = Nothing
DataReport1.DataMember = [Ô][Ô]

.Cn.CursorLocation = adUseClient
.Cn.ConnectionString = [Ô]Provider=MSDataShape.1;Persist Security Info=False;Data Source=[Ô] + DB_Name + [Ô];Data Provider=MICROSOFT.JET.OLEDB.4.0[Ô]
.Cn.Open

.rsCustomer.Source = [Ô]SHAPE {SELECT * FROM Customer WHERE ID=[Ô] + CStr(CustomerID) + [Ô]} AS Customer APPEND ({SELECT * FROM Appointment ORDER BY Datum DESC} AS Appointment RELATE [ô]ID[ô] TO [ô]CustomerID[ô]) AS Appointment[Ô]
.rsCustomer.ActiveConnection = .Cn
.rsCustomer.Open
End With

With DataReport1
Set .DataSource = Nothing
.DataMember = [Ô][Ô]
Set DataReport1.DataSource = DataEnv.rsCustomer
With .Sections([Ô]Customer_Header[Ô]).Controls
For i = 1 To .Count
If TypeOf .Item(i) Is RptTextBox Or _
TypeOf .Item(i) Is RptFunction Then
.Item(i).DataMember = [Ô][Ô]
End If
Next i
End With
With .Sections([Ô]Appointmenten_Detail[Ô]).Controls
For i = 1 To .Count
If TypeOf .Item(i) Is RptTextBox Or _
TypeOf .Item(i) Is RptFunction Then
.Item(i).DataMember = [Ô]Appointment[Ô]
End If
Next i
End With
End With


DataReport1.Refresh
DataReport1.Show vbModal
Unload DataEnv
End Sub

Pesquise
FERNANDOAVR 23/03/2012 08:53:33
#398021
Pessoal...bom dia!!!!

Grande Roberto Martins....grande mesmo...deu certo...

Bastou dar um unload no dataenvironment antes de chamar o data report.

Agradeço imensamente a ajuda de todos e estarei por aqui...apesar da ainda pouca experiência...no que eu puder ajudar estarei tentando..

Valeuuu...abraços...
Tópico encerrado , respostas não são mais permitidas