Array
(
)

Relatórios Crystal Reports em projetos referenciados no VB.NET

Luciano Almança
   - 18 dez 2015

Boa tarde amigos,

Gostaria de uma ajuda com relatórios no Crystal Reports em um projeto VB.Net. A questão é a seguinte, faço parte de uma equipe de desenvolvimento onde trabalhamos em uma Solução que comporta diversos Projetos diferentes, todos em VB.NET, porém os projetos acessam formulários uns dos outros, para isso referenciamos os Projetos entre si e até agora de maneira geral tem funcionado bem, porém um problema acontece quanto aos relatórios, ao executarmos o formulário que pertence a um outro Projeto, o relatório solicita novamente as configurações de Login, Senha, Servidor e Database, porém não estamos conseguindo passar esses dados ao relatório.
Segue abaixo a Sub que chama o relatório:
Private Sub Relatorio_Geral_Itens_Processo()
Dim dt1 As NpgsqlDataAdapter
Dim dt2 As NpgsqlDataAdapter
Dim dt3 As NpgsqlDataAdapter
Dim dt4 As NpgsqlDataAdapter
Dim dt5 As NpgsqlDataAdapter
Dim dt6 As NpgsqlDataAdapter
Dim dt7 As NpgsqlDataAdapter

oCon = New NpgsqlConnection(strConexao)
oCon.Open()
Dim ds As New DataSet
Dim ds_Sub As New DataSet
Dim ds1 As New DataSet
Dim ds2 As New DataSet
Dim cont As Integer = 0
ds1 = BANCO_SUAP.RetornarDataSet("SELECT prs.id ,lni.id, COALESCE((lni.lni_item),'NAO TEM') AS ""Item"", COALESCE((ite.ite_descricao),lot.lot_descricao) AS ""Descrição"" FROM com_prs_processo prs LEFT JOIN com_lni_lancamento_item lni ON lni.id_prs = prs.id LEFT JOIN com_ite_item ite ON lni.id_ite = ite.id LEFT JOIN com_lot_lote lot ON lni.id_lot = lot.id ORDER BY prs.prs_numero_geral,lni.lni_item")
ds2 = BANCO_SUAP.RetornarDataSet("SELECT prs.id, lni.id, pes.pes_nome FROM com_lni_lancamento_item lni LEFT JOIN com_lpr_lancamento_proposta lpr ON lpr.id_lni = lni.id LEFT JOIN com_apr_apuracao_processo apr ON apr.id_lpr = lpr.id LEFT JOIN com_prs_processo prs ON lni.id_prs = prs.id LEFT JOIN com_prp_proposta_processo prp ON lpr.id_prp = prp.id LEFT JOIN com_ppr_participantes_processo ppr ON prp.id_ppr = ppr.id LEFT JOIN ger_pes_pessoa pes ON ppr.id_pes = pes.id WHERE apr.apr_vencedor = TRUE")
BANCO_SUAP.ExecutarComando("DELETE FROM com_tip_temp_itens_processo")
While ds1.Tables(0).Rows.Count > cont
If ds1.Tables(0).Rows(cont).Item(2).ToString <> "NAO TEM" Then
BANCO_SUAP.ExecutarComando("INSERT INTO com_tip_temp_itens_processo(tip_codigo_item, tip_item,tip_id_prs,tip_id_lni)VALUES ('" & ds1.Tables(0).Rows(cont).Item(2).ToString & "', '" & ds1.Tables(0).Rows(cont).Item(3).ToString & "', " & ds1.Tables(0).Rows(cont).Item(0).ToString & "," & ds1.Tables(0).Rows(cont).Item(1).ToString & ")")
Else
BANCO_SUAP.ExecutarComando("INSERT INTO com_tip_temp_itens_processo(tip_id_prs,tip_id_lni)VALUES (" & ds1.Tables(0).Rows(cont).Item(0).ToString & "," & ds1.Tables(0).Rows(cont).Item(0).ToString & ");")
End If
cont = cont + 1
End While
cont = 0
While ds2.Tables(0).Rows.Count > cont
BANCO_SUAP.ExecutarComando("UPDATE com_tip_temp_itens_processo SET tip_participante = '" & ds2.Tables(0).Rows(cont).Item(2).ToString & "' WHERE tip_id_lni = " & ds2.Tables(0).Rows(cont).Item(1).ToString & " AND tip_id_prs = " & ds2.Tables(0).Rows(cont).Item(0).ToString & "")
cont = cont + 1
End While
sql = "SELECT * FROM com_prs_processo ORDER BY prs_numero_geral"
dt1 = New NpgsqlDataAdapter(sql, strConexao)
dt1.Fill(ds, "com_prs_processo")
sql = "SELECT * FROM com_mod_modalidade"
dt2 = New NpgsqlDataAdapter(sql, strConexao)
dt2.Fill(ds, "com_mod_modalidade")
sql = "SELECT * FROM ger_par_parametro"
dt3 = New NpgsqlDataAdapter(sql, strConexao)
dt3.Fill(ds_Sub, "ger_par_parametro")
sql = "SELECT * FROM ger_est_estado"
dt4 = New NpgsqlDataAdapter(sql, strConexao)
dt4.Fill(ds_Sub, "ger_est_estado")
sql = "SELECT * FROM com_tpa_tipo_apuracao"
dt5 = New NpgsqlDataAdapter(sql, strConexao)
dt5.Fill(ds, "com_tpa_tipo_apuracao")
sql = "SELECT * FROM ppa_org_orgao"
dt6 = New NpgsqlDataAdapter(sql, strConexao)
dt6.Fill(ds, "ppa_org_orgao")
sql = "SELECT * FROM com_tip_temp_itens_processo ORDER BY tip_codigo_item"
dt7 = New NpgsqlDataAdapter(sql, strConexao)
dt7.Fill(ds, "com_tip_temp_itens_processo")
Dim rpt As New RelLicitacao_Itens
rpt.SetDatabaseLogon("postgres", "postgres", "192.168.210.99", "suap_zero") ' <-- Aqui passamos os parametros para logar, porém eles não são assumidos pelo rpt

NomeUsuario = BANCO_SUAP.RetornarCodigo("SELECT pes.pes_nome FROM ger_usu_usuario usu LEFT JOIN ger_pes_pessoa pes ON pes.id = usu.id_pes WHERE usu.id_pes = " & IdUsuario & "")
rpt.OpenSubreport("RelCabecalho.rpt")
rpt.Subreports(0).DataDefinition.FormulaFields("NomeUsuario").Text = "'" & NomeUsuario & "'"
rpt.Subreports(0).DataDefinition.FormulaFields("NomeRelatorio").Text = "'" & NomeRelatorio & "'"
rpt.Subreports(0).SetDataSource(ds_Sub)
rpt.SetDataSource(ds)
rpt.VerifyDatabase()
CrystalReportViewer1.ReportSource = rpt
dt1.Dispose()
dt2.Dispose()
dt3.Dispose()
dt4.Dispose()
dt5.Dispose()
dt6.Dispose()
dt7.Dispose()
rpt.DataDefinition.FormulaFields("Dados_Empresa").Text = "'" & VarDadosEmpresa & "'"
rpt.DataDefinition.FormulaFields("Slogan").Text = "'" & ds_Sub.Tables(0).Rows(0).Item("ger_par_slogan") & "'"
ds.Dispose()
ds_Sub.Dispose()
End Sub

Se alguém puder ajudar, desde já fica aqui meu agradecimento...

Paulo Moraes