DATA REPORT VINDO DE UM FORM

SAMUKAF13 18/07/2011 14:02:01
#379452
Galera, preciso de mais uma ajuda de vocÊs, vamos lá...

Meu programa como alguns jpa sabem cadastra Numeros de Patrimonios. COm a ajuda de vocês fiz o botão para somar os valores de patrimonio de um setor X, e somar quando patrimonios possuem um setor X. Ambas as informações são passadas para o mesmo label no qual se fez o código. Dali, eu já quero mandar no mesmo botão para um data report. No código eu vou explicar melhor:




Private Sub cmdrelatorio_Click()


abrebanco


[ô]Código para contar o valor total dos nips no setor Almoxarifado

Set rsdados = cnn.Execute([Ô]SELECT sum(valor) FROM CADASTRONIP where SETOR = [ô]Almoxarifado[ô][Ô])
lblvalor.Caption = IIf(IsNull(rsdados.Fields(0)), 0, rsdados.Fields(0)) [ô]Joguei este valor para o lblvalor que está no formrelatorio (onde se encontra também este botão)

[ô] Código para contar o valor total de nips cadastrados no setor Almoxarifado

Set rsdados = cnn.Execute([Ô]SELECT count(SETOR) FROM CADASTRONIP where SETOR = [ô]Almoxarifado[ô][Ô])
lblnip.Caption = IIf(IsNull(rsdados.Fields(0)), 0, rsdados.Fields(0)) [ô]Joguei este valor para o lblnip que está no formrelatorio (onde se encontra também este botão)


[ô] AGORA EU PRECISO QUE ESSES DOIS LABELS (LBLVALOR E LBLNIP) CAIA NO DATARELATORIO, que já esta montado com dois rptTEXTBOX, com seus DATAFIELD dessa forma: nip , valor (JUSTAMENTE PARA QUE CAIBA O LBLNIP E O LBLVALOR)

[ô]Pois bem, abaixo segue o código que eu fiz, que é código de datareport que eu conheço, porem é obvio que ele esta puxando do banco de dados, e não é isso que eu preciso, eu preciso que o data report puxe esses dois labels que estão no meu formrelatorio....TUDO FICARÁ NO MESMO BOTÃO, os labels são apenas campos ocultos para fazer a transição para o relatório, se nem isso for preciso por favor me ajudem.


[ô]Código do datareport errado
Set rsdados = New ADODB.Recordset
rsdados.Open [Ô]Select * from cadastronip where nip = [ô][Ô] & optalmoxarifao & [Ô][ô][Ô], cnn
Set datanip.DataSource = rsdados
datanip.Show

End Sub


---


Pessoal, aproveito para colocar outra duvida em pauta, é uma coisa fácil, mas que esqueci completamente, já criei meu LOGIN no programa, e queria colocar aquele código para quando eu digitar a senha, ao inves de aparece realmente os numeros, deve aparecer ******

-


Desde já agradeço.
ROBIU 18/07/2011 20:31:40
#379495
Resposta escolhida
Não dá para usar um RptTextbox sem um campo definido no DataSource do Report. Você pode criar o campo com um select e pegar o total com um rptFunction. Veja como coloquei neste tópico

Se você quer mesmo usar os valores guardados nas labels do formulário, você vai ter que inserir os rptLabels no relatório. Esse exemplo pega o valor da Label1 do Frm1 e [Ô]joga[Ô] na rptLabel de nome Labe3 e está na Section5 do Relatorio de nome Rpt

Rpt.Sections([Ô]Section5[Ô]).Controls([Ô]Label3[Ô]).Caption = Frm1.Label1.Caption
SAMUKAF13 19/07/2011 08:10:24
#379509
Ainda não deu certo galera \=

O mais próximo que tinha chegado era?

With datarelatorio

rpttxtsetor = formrelatorio.lblsetor.Caption
rpttxtvalor = formrelatorio.lblvalor.Caption
rpttxtnip = formrelatorio.lblnip.Caption

End With

Ai da o erro INVALID DATA SOURCE \=

Sei nem por onde começar!
MMMX 19/07/2011 08:31:00
#379511
Grava esses valores em uma tabela temporária que já esteja ligada ao Report... ??? Não dá certo?
ROBIU 19/07/2011 08:40:45
#379513
Tem que ser rptLabel e não RptText e conforme coloquei :
Rpt.Sections([Ô]Section5[Ô]).Controls([Ô]Label3[Ô]).Caption = Frm1.Label1.Caption


Posta o fonte que ajustamos
SAMUKAF13 19/07/2011 09:10:22
#379516
Meu código INTEIRO ficou assim:


abrebanco


Set rsdados = cnn.Execute([Ô]SELECT sum(valor) FROM CADASTRONIP where SETOR = [ô]Almoxarifado[ô][Ô]) [ô]SOMOU TODOS OS VALORES DA TABELA CADASTRONIP DO SETOR ALMOXARIFADO
lblvalor.Caption = IIf(IsNull(rsdados.Fields(0)), 0, rsdados.Fields(0)) [ô]e jogou no label lblbalor, que não salva em lugar nenhum, é apenas um label no FORMRELATORIO


Set rsdados = cnn.Execute([Ô]SELECT count(SETOR) FROM CADASTRONIP where SETOR = [ô]Almoxarifado[ô][Ô]) [ô]CONTOU NIPS TEM CADASTRADOS NA TABELA CADASTRONIP DO SETOR ALMOXARIFADO
lblnip.Caption = IIf(IsNull(rsdados.Fields(0)), 0, rsdados.Fields(0)) [ô]e jogou no label lblnip, que não salva em lugar nenhum, é apenas um label no FORMRELATORIO

[ô]ESSE é O CODIGO QUE VOCÊ ME PASSARAM E QUE OCASIONA ERRO

rpt.Sections([Ô]Section1[Ô]).Controls([Ô]rptlblsetor[Ô]).Caption = formrelatorio.lblsetor.Caption [ô]O NAME DO LABEL DO DATARELATORIO é RPTLBLSETOR
rpt.Sections([Ô]Section1[Ô]).Controls([Ô]rptlblnip[Ô]).Caption = formrelatorio.lblnip.Caption [ô]O NAME DO LABEL DO DATARELATORIO é RPTLBNIP

datarelatorio.Show

END SUB

é isso pessoal, e ele da o erro no código que eu n sei fazer:

rpt.Sections([Ô]Section1[Ô]).Controls([Ô]rptlblsetor[Ô]).Caption = formrelatorio.lblsetor.Caption
rpt.Sections([Ô]Section1[Ô]).Controls([Ô]rptlblnip[Ô]).Caption = formrelatorio.lblnip.Caption

ERRO IDIOTA:

objeto requerido

O problema é que os nomes etão batendo, não entendo o porque do objeto requerido....

AI PRA FAZER UM TESTE EU MUDEI O CÓDIGO FINAL PARA:

datareport.Sections([Ô]Section1[Ô]).Controls([Ô]rptlblsetor[Ô]).Caption = formrelatorio.lblsetor.Caption
datareport.Sections([Ô]Section1[Ô]).Controls([Ô]rptlblnip[Ô]).Caption = formrelatorio.lblnip.Caption

E o erro foi: INVALID DATA SOURCE

ROBIU 19/07/2011 11:35:33
#379532
Tem que ser no evento Initialize do DataReport
Click no relatório e click em qualquer na área de qualquer section do relatorio. Selecione o evento correto. Datarelatório é o nome do seu relatório. fica mais ou menos assim:
Private Sub DataReport_Initialize()
datarelatorio.Sections([Ô]Section1[Ô]).Controls([Ô]rptlblsetor[Ô]).Caption = formrelatorio.lblsetor.Caption
datarelatorio.Sections([Ô]Section1[Ô]).Controls([Ô]rptlblnip[Ô]).Caption = formrelatorio.lblnip.Caption
End Sub
SAMUKAF13 19/07/2011 13:36:57
#379545
Agora sim amigos, o que o ROBIU disse é verdade

No evento INITIALIZE do DATAREPORT o código era:

datarelatorio.Sections([Ô]Section1[Ô]).Controls([Ô]rptlblsetor[Ô]).Caption = formrelatorio.lblsetor.Caption
datarelatorio.Sections([Ô]Section1[Ô]).Controls([Ô]rptlblnip[Ô]).Caption = formrelatorio.lblnip.Caption

Já no botão de gerar o relatório o código estava:

datarelatorio.Show

E na verdade é:

abrebanco
Set datarelatorio.DataSource = rsdados
datarelatorio.Show

Por isso que estava dando INVALID DATA SOURCE!

Muito obrigado amigos, me ajudaram mais uma vez, abraçoss!

-- tópico fechado --
Tópico encerrado , respostas não são mais permitidas