SUBREPORT DO CRYSTAL 9 NAO CARREGA DADOS
Galera tenho um relatório q possui um subrelatório rodando perfeito fora do vb, porém quando coloco ele para dentro do vb6, o subrelatório não carrega os dados e da a mensagem de erro - this group section cannot be printed because its condition field is nonexistent or invalid - por possuir um group no subrelatório.
Porém quando retiro o group do subrelatório, o sistema puxa apenas os dados do relatório principal e não carrega os dados do subrelatório.
Como comentei, esse relatório funciona perfeito fora do vb6, segue abaixo como estou tentando carregar os dados:
ESSE é PARA CARREGAR OS DADOS PRINCIPAIS
StrSql = [Ô]select c.codconhecimento, if(c.tipomotorista=[ô]A[ô],m.Nome,if(c.TipoMotorista = [ô]F[ô], f.Nome,p.Nome)) nomemotorista , c.enderecocoleta, c.enderecoentrega, c.dataemissao emissaoctrc, c.obs1, c.obs2, vei.Marca, vei.Modelo, vei.Placa,[Ô]
StrSql = StrSql & [Ô]s.ClienteSolicitante, s.CodSolicitacao, s.TipoVeiculo, s.QteVeiculo , s.LocalRetirada , s.LocalEntrega, s.DataEmissao,[Ô]
StrSql = StrSql & [Ô]s.datacoleta , s.dataentrega [Ô]
StrSql = StrSql & [Ô]from solicitacao s [Ô]
StrSql = StrSql & [Ô]left join conhecimento c on c.CodSolicitacao = s.CodSolicitacao [Ô]
StrSql = StrSql & [Ô]left join motoristas m on m.CodMotorista = c.CodMotorista [Ô]
StrSql = StrSql & [Ô]left join funcionarios f on f.CodFunc = c.CodMotorista [Ô]
StrSql = StrSql & [Ô]left join parceiros p on p.CodParceiro = c.CodMotorista [Ô]
StrSql = StrSql & [Ô]left join veiculos vei on vei.CodVeiculo = c.CodVeiculo [Ô]
StrSql = StrSql & [Ô]where s.codsolicitacao = [Ô] & Text1.Text
Dim Relatorio As New CrpProcessoSolicitacao
Relatorio.DiscardSavedData
Set Rs = New ADODB.Recordset
Rs.Open StrSql, Db, adOpenKeyset, adLockPessimistic
Relatorio.Database.SetDataSource Rs
ESSE é PARA CARREGAR OS DADOS DO SUBRELATÓRIO
StrSql = [Ô]select v.nvalefrete, v.saldoatualizado, v.percurso1, v.percurso2, v.percurso3, v.percurso4, v.SaldoInicial , v.dataemissao emissaovalefrete,[Ô]
StrSql = StrSql & [Ô]a.Descricao , lvf.Credito, lvf.Data [Ô]
StrSql = StrSql & [Ô]from solicitacao s [Ô]
StrSql = StrSql & [Ô]left join conhecimento c on c.CodSolicitacao = s.CodSolicitacao left join valefretexconhecimento vc on vc.NConhecimento = c.NConhecimento [Ô]
StrSql = StrSql & [Ô]left join valefrete v on vc.CodValeFrete = v.CodValeFrete [Ô]
StrSql = StrSql & [Ô]left join lancamentovalefrete lvf on lvf.CodValeFrete = v.CodValeFrete [Ô]
StrSql = StrSql & [Ô]left join acertos a on a.CodAcerto = lvf.CodDescrLancamento [Ô]
StrSql = StrSql & [Ô]where lvf.tipo = [ô]C[ô] and lvf.Credito > 0 and s.codsolicitacao = [Ô] & Text1.Text
StrSql = StrSql & [Ô] group by s.CodSolicitacao, v.NValeFrete[Ô]
Set Rs2 = New ADODB.Recordset
Rs2.Open StrSql, Db, adOpenKeyset, adLockPessimistic
Relatorio.Subreport1.OpenSubreport.DiscardSavedData
Relatorio.Subreport1.OpenSubreport.Database.SetDataSource Rs2
AQUI CARREGO O RELATÓRIO
CRViewer91.ReportSource = Relatorio
Me.WindowState = 2
CRViewer91.Visible = True
CRViewer91.ViewReport
CRViewer91.Top = 0
CRViewer91.Left = 0
CRViewer91.Height = ScaleHeight
CRViewer91.Width = ScaleWidth
O q será q está de errado, pq ele não esta carregando os dados do subrelatório?
Desde já agradeço a todos
Porém quando retiro o group do subrelatório, o sistema puxa apenas os dados do relatório principal e não carrega os dados do subrelatório.
Como comentei, esse relatório funciona perfeito fora do vb6, segue abaixo como estou tentando carregar os dados:
ESSE é PARA CARREGAR OS DADOS PRINCIPAIS
StrSql = [Ô]select c.codconhecimento, if(c.tipomotorista=[ô]A[ô],m.Nome,if(c.TipoMotorista = [ô]F[ô], f.Nome,p.Nome)) nomemotorista , c.enderecocoleta, c.enderecoentrega, c.dataemissao emissaoctrc, c.obs1, c.obs2, vei.Marca, vei.Modelo, vei.Placa,[Ô]
StrSql = StrSql & [Ô]s.ClienteSolicitante, s.CodSolicitacao, s.TipoVeiculo, s.QteVeiculo , s.LocalRetirada , s.LocalEntrega, s.DataEmissao,[Ô]
StrSql = StrSql & [Ô]s.datacoleta , s.dataentrega [Ô]
StrSql = StrSql & [Ô]from solicitacao s [Ô]
StrSql = StrSql & [Ô]left join conhecimento c on c.CodSolicitacao = s.CodSolicitacao [Ô]
StrSql = StrSql & [Ô]left join motoristas m on m.CodMotorista = c.CodMotorista [Ô]
StrSql = StrSql & [Ô]left join funcionarios f on f.CodFunc = c.CodMotorista [Ô]
StrSql = StrSql & [Ô]left join parceiros p on p.CodParceiro = c.CodMotorista [Ô]
StrSql = StrSql & [Ô]left join veiculos vei on vei.CodVeiculo = c.CodVeiculo [Ô]
StrSql = StrSql & [Ô]where s.codsolicitacao = [Ô] & Text1.Text
Dim Relatorio As New CrpProcessoSolicitacao
Relatorio.DiscardSavedData
Set Rs = New ADODB.Recordset
Rs.Open StrSql, Db, adOpenKeyset, adLockPessimistic
Relatorio.Database.SetDataSource Rs
ESSE é PARA CARREGAR OS DADOS DO SUBRELATÓRIO
StrSql = [Ô]select v.nvalefrete, v.saldoatualizado, v.percurso1, v.percurso2, v.percurso3, v.percurso4, v.SaldoInicial , v.dataemissao emissaovalefrete,[Ô]
StrSql = StrSql & [Ô]a.Descricao , lvf.Credito, lvf.Data [Ô]
StrSql = StrSql & [Ô]from solicitacao s [Ô]
StrSql = StrSql & [Ô]left join conhecimento c on c.CodSolicitacao = s.CodSolicitacao left join valefretexconhecimento vc on vc.NConhecimento = c.NConhecimento [Ô]
StrSql = StrSql & [Ô]left join valefrete v on vc.CodValeFrete = v.CodValeFrete [Ô]
StrSql = StrSql & [Ô]left join lancamentovalefrete lvf on lvf.CodValeFrete = v.CodValeFrete [Ô]
StrSql = StrSql & [Ô]left join acertos a on a.CodAcerto = lvf.CodDescrLancamento [Ô]
StrSql = StrSql & [Ô]where lvf.tipo = [ô]C[ô] and lvf.Credito > 0 and s.codsolicitacao = [Ô] & Text1.Text
StrSql = StrSql & [Ô] group by s.CodSolicitacao, v.NValeFrete[Ô]
Set Rs2 = New ADODB.Recordset
Rs2.Open StrSql, Db, adOpenKeyset, adLockPessimistic
Relatorio.Subreport1.OpenSubreport.DiscardSavedData
Relatorio.Subreport1.OpenSubreport.Database.SetDataSource Rs2
AQUI CARREGO O RELATÓRIO
CRViewer91.ReportSource = Relatorio
Me.WindowState = 2
CRViewer91.Visible = True
CRViewer91.ViewReport
CRViewer91.Top = 0
CRViewer91.Left = 0
CRViewer91.Height = ScaleHeight
CRViewer91.Width = ScaleWidth
O q será q está de errado, pq ele não esta carregando os dados do subrelatório?
Desde já agradeço a todos
Alguém para me ajudar com esse problema ....
Alguém, estou anexando um projeto com esse problema, se alguém puder me ajudar agradeço.
O banco esta no mysql
O banco esta no mysql
Alguém ...
Segue a mensagem que da quando coloco o goup no crystal dentro do vb
Alguém ...
Estou analisando seu projeto. Não verifiquei o relacionamento entre o report e o subreport. Tenta criar um novo report por dentro do vb6. Outra coisa é o where dentro do command. Deveria tirar já que pode ficar no código que abre o relatorio.
Bom dia Roberto e agradeço a força q vc esta me dando
O Where eu coloquei para poder não exibir os valores que estão zerados, para poder exibir o relatório e enviar para a analise do cliente.
Ontem a noite eu vi que eu não tinha colocado o relacionamento com o subrelatório, porém eu coloquei tanto dentro do vb quanto fora, fora do vb continuou trazendo o mesmo resultado e dentro do vb o mesmo problema
O Where eu coloquei para poder não exibir os valores que estão zerados, para poder exibir o relatório e enviar para a analise do cliente.
Ontem a noite eu vi que eu não tinha colocado o relacionamento com o subrelatório, porém eu coloquei tanto dentro do vb quanto fora, fora do vb continuou trazendo o mesmo resultado e dentro do vb o mesmo problema
Alguém mais pode me ajudar
O Rs está funcionando normalmente, então só vamos tratar do Rs2:
Inclui o campo s.CodSolicitacao no Select e no command do Crystal Reports
Inclui o grupo no subrelatorio pelo campo CodSolicitacao
mudei a forma de carregar o Rs2
Aqui funcionou. Segue o projeto anexo. Vai precisar ajustar a conexão. Coloque a senha do seu root
Inclui o campo s.CodSolicitacao no Select e no command do Crystal Reports
Inclui o grupo no subrelatorio pelo campo CodSolicitacao
mudei a forma de carregar o Rs2
Dim Rs2 As New ADODB.Recordset
Dim Cmd As New ADODB.Command
StrSql = [Ô]select s.CodSolicitacao,v.nvalefrete, v.saldoatualizado, v.percurso1, v.percurso2, v.percurso3, v.percurso4, v.SaldoInicial , v.dataemissao emissaovalefrete,[Ô]
StrSql = StrSql & [Ô]a.Descricao , lvf.Credito, lvf.Data [Ô]
StrSql = StrSql & [Ô]from solicitacao s [Ô]
StrSql = StrSql & [Ô]left join conhecimento c on c.CodSolicitacao = s.CodSolicitacao left join valefretexconhecimento vc on vc.NConhecimento = c.NConhecimento [Ô]
StrSql = StrSql & [Ô]left join valefrete v on vc.CodValeFrete = v.CodValeFrete [Ô]
StrSql = StrSql & [Ô]left join lancamentovalefrete lvf on lvf.CodValeFrete = v.CodValeFrete [Ô]
StrSql = StrSql & [Ô]left join acertos a on a.CodAcerto = lvf.CodDescrLancamento [Ô]
StrSql = StrSql & [Ô]where lvf.tipo = [ô]C[ô] and lvf.Credito > 0 and s.codsolicitacao = 1[Ô]
StrSql = StrSql & [Ô] group by s.CodSolicitacao, v.NValeFrete[Ô]
Cmd.ActiveConnection = Db
Cmd.CommandType = adCmdText
Cmd.CommandText = StrSql
Set Rs2 = Cmd.Execute
Relatorio.Subreport1.OpenSubreport.DiscardSavedData
Relatorio.Subreport1.OpenSubreport.Database.SetDataSource Rs2
Aqui funcionou. Segue o projeto anexo. Vai precisar ajustar a conexão. Coloque a senha do seu root
Roberto vlw pela ajuda, vi o q estava de diferente ajustei e funcionou.
Tópico encerrado , respostas não são mais permitidas