Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lord Warlock

Crystal Reports com Asp Clássico

Recommended Posts

Boa Noite, pessoal!

 

Estou integrando relatórios do crystal reports com o asp clássico.

Quando eu chamo o relatório ele reconhece a existencia do arquivo, no entanto

o navegador não exibe as informações contidas no relatório, apenas a tela de controle do crystal toda cinza.

 

alguém já passou por isso? ou já fez alguns exemplos referentes?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este link

abaixo um exemplo:

 

htmlviewer.asp :

 

<%

if Request("titulo_relatorio") <> "" then
sTituloRelatorio = Request("titulo_relatorio")
else
sTituloRelatorio = "Seagate ActiveX Viewer"
end if
%>
<HTML>
<HEAD>
<TITLE><%=sTituloRelatorio%></TITLE>
</HEAD>
<BODY BGCOLOR=#c6c6c6 LANGUAGE=VBScript ONLOAD="Page_Initialize">
<OBJECT id=CRViewer codeBase=activexviewer.cab#Version=8,0,0,224
classid=CLSID:C4847596-972C-11D0-9567-00A0C9273C2A width="100%" height="95%"><PARAM NAME="EnableRefreshButton" VALUE="1"><PARAM NAME="EnableGroupTree" VALUE="0"><PARAM NAME="DisplayGroupTree" VALUE="0"><PARAM NAME="EnablePrintButton" VALUE="1"><PARAM NAME="EnableExportButton" VALUE="1"><PARAM NAME="EnableDrillDown" VALUE="0"><PARAM NAME="EnableSearchControl" VALUE="1"><PARAM NAME="EnableAnimationControl" VALUE="1"><PARAM NAME="EnableZoomControl" VALUE="1"></OBJECT>
<script LANGUAGE="VBScript">
<!--
Sub Page_Initialize
'On Error Resume Next
Dim webBroker
Set webBroker = CreateObject("WebReportBroker.WebReportBroker")
if ScriptEngineMajorVersion < 2 then
 window.alert "IE 3.02 users on NT4 need to get the latest version of VBScript or install IE 4.01 SP1. IE 3.02 users on Win95 need DCOM95 and latest version of VBScript, or install IE 4.01 SP1. These files are available at Microsoft's web site."
 CRViewer.ReportName = "rptserver.asp"
else
 Dim webSource
 Set webSource = CreateObject("WebReportSource.WebReportSource")
 webSource.ReportSource = webBroker
 webSource.URL = "rptserver.asp"
 webSource.PromptOnRefresh = True
 CRViewer.ReportSource = webSource
end if
CRViewer.ViewReport
End Sub
-->
</SCRIPT>

</BODY>
</HTML>

 

função para usar o crystal :

 

 

 

Function Relatorio(sNomeRelatorio, sTituloRelatorio, sNomeSubRelatorio1, sNomeSubRelatorio2, _
            adParametros, sUsuario, sSenha, sBancoDados, sConector, sFiltrar, sOrdenar)
  Session("oPageEngine") = ""
  Session("oRpt") = ""
  set Session("oApp") = Nothing 

  Call CriarRelatorio(sUsuario, sSenha, sNomeRelatorio, sNomeSubRelatorio1, _
    sNomeSubRelatorio2, sFiltrar, sOrdenar , sBancoDados, sConector, adParametros)
Response.Write "<script language=javascript>"
  Response.Write "window.history.go(-1);"
Response.Write "window.open('../htmViewer.asp?titulo_relatorio=" & sTituloRelatorio & "','winrelatorio','top=0, left=0, width=800, height=600, toolbar=0, status=0');"
Response.Write "</SCRIPT>"
End Function

'Configura as variáveis de Sessão contendo os objetos necessários para exibir o relatório
'Entradas:
' sUsuario: usuário para conexão com o banco de dados
' sSenha: senha para conexão com o banco de dados
' sNomeRelatorio: Nome do relatório rpt a ser exibido
' sNomeSubRelatorio1: Nome do subreport, caso necessário
' sNomeSubRelatorio2: Nome de outro subreport, caso necessário
' sFiltrar: complemento da cláusula where do comando SQL utilizado no relatório
' sOrdenar: Cláusula Order By do comando SQL utilizado no relatório
' sBancoDados: nome da definição de Banco de Dados criada no SPREENT
' sConector: Nome do conector de banco de dados
' adParametros: array contendo os parâmetros do relatório
'----------------- Descomentar a partir da proxima linha ---------------
Sub CriarRelatorio(sUsuario, sSenha, sNomeRelatorio, sNomeSubRelatorio1, sNomeSubRelatorio2, _
           sFiltrar, sOrdenar, sBancoDados, sConector, adParametros())
  Dim Path
  Dim iLen
  Dim oRptOptions
  Dim Tables
Dim objParametro
  Dim crTable
  Dim sSQL
  Dim objPer 'As Persistencia.PersistNoTrans
  Dim lPosicao
  Dim sServidor
  Dim sBanco
  Dim sConnectString
  Dim iCont
Dim objParametros
Dim objSubReport
Dim sNome 'As String

  If Not IsObject(Session("oApp")) Or Session("oApp") Is Nothing Then                             
     Set Session ("oApp") = Server.CreateObject("Crystal.CRPE.Application")
  End If                                                               
  Path = Request.ServerVariables("PATH_TRANSLATED")                    
  While (Right(Path, 1) <> "\" And len(Path) <> 0)                     
     iLen = len(Path) - 1                                                 
  Path = Left(Path, iLen)                                              
  Wend                                                                 
sNome = sNomeRelatorio
lPosicao = InStrRev(sNome,"\",-1,1)
if lPosicao >0 Then

 sNome = mid(sNome,lPosicao + 1)
End If
'response.write " relatorio = " & Path & sNomeRelatorio
'response.end
'
 Set Session("oRpt") = Session("oApp").OpenReport(Path & sNomeRelatorio, 1)                         
 Set oRptOptions = Session("oRpt").Options                            
  oRptOptions.MorePrintEngineErrorMessages = 0                         
  Set Session("options") =  Session("oApp").options
  Session("options").MatchLogonInfo = 1
  Set objPer = Server.CreateObject("Persistencia.PersistNoTrans")     
  sConnectString = objPer.StringConexao(sBancoDados, sConector)
  If (Trim(sUsuario) = "") Then
     lPosicao = InStr(1, sConnectString, "Password")
  If lPosicao > 0 Then
        lPosicao = lPosicao + Len("Password=")
     sSenha = Mid(sConnectString, lPosicao, InStr(lPosicao, sConnectString, ";") - lPosicao)
  End if
  lPosicao = InStr(1, sConnectString, "User ID")
  If lPosicao > 0 Then
       lPosicao = lPosicao + Len("User ID=")
     sUsuario = Mid(sConnectString, lPosicao, InStr(lPosicao, sConnectString, ";") - lPosicao)
  End if
 End If
  lPosicao = InStr(1, sConnectString, "Initial Catalog")
  If lPosicao > 0 Then
     lPosicao = lPosicao + Len("Initial Catalog=")
  sBanco = Mid(sConnectString, lPosicao, InStr(lPosicao, sConnectString, ";") - lPosicao)
  End If
  lPosicao = InStr(1, sConnectString, "Data Source")
  If lPosicao > 0 Then
     lPosicao = lPosicao + Len("Data Source=")
 sServidor = "nomedobanco"

  End If
  Set Tables = Session("oRpt").Database.Tables
  For Each crTable In Tables
     crTable.SetLogonInfo CStr(sServidor), Ucase(CStr(sBanco)), CStr(sUsuario), CStr(sSenha)
  Next    
  If Trim(sNomeSubRelatorio1) <> "" Then
     Set objSubReport = Session("oRpt").OpenSubreport(sNomeSubRelatorio1)
   Set Tables = objSubReport.Database.Tables
   For Each crTable In Tables
         crTable.SetLogonInfo CStr(sServidor), Ucase(CStr(sBanco)), CStr(sUsuario), CStr(sSenha)
   Next    
  End If

If Trim(sNomeSubRelatorio2) <> "" Then
     Set objSubReport = Session("oRpt").OpenSubreport(sNomeSubRelatorio2)
     Set Tables = objSubReport.Database.Tables
   For Each crTable In Tables
        crTable.SetLogonInfo CStr(sServidor), Ucase(CStr(sBanco)), CStr(sUsuario), CStr(sSenha)
   Next    
  End If
iCont = 0
   Session("oRpt").DiscardSavedData
'Response.write "<script>alert('" & Session("oRpt").ParameterFields & "');</script>"
For Each objParametro In Session("oRpt").ParameterFields
 'Verifica se o parâmetro não é de subreport. Quando o parâmetro é de link de um subReport a
 'propriedade ReportName tem como valor o nome do subreport.
   if Trim(Ucase(objParametro.ReportName)) = Trim(UCase(sNome)) or _
    Trim(objParametro.ReportName) = "" Then
  'Response.write "<script>alert('teste " & adParametros(iCont) & "--"&iCont&"');</script>"
  'response.end
  'response.write adParametros(iCont) & "--" & iCont
  'on error resume next
  objParametro.SetCurrentValue(adParametros(iCont))
  if err.number <> 0 then
   Response.write "<script>alert('" & adParametros(iCont) & "--"&iCont&"--"&err.description&"');</script>"
  end if
  iCont = iCont + 1
 End If
Next
     If Trim(sOrdenar) <> "" Or Trim(sFiltrar) <> "" Then
 sSQL = session("oRpt").SQLQueryString

 If Trim(sFiltrar) <> "" Then
     sSQL = objPer.ComplementarClausulaSQL(sSQL, sFiltrar, 0, False)
     End If

  If Trim(sOrdenar) <> "" Then
     sSQL = objPer.ComplementarClausulaSQL(sSQL, sOrdenar, 1, True)
     End If

  If sSQL <> ""  Then
        Session("oRpt").SQLQueryString = ""
     Session("oRpt").SQLQueryString = sSQL
  End if
  End If  
  'response.write sSQL
  'response.end

 If Err.Number <> 0 Then                                              
    Response.Write "Erro na conexão com o banco de dados"
 Else 
    Set Session("oPageEngine") = Session("oRpt").PageEngine
 End If     
End Sub 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.