MSG PARA RELATORIO SEM DADOS

GUILHERMEMFA 09/11/2011 11:25:19
#388782
Bom dia pessoal!
Tô usando o código abaixo para exibir meu relatório do CR XI.
Informo o ano e é exibido todos os dados que eu preciso do ano informado. Porém, quando eu informo um ano que não possui informações no banco ele não traz nada. Tva querendo saber como eu faço para aparecer uma mensagem para o usuário ao invez de aparecer um relatorio em branco.
Se não fosse pelo parametro (strAno) acho que seria fácil


Dim report1 As New CRProgTrei
Dim rsProgTrei As New ADODB.Recordset
Dim sqlProgTrei As String

rsProgTrei.CursorLocation = adUseClient
sqlProgTrei = [Ô]minha query[Ô]
rsProgTrei.Open sqlProgTrei, cnBanco, adOpenForwardOnly, adLockReadOnly, adCmdText
Set rsProgTrei.ActiveConnection = Nothing
Set Report = report1
Report.DiscardSavedData
Report.Database.SetDataSource rsProgTrei
Screen.MousePointer = vbHourglass
Report.RecordSelectionFormula = [Ô]{ProgTrei.ano}= [Ô] & Val(strAno)

CRViewer1.ReportSource = report1
CRViewer1.ViewReport
CRViewer1.Zoom (88)
Screen.MousePointer = vbDefault
Set rsProgTrei = Nothing
JULIANOPAN 09/11/2011 11:40:58
#388783
eu faço da seguinte forma.

if select count(o seu id da tabela) from tabela [ô]com ou sem filtro[ô] = 0 then
aqui a mensagem
end sub
else
gero o relatorio
end if
GUILHERMEMFA 09/11/2011 12:57:01
#388791
dessa forma ai nao rola, o meu codigo ja ta dentro do Viewer
LUIZCOMINO 09/11/2011 13:01:56
#388792
Testa assim

Dim report1 As New CRProgTrei
Dim rsProgTrei As New ADODB.Recordset
Dim sqlProgTrei As String

rsProgTrei.CursorLocation = adUseClient
sqlProgTrei = [Ô]minha query[Ô]
rsProgTrei.Open sqlProgTrei, cnBanco, adOpenForwardOnly,

if rsProgTrei.eof then msgbox [Ô]Não Exitem Registros[Ô]

adLockReadOnly, adCmdText
Set rsProgTrei.ActiveConnection = Nothing
Set Report = report1
Report.DiscardSavedData
Report.Database.SetDataSource rsProgTrei
Screen.MousePointer = vbHourglass
Report.RecordSelectionFormula = [Ô]{ProgTrei.ano}= [Ô] & Val(strAno)

CRViewer1.ReportSource = report1
CRViewer1.ViewReport
CRViewer1.Zoom (88)
Screen.MousePointer = vbDefault
Set rsProgTrei = Nothing
LUIZCOMINO 09/11/2011 13:17:36
#388795
faltou o exit sub

ficaria assim

if rsProgTrei.eof then msgbox [Ô]Não Exitem Registros[Ô]: exit sub
GUILHERMEMFA 09/11/2011 13:20:57
#388796
LUIZCOMINO

já havia tentado dessa forma dá o seguinte erro: Operação não permitida quando o objeto esta fechado.

De qualquer forma não poderia testar nesse momento. Pois, ainda não havia realizado o filtro através da variável strAno. A linha abaixo pega o valor que esta na variavel e realiza o filtro na minha query

Report.RecordSelectionFormula = [Ô]{ProgTrei.ano}= [Ô] & Val(strAno)

O teste para saber se há algum registro deve ser após a linha acima
FILMAN 09/11/2011 14:43:51
#388808
Resposta escolhida
Dim report1 As New CRProgTrei
Dim rsProgTrei As New ADODB.Recordset
Dim sqlProgTrei As String

rsProgTrei.CursorLocation = adUseClient
sqlProgTrei = [Ô]minha query[Ô]
rsProgTrei.Open sqlProgTrei, cnBanco, adOpenForwardOnly,

adLockReadOnly, adCmdText
Set rsProgTrei.ActiveConnection = Nothing
Set Report = report1
Report.DiscardSavedData
Report.Database.SetDataSource rsProgTrei
Screen.MousePointer = vbHourglass
Report.RecordSelectionFormula = [Ô]{ProgTrei.ano}= [Ô] & Val(strAno)

CRViewer1.ReportSource = report1

if rsProgTrei.eof then msgbox [Ô]Não Exitem Registros[Ô] : Exit Sub

CRViewer1.ViewReport
CRViewer1.Zoom (88)
Screen.MousePointer = vbDefault
Set rsProgTrei = Nothing


Tenta Assim.
GUILHERMEMFA 09/11/2011 15:43:47
#388821
Dessa forma eu também achei que daria certo. Porém ocorre o seguinte erro: Operação nao permitida quando o objeto está fechado
FILMAN 09/11/2011 17:24:29
#388841
Dim report1 As New CRProgTrei
Dim rsProgTrei As New ADODB.Recordset
Dim sqlProgTrei As String

rsProgTrei.CursorLocation = adUseClient
sqlProgTrei = [Ô]minha query[Ô]
rsProgTrei.Open sqlProgTrei, cnBanco, adOpenForwardOnly,

adLockReadOnly, adCmdText

Set Report = report1
Report.DiscardSavedData
Report.Database.SetDataSource rsProgTrei
Screen.MousePointer = vbHourglass
Report.RecordSelectionFormula = [Ô]{ProgTrei.ano}= [Ô] & Val(strAno)

CRViewer1.ReportSource = report1

if rsProgTrei.eof then msgbox [Ô]Não Exitem Registros[Ô] : Exit Sub

CRViewer1.ViewReport
CRViewer1.Zoom (88)
Screen.MousePointer = vbDefault
Set rsProgTrei = Nothing



Tenta assim retirei a linha abaixo:
Set rsProgTrei.ActiveConnection = Nothing
Tópico encerrado , respostas não são mais permitidas