none
Relátorio pede informaçoes de logon quando a aplicação esta publicada no servidor.(Ja estou fazendo Relatorio.SetDatabaseLogon("***", "***", "***", "***"); RRS feed

  • Pergunta

  • Criei o relatorio (cryastal reports 13) com a conexão no banco de dados  sqlserver 2008 que esta no servidor(kinghost). O relatorio funciona perfeitamente, inclusive quando excuto a aplicaçao pelo visual studio o relatorio carrega normalmente. Porem quando publico a aplicação no servidor que tambem é na kinghost, quando tento acessar o relatorio fica pedindo informaçoes de logon. Eu passo as informaçoes mas não funciona continua pedindo como se as informaçoes estivessem erradas. 

    Eu já estou fazendo o procedimento de passar as informaçoes no codigo no momento que o relatorio é chamado.

    Relatorio.SetDatabaseLogon("***", "***", "***", "***"); 

    Alguém já viu isso? Tem alguma idéia? Obrigada!

    sexta-feira, 19 de agosto de 2011 19:41

Respostas

  • Olá, vou postar isso aqui só para o caso de alguem passar pelo mesmo problema.

    Estive equivocada achando que o problema da pagina de login fosse o dataset que estava usando para colocar a imagem dinamica. o problema é outro, como vcs podem ver aqui: http://www.devmedia.com.br/post-7218-Alterando-a-fonte-de-dados-de-um-relatorio-no-Crystal-Reports.html

    Fiz o que esta nesse artigo e resolvi o problema da tela de login insistente.

    Agora o erro: 

    Operação não permitida. Um documento processado pelo mecanismo JRC não pode ser aberto na pilha de C++.

    Li algo superficialmente sobre JRC e vi que tem algo a ver com esse mecanismo não aceitar alteração dinamica nos objetos do relatorio. Não sei bem como é mas é algo nesse sentido. Acabei usando o dataset mesmo pra colocar a imagem dinamica.

    • Marcado como Resposta AGarota quarta-feira, 24 de outubro de 2012 01:19
    quarta-feira, 24 de agosto de 2011 21:25

Todas as Respostas

  • Seu relatório possui mais de uma tabela vinculada? Normalmente o Crystal precisa autenticar todas as tabelas que serão usadas. Quando tive esse problema, trabalhei com um relatório que passava os valores de pesquisa dinamicamente. Segue um exemplo (WinForms + VB.NET), com a autenticação de várias tabelas:

    Public Sub lsubCarregaRelatorio(ByVal lobjValorParametros() As Object, ByVal lstrNomeParametros() As String, ByVal lstrNomeProcedure As String)
    
     Dim lrptRelatorio As New ReportDocument
     Dim lconInfo  As New ConnectionInfo
     Dim ltblInfo  As New TableLogOnInfo
     Dim lparParametro As ParameterFieldDefinition
     Dim lfilCampo  As ParameterFieldDefinitions
     Dim ldisDiscrete As ParameterDiscreteValue
     Dim lvalValor  As ParameterValues
    
     '# Passa os dados para conexão
     lconInfo.DatabaseName = nomeMeuBanco
     lconInfo.ServerName = nomeMeuServer
     lconInfo.UserID = meuUsuario
     lconInfo.Password = minhaSenha
    
     '# Carrega o arquivo rpt
     lrptRelatorio.Load("caminhoMeuRelatorio")
    
     '# Realiza a conexão das tabelas do relatório
     '# Apenas usado caso exista mais de uma tabela no relatório, o que normalmente é feito
     For Each ltblTable As Table In lrptRelatorio.Database.Tables
      ltblInfo.ConnectionInfo = lconInfo
      ltblTable.ApplyLogOnInfo(ltblInfo)
     Next
    
     '# Recebe os parâmetros existentes no rpt
     lfilCampo = lrptRelatorio.DataDefinition.ParameterFields
    
     '# Loop que irá configurar cada parâmetro
     For lintContador As Integer = 0 To UBound(lobjValorParametros)
    
      lparParametro = lfilCampo.Item(lstrNomeParametros(lintContador))
      lvalValor = lparParametro.CurrentValues
      ldisDiscrete = New ParameterDiscreteValue
    
      '# Verifica o tipo de dado para passar o valor correto
      If IsDate(lobjValorParametros(lintContador)) Then
      ldisDiscrete.Value = IIf(lobjValorParametros(lintContador) = "00:00:00" Or lobjValorParametros(lintContador) = "0001-01-01 00:00:00", "1899-12-30", lobjValorParametros(lintContador))
    
      ElseIf IsNumeric(lobjValorParametros(lintContador)) Then
      ldisDiscrete.Value = lobjValorParametros(lintContador)
    
      Else
      ldisDiscrete.Value = IIf(Trim(lobjValorParametros(lintContador)) = "NULL", DBNull.Value, Trim(lobjValorParametros(lintContador)))
    
      End If
    
      '# Adiciona e confirma os valores
      lvalValor.Add(ldisDiscrete)
      lparParametro.ApplyCurrentValues(lvalValor)
     Next
    
     meuReportViewer.ReportSource = lrptRelatorio
     meuReportViewer.Refresh()
    
     End Sub
    
    


    Leonardo Borges 'Xis'
    "Mas a persistência é o que leva a perfeição."
    Se a resposta for útil, marque-a. Poderá ser útil para outros desenvolvedores.
    segunda-feira, 22 de agosto de 2011 12:28
  • Bom dia Leonardo Borges Xis.

    Obrigada pela resposta.

    Meu relatorio possui 2 tabelas, mas são tabelas geradas a partir de comandos (não sei se isso faz diferença) . Eu preparo o select e a tabela é gerada a partir desse select. Também tenho uma tabela que vem de um dataset que tenho no projeto. Essa tabela nao precisa de conexao pois só uso ela pra colocar a imagem do logotipo no relatório.

    Fiz o que vc me disse. Mas isso não resolveu. Estranho é que tudo funciona quando executo o programa pelo visual studio. Só nao funciona quando publico no servidor. Sinceramente não sei mais o que fazer. 

    Alguém tem mais idéias??

    segunda-feira, 22 de agosto de 2011 13:49
  • Bom dia.

    Descubri que o problema é a tabela que vem do dataset sem conexão. Uso ela pra colocar a imagem no relatorio. Alguém sabe como fazer para colocar imagem dinamica no relatorio sem usar dataset? Estou usando crystal reports 13.

    Obrigada!


    terça-feira, 23 de agosto de 2011 11:51
  • Olá, consegui colocar a imagem no relatório sem usar o dataset. Fiquei toda contente achando que tinha resolvido o problema. Na verdade o problema da tela de logon foi resolvido. Mas o fato de eu estar usando um ole  object  para colocar a imagem, e passando o endereço da imagem para um parametro que é passado ao ole object via formula, me causou outro problema. Quando tento executar o relatorio no servidor dá o seguinte erro: 

    Operação não permitida. Um documento processado pelo mecanismo JRC não pode ser aberto na pilha de C++.

     

    Já to apelando com essas frescuras que o crystal reports tem. Fala sério, as coisas nunca funcionam, vc resolve um problema e lá vem outro!!!Vo parar de escrever par num escrever merda aqui. 

    Se alguém souber o que é isso, dá um help ai.


    terça-feira, 23 de agosto de 2011 13:18
  • Olá, vou postar isso aqui só para o caso de alguem passar pelo mesmo problema.

    Estive equivocada achando que o problema da pagina de login fosse o dataset que estava usando para colocar a imagem dinamica. o problema é outro, como vcs podem ver aqui: http://www.devmedia.com.br/post-7218-Alterando-a-fonte-de-dados-de-um-relatorio-no-Crystal-Reports.html

    Fiz o que esta nesse artigo e resolvi o problema da tela de login insistente.

    Agora o erro: 

    Operação não permitida. Um documento processado pelo mecanismo JRC não pode ser aberto na pilha de C++.

    Li algo superficialmente sobre JRC e vi que tem algo a ver com esse mecanismo não aceitar alteração dinamica nos objetos do relatorio. Não sei bem como é mas é algo nesse sentido. Acabei usando o dataset mesmo pra colocar a imagem dinamica.

    • Marcado como Resposta AGarota quarta-feira, 24 de outubro de 2012 01:19
    quarta-feira, 24 de agosto de 2011 21:25