MSG PARA RELATORIO SEM DADOS
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
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
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
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
dessa forma ai nao rola, o meu codigo ja ta dentro do Viewer
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
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
faltou o exit sub
ficaria assim
if rsProgTrei.eof then msgbox [Ô]Não Exitem Registros[Ô]: exit sub
ficaria assim
if rsProgTrei.eof then msgbox [Ô]Não Exitem Registros[Ô]: exit sub
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
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
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.
Dessa forma eu também achei que daria certo. Porém ocorre o seguinte erro: Operação nao permitida quando o objeto está fechado
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