Eu tou desenvolvendo uma aplicação em Visual Basic, com bases de dados em SQL e relatorios do Cristal 7.0.
Nos relatorios estou a utilizar o modulo "GLOBAL32.bas"(Visual Basic Declarations of CRPE32.DLL), até aqui tenho conseguido meter tudo a funcionar, mas agora tenho um relatorio diferente, onde utilizo um Sub Report, mas não consigo que ele funcione.
Se criar o relatorio no servidor "A" e se depois o abrir no servidor "B" através da minha aplicação ele já não funciona pq eu tenho que lhe mudar o nome do servidor através de código, mas isso eu não sei fazer!
Se alguém souber a parte de código que me falta e me puder ajudar eu agradeço.
Valeu pessoal.
Código Actual:
*********************
NovoRelatorio (RfileName), conexao_simp.DefaultDatabase *
rc = PEOutputToWindow(PJ, "Relatório", 50, 50, 500, 700, 12582912 Or 8388608 Or 16777216 Or 65536 Or 524288 Or 131072, preview.hwnd)
SubRep = PEOpenSubreport(PJ, "Comp311")
PESetSelectionFormula SubRep, "
{@Data} >= Date(" & Data1 & ") and
{@Data} <= Date(" & Data2 & ")"
PESetWindowOptions PJ, wo
If rc <> 1 Then
MsgBox Str(PEGetErrorCode(PJ)), , "PEOutputToWindow"
Unload preview
Else
rc = PEStartPrintJob(PJ, True)
If rc <> 1 Then
MsgBox Str(PEGetErrorCode(PJ)), , "PEStartPrintJob"
Unload preview
End If
End If
**********************
*Public Sub NovoRelatorio(RfileName As String, Optional BD As String)
Dim Locals As PETableLocation
Dim Tabela As String
Dim Tabela_Aux As String
Dim i As Integer
i = 0
Tabela_Aux = ""
rc = PEOpenEngine()
hasRangeParams = False
PJ = PEOpenPrintJob(App.Path & "Mapas" & RfileName & ".rpt")
LINFO.StructSize = Len(LINFO)
With LINFO
.ServerName = Servidor & Chr(0)
If Len(BD) > 0 Then
.DatabaseName = BD & Chr(0)
If BD <> "WGG_link" Then
Do
Locals.StructSize = Len(Locals)
PEGetNthTableLocation PJ, i, Locals
If Tabela_Aux = Trim(Locals.Location) Then Exit Do
Tabela_Aux = Trim(Locals.Location)
Tabela = Replace(Locals.Location, "WGG_163", conexao_simp.DefaultDatabase, 1, , vbTextCompare)
Locals.Location = Tabela
PESetNthTableLocation PJ, 0, Locals
i = i + 1
Loop Until Len(Locals.Location) = 0
End If
End If
.UserID = utilizadores & Chr(0)
.password = Pass_Acesso & Chr(0)
End With
rc = PESetNthTableLogOnInfo(PJ, 0, LINFO, True)
End Sub