Newsgroup: it.comp.lang.visual-basic
Titolo: limiti di Crystal Report 4.6

sto tentando di stampare un report
che contiene 1326 record.
Si blocca.
Anche aprendo il file *.rpt
dall'editor Crystalreport
mi va in errore e mi esce.
Se svuoto la tabella access
tutto torna normale.
Che fare ???
Alexandro Magrì
Responsabile Informatico
Riela Group
-- 
Posted from 
mail.ctonline.it
 [212.34.202.4] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Ti consiglio di buttare via l'OCX e di usare la DLL crpe32.dll, fornita con
il cristal report. Quando ho iniziato a usare la versione pro di CR5 non
riuscivo piů a stampare e mi davo il tuo stesso errore. Ho iniziato a
utilizzare la DLL e il tutto ha ripreso a funzionare. Ti invio la funzione
che usavo per stampare.
Per utilizzarla DEVI inserire nel tuo programma il modulo fornito con
crystal repot che se non sbaglio si chiama GLOBAL.bas (io per mia esigenza
l'ho rinominato). Se non lo hai penso che sia sufficiente andare sul sito
delle seagate e scaricarlo.
Ciao
--o--o--o--o--o--o--o--o--o--o--o--o--o--o--o--o--
Tutte le risposte che cercavi, gratis
http://www.ioloso.it
Vieni a vedere
--o--o--o--o--o--o--o--o--o--o--o--o--o--o--o--o--
Variabili da passare:
Nome_report č il nome del report
Current database č la stringa che definisce il percorso del database
Ftext č il testo della formula.
La funzione :
Public Sub Stampa(Nome_Report As String, CurrentDatabase As String, Ftext As
String)
    Dim MyTable             As PETableLocation
    Dim MySubInfo           As PESubreportInfo
    Dim i                   As Integer
    Dim f                   As Integer
    Dim Result              As Integer
    Dim OpenEngineResult    As Integer
    Dim Process             As Integer
    Dim DiscardingResult    As Integer
    Dim NumTables           As Integer
    Dim SetLocResult        As Integer
    Dim GetLocResult        As Integer
    Dim Formula             As Integer
    Dim SR_Open             As Integer
    Dim SR_Number           As Long
    Dim SR_Handle           As Long
    Dim SR_Info             As Long
    Dim SR_Name             As String
    Dim SelectionText       As String
' Apre il Report Engine
    OpenEngineResult = PEOpenEngine
' Apre il report
    Process = PEOpenPrintJob(Nome_Report)
' Manda il report alla stampante
    PEOutputToPrinter Process, 1
' Cicla tutte le sezioni del report
    For i = 1000 To 8000 Step 25
' Legge il numero di SubReports nella sezione corrente
        SR_Number = PEGetNSubreportsInSection(Process, i)
' Se esiste uno o piů SubReport...
        If SR_Number > 0 Then
' Cicla i SubReports
            For f = 0 To SR_Number - 1
' Legge l'handle del SubReport
                SR_Handle = PEGetNthSubreportInSection(Process, i, f)
' Legge il nome del SubReport
                MySubInfo.StructSize = PE_SIZEOF_SUBREPORT_INFO
                SR_Info = PEGetSubreportInfo(Process, SR_Handle, MySubInfo)
                SR_Name = MySubInfo.Name
' Apre il SubReport
                SR_Open = PEOpenSubreport(Process, SR_Name)
' Setta la nuova locazione
                SetPrintTablesLocation SR_Open, CurrentDatabase
' Rinfresca il SubReport
                DiscardingResult = PEDiscardSavedData(SR_Open)
' Chiude il SubReport
                PECloseSubreport SR_Open
            Next f
        End If
    Next i
' Setta la nuova locazione per le tabelle del processo principale
    SetPrintTablesLocation Process, CurrentDatabase
' Setta la formula
    If Ftext <> "" Then
        SelectionText = Ftext & Chr$(0)
        Formula = PESetSelectionFormula(Process, SelectionText)
    End If
' Refresh del report
    DiscardingResult = PEDiscardSavedData(Process)
' Stampa il report
    PEStartPrintJob Process, True
' Chiude il report
    PEClosePrintJob Process
' Chiude il Report Engine
    PECloseEngine
End Sub