Newsgroup: it.comp.appl.access
Titolo: [VB + ACCESS] Vi è mai successo (un po' lungo)

Ho fatto un programmino per gestire dei preventivi che si basa su un DB
access 97.
Da codice richiamo dei report di access per fare le stampe, all'interno di
alcuni report esiste un sottoreport che legge i dati da una tabella
riepilogo che creo ogni volta che effettuo la stampa.
Cosa succedeva che alcune volte questo sottoreport usciva senza dati,
completamente vuoto, eppure se lo provavo da access, visualizza anteprima,
usciva correttamente. Prova e riprova cosa sarà mai ....... alla fine ho
introdotto un ritardo prima di effettuare il .DoCmd.OpenReport perchè mi
sembrava, eseguendo dei debug, che la tabella riepilogo di access non si
riempisse in maniera instantanea ma avesse dei ritardi. Provo a spiegarmi
meglio.
Ad esempio prima di iniziare a scrivere eseguo una pulizia completa
DB_Offerte.Execute ("delete [Riepilogo classi].* From [Riepilogo classi] ")
in debug andavo a verificare se la tabella fosse effettivamente pulita e la
trovavo ancora con dati, ma se entravo una seconda volta era vuota ????
(primi dubbi)
Stessa cosa se aggiornavo un campo di totali entravo una prima volta e non
era aggiornato la seconda si.
Beh per concludere inserendo il ritardo ho risolto il problema e cioè il
sottoreport viene sempre stampato correttamente.
Qualcuno mi sa illuminare ???
Ciao Beppe

 ha scritto nel messaggio
news:a1af9n$qe2$1...@pegasus.tiscalinet.it...



E' successa la stessa cosa anche a me. In un report con diversi sottoreport
avevo dei controlli calcolati con totali che se aprivo il report in debug
vedevo correttamente, mentre se lo aprivo "normalmente" non risultavano
valorizzati. Sono arrivata alla conclusione che access non avesse il tempo
necessario per eseguire le query e/o i calcoli e per questo non
visualizzasse niente, mentre in modalità debug aveva più tempo e quindi
funzionava tutto. Inserendo il ritardo infatti funziona.
La cosa non è molto bella, ma temo  non ci siano altre spiegazioni.
Bye
Ilaria

 ha scritto nel messaggio
news:a1af9n$qe2$1...@pegasus.tiscalinet.it...


 Ciao Beppe
Ciao.
--
Sergio MAZZA

 
Adesso sono al lavoro è non ho il sorgente di esempio da cui sono partito
comunque a questi indirizzi puoi trovare altri esempi che possono esserti
utili
http://www.marcominerva.com/vbcorner/download/code2.htm
http://utenti.tripod.it/DanieleSimone/Sorgenti.htm
Ciao Beppe
Ps Stasera se mi "attacco" ti posto anche il modulo che mi sono creato
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Grazie in Anticipo
Adesso sono al lavoro è non ho il sorgente di esempio da cui sono partito


 ha scritto nel messaggio
news:a1bjt5$pt0$1...@localhost.localdomain...

Il "ritardo" l'ho introdotto con le seguenti righe di codice :
    For Count = 1 To 10000000
    Next Count
conosci un modo un po' più elegante ???
Riciao Beppe


CUT
Ecco sono a casa.
Ti posto il mio modulo :
Public Function PrintReport(WhichReport) As Boolean
    Const acPreview = 2 'Costanti definite di Access
    Const acReport = 3
    On Error GoTo ErrHandle
    'Path per DB
    DbName = (System_Path & "offerte.mdb")
    Screen.MousePointer = vbHourglass
    PrintReport = False
    If WhichReport = "" Then
      MsgBox "Internal Error: " + vbCrLf + _
           "Report String not passed.", vbCritical, ProgTitle
      Exit Function
    End If
    'Attivo access
    Set objAccess = CreateObject("Access.Application")
    With objAccess
        .OpenCurrentDatabase (DbName)
        'Imposta filtro per il report.
        strFiltro = "[Testata offerte].[Anno Offerta]=" & Trim(Off_Anno) & "
AND [Testata offerte].[ID Offerta]=" & Trim(Off_IDoffe) & ""
        .DoCmd.OpenReport ReportName:=WhichReport, WhereCondition:=strFiltro
        '.DoCmd.OpenReport ReportName:=WhichReport, View:=acPreview,
WhereCondition:=strFiltro
    End With
    PrintReport = True
    Screen.MousePointer = vbDefault
    objAccess.Quit
    Set objAccess = Nothing
    Exit Function
ErrHandle:
   MsgBox "Errore #" + Str(Err.Number) + ": " + Err.Description + ".", _
      vbCritical, ProgTitle
    Screen.MousePointer = vbDefault
End Function
contiene anche cose che ti posono non interessare tipo il filtro, a vedi un
po' tucome usarlo.
Se ti interessa ti posso spedire anche l'esempio che ho utilizzato io per
imparare.
Fammč sappč.
Ciao Beppe