CRYSTAL REPORT
Boa Tarde a Todos...
Seguinte estou usando o Crystal Report para o Visual Studio e até então o Banco de Dados SQL estava sem senha no Usuário SA.
Daà coloquei senha no Usuário SA, passei a senha do banco na String de conexão do Crystal com o SQL, mas antes do relatório aparecer na Tela, o Crystal pede para logar novamente no SQL. Tem como tirar isso. Segue a imagem...
Seguinte estou usando o Crystal Report para o Visual Studio e até então o Banco de Dados SQL estava sem senha no Usuário SA.
Daà coloquei senha no Usuário SA, passei a senha do banco na String de conexão do Crystal com o SQL, mas antes do relatório aparecer na Tela, o Crystal pede para logar novamente no SQL. Tem como tirar isso. Segue a imagem...
Esse erro acorre quando o dataset não é alimentado.
então também era para aparecer o Logon Crystal do quando o SA estava sem senha e quando estava sem senha não aparecia o Logon....
Só se estiver alguma coisa de Errado nesse Código....
Public Function GeraConsuta(Optional ByVal Campos As String = Nothing, Optional ByVal Condicao As String = Nothing, Optional ByVal Tipo As Integer = 0) As DataSet
Try
Dim SQLL As String = [Ô][Ô]
Dim ds As New DataSet()
If IsNothing(Campos) Then
Campos = [Ô]*[Ô]
End If
If Tipo = 0 Then
SQLL = [Ô][Ô]
SQLL = SQLL & [Ô]SELECT [Ô] & Campos & [Ô],[Ô] & Chr(13)
SQLL = SQLL & [Ô] B.EMPRESA, B.ENDERECO, B.NUMERO[Ô] & Chr(13)
SQLL = SQLL & [Ô] FROM RELATORIO A[Ô] & Chr(13)
SQLL = SQLL & [Ô] INNER JOIN EMPRESA B[Ô] & Chr(13)
SQLL = SQLL & [Ô] ON B.EMPRESA = A.EMPRESA[Ô] & Chr(13)
SQLL = SQLL & Condicao & [Ô][Ô]
Else
SQLL = Campos
End If
Dim instrucaoSQL As String = SQLL
Dim objCommand = New OleDbCommand(instrucaoSQL, Conexao.GetConexao1)
Dim objDataSet As New DataSet
Dim objSqlDataAdapter As OleDbDataAdapter = New OleDbDataAdapter(objCommand)
objSqlDataAdapter.Fill(objDataSet)
objCommand = Nothing
Return objDataSet
Catch ex As Exception
XtraMessageBox.Show(ex.Message, Titulomsg, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Return Nothing
End Function
Public Function GeraConsuta(Optional ByVal Campos As String = Nothing, Optional ByVal Condicao As String = Nothing, Optional ByVal Tipo As Integer = 0) As DataSet
Try
Dim SQLL As String = [Ô][Ô]
Dim ds As New DataSet()
If IsNothing(Campos) Then
Campos = [Ô]*[Ô]
End If
If Tipo = 0 Then
SQLL = [Ô][Ô]
SQLL = SQLL & [Ô]SELECT [Ô] & Campos & [Ô],[Ô] & Chr(13)
SQLL = SQLL & [Ô] B.EMPRESA, B.ENDERECO, B.NUMERO[Ô] & Chr(13)
SQLL = SQLL & [Ô] FROM RELATORIO A[Ô] & Chr(13)
SQLL = SQLL & [Ô] INNER JOIN EMPRESA B[Ô] & Chr(13)
SQLL = SQLL & [Ô] ON B.EMPRESA = A.EMPRESA[Ô] & Chr(13)
SQLL = SQLL & Condicao & [Ô][Ô]
Else
SQLL = Campos
End If
Dim instrucaoSQL As String = SQLL
Dim objCommand = New OleDbCommand(instrucaoSQL, Conexao.GetConexao1)
Dim objDataSet As New DataSet
Dim objSqlDataAdapter As OleDbDataAdapter = New OleDbDataAdapter(objCommand)
objSqlDataAdapter.Fill(objDataSet)
objCommand = Nothing
Return objDataSet
Catch ex As Exception
XtraMessageBox.Show(ex.Message, Titulomsg, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Return Nothing
End Function
Poste o código que gera o relatório.
Segue....
Private Sub GeraRelatorio(Optional ByVal Campos As String = Nothing, Optional ByVal Condicao As String = Nothing, Optional ByVal Tipo As Integer = 0)
Try
Dim Caminho As String = [Ô][Ô]
Dim Relatorio As New GeraRelatorio
Dim cr As New RelatorioHistorico
Caminho = System.Windows.Forms.Application.StartupPath & [Ô]\RelatorioHistorico.rpt[Ô]
cr.Load(Caminho)
cr.DataDefinition.FormulaFields([Ô]TituloRelatorio[Ô]).Text = [Ô][ô][Ô] & VarTituloRelatorio & [Ô][ô][Ô]
cr.DataDefinition.FormulaFields([Ô]CabecalhoRel[Ô]).Text = [Ô][ô][Ô] & VarTituloCabecalho & [Ô][ô][Ô]
cr.DataDefinition.FormulaFields([Ô]Sistema[Ô]).Text = [Ô][ô][Ô] & VarSistema & [Ô][ô][Ô]
cr.SetDataSource(Relatorio.GeraConsuta(Campos, Condicao, Tipo).Tables(0))
Me.Report.ReportSource = cr
Catch ex As Exception
TratarErro([Ô]frmRelHistorico[Ô], [Ô]GeraRelatorio[Ô], Err.Number, Err.Description, Erl)
End Try
End Sub
Private Sub GeraRelatorio(Optional ByVal Campos As String = Nothing, Optional ByVal Condicao As String = Nothing, Optional ByVal Tipo As Integer = 0)
Try
Dim Caminho As String = [Ô][Ô]
Dim Relatorio As New GeraRelatorio
Dim cr As New RelatorioHistorico
Caminho = System.Windows.Forms.Application.StartupPath & [Ô]\RelatorioHistorico.rpt[Ô]
cr.Load(Caminho)
cr.DataDefinition.FormulaFields([Ô]TituloRelatorio[Ô]).Text = [Ô][ô][Ô] & VarTituloRelatorio & [Ô][ô][Ô]
cr.DataDefinition.FormulaFields([Ô]CabecalhoRel[Ô]).Text = [Ô][ô][Ô] & VarTituloCabecalho & [Ô][ô][Ô]
cr.DataDefinition.FormulaFields([Ô]Sistema[Ô]).Text = [Ô][ô][Ô] & VarSistema & [Ô][ô][Ô]
cr.SetDataSource(Relatorio.GeraConsuta(Campos, Condicao, Tipo).Tables(0))
Me.Report.ReportSource = cr
Catch ex As Exception
TratarErro([Ô]frmRelHistorico[Ô], [Ô]GeraRelatorio[Ô], Err.Number, Err.Description, Erl)
End Try
End Sub
Estranho, aparentemente com seu código não há nada de errado, verificou se os campos retornados pela SQL tem o mesmo nome que no dataset?
hum...vou ver....
o pior que esta retornando os mesmo nomes do DataSet na SQL
Comigo já aconteceu assim, eu não achava o erro, ai eu carrego é um Datagrid com o Dataset ai eu achei o erro. Tente fazer o mesmo, para carregar um datagrid seria
Seudatagrid.DataSource = Relatorio.GeraConsuta(Campos, Condicao, Tipo).Tables(0))
no Grid mostra os Campos certos, acho que o problema esta no relacionamento das Tabelas dentro do Crystal, pois montei um rpt com somente 1 tabela e não pediu pra logar, agora esse rpt que pede para logar tem 3 tabelas Empresa, Cidade e LancamentoDia, onde LançamentoDia é FK da Empresa e Empresa é FK da Cidade dai o Select do Crystal ficaria assim...
SELECT A.LOTE,A.SEQUENCIA,A.DOCUMENTO,
A.DEVEDORA,A.CREDORA,A.HISTORICO,A.VALOR,
B.EMPRESA,B.RAZAO,B.ENDERECO,B.NUMERO,C.DESCRICAO,C.CEP,B.CNPJCPF,
C.ESTADO,B.INSCESTADUAL
FROM CONTA_TEMPLANCAMENTODIA A
INNER JOIN EMPRESA B
ON B.EMPRESA = A.EMPRESA
INNER JOIN CIDADES C
ON B.CIDADE = C.CIDADE
WHERE A.EMPRESA = [ô][Ô] & Empresa & [Ô][ô][Ô]
ORDER BY A.DATA
SELECT A.LOTE,A.SEQUENCIA,A.DOCUMENTO,
A.DEVEDORA,A.CREDORA,A.HISTORICO,A.VALOR,
B.EMPRESA,B.RAZAO,B.ENDERECO,B.NUMERO,C.DESCRICAO,C.CEP,B.CNPJCPF,
C.ESTADO,B.INSCESTADUAL
FROM CONTA_TEMPLANCAMENTODIA A
INNER JOIN EMPRESA B
ON B.EMPRESA = A.EMPRESA
INNER JOIN CIDADES C
ON B.CIDADE = C.CIDADE
WHERE A.EMPRESA = [ô][Ô] & Empresa & [Ô][ô][Ô]
ORDER BY A.DATA
Tópico encerrado , respostas não são mais permitidas