Newsgroup: it.comp.appl.access
Titolo: [VB6+ACCESSS] Procedura per l'anteprima di stampa.....help me

If Index = 0 Then
        Dim ac As Access.Application
        Set ac = CreateObject("Access.Application")
        ac.Visible = True ' se non lo metto, non fa l'anteprima
        ac.DoCmd.RunCommand acCmdAppMaximize ' espande Access
         ac.OpenCurrentDatabase (nome_db), False
        ac.DoCmd.OpenReport "scheda_report", acViewPreview, , "[codice]=" &
Chr(34) & id & Chr(34)
        ac.DoCmd.Maximize
        ac.Application.Visible = True
        ac.DoCmd.SelectObject acReport, , True
        ac.DoCmd.RunCommand acCmdWindowHide
            If Check1(0).value = vbChecked Then
                Reports!scheda_report!scheda_sottoreport0.Visible = True
            End If
            If Check1(1).value = vbChecked Then
                Reports!scheda_report!scheda_sottoreport1.Visible = True
            End If
    With Reports!scheda_report
       If .Filter = vbNullString Then
             .FilterOn = True
             .Filter = " "
             .Filter = vbNullString
       Else
             .Filter = .Filter
             .FilterOn = True
       End If
    End With
    Set ac = Nothing
        Unload Form6
    Else
        Unload Form6
    End If
End Sub
Ormai sto IMPAZZENDO  non riesco a trovare l'errore in questa mia procedura
e ormai e
da piu di una settimana che ci lavoro sopra
 la prima volta funziona tutto perfettamente la seconda volta mi da errore
Errore di automazione,
l'oggetto invocato si è disconnesso dai client corrispondenti
questo errore me lo da quando cerca di rendere visibile il sottoreport
Cioe si apre access si apre il report ma quando arriva alla riga di codice
per rendere visibile l'oggetto si blocca e mi da errore
ho inserito perfino questo filtro che ho trovato su google, ma senza alcun
successo
    With Reports!scheda_report
       If .Filter = vbNullString Then
             .FilterOn = True
             .Filter = " "
             .Filter = vbNullString
       Else
             .Filter = .Filter
             .FilterOn = True
       End If
    End With
Ho letto  tutti i post che ci sono su google o cercato aiuto presso altri
miei amici che ci lavorano da molto piu tempo di me o cercato perfino su
msdn ma senza alcun risultato
Ripeto la prima volta mi funziona benissimissimo
Cosi spero che mi possiate aiutare ancora una volta
UN GRAZIE MILLE A CHI MI DARA UN MINIMO D'AIUTO

 wrote in message
news:jpv6e.51843$
kC3....@tornado.fastwebnet.it
[CUT]

Quella parte di Codice che applica il Filtro che dici di aver trovato
su Google se non ricordo male l'ho suggerita io sul NG di VB al fine
di consentire l'applicazione di Formattazioni Grafiche, ma
non ha nulla a che vedere con quanto devi fare tu.
Se non ricordo male questo Post è già stato dibattuto sul NG
di VB, ma non ricordo se eri tu l'autore.
Il motivo del probabile disguido è dovuto al fatto che potrebbe
essere stata chiusa male o addirittura non chiusa l'istanza di Access
generando un'errore che potrebbe essere Error.Number=429
Ovviamente stò facendo ipotesi.
In questo caso devi prevedere una corretta gestione ERRORI.
Prima di tutto vedi con il TASK MANAGER se Access è ancora attivo.
Io ipotizzo di si in quanto nonostante il codice in cui azzeri
la Variabile Oggetto(ac) non vedo la chiusura del Database Aperto.
Pertanto è molto facile che non vada a buon fine, ma non avendo inserito
nessuna gestione errori non ti accorgi di nulla.
In quel caso ti consiglio di chiudere correttamente il Database
per mezzo del Metodo CloseCurrentDatabase, 
quindi azzerare le variabili Oggetto.
Ti suggerisco inoltre di non usare l'associazione preventiva
che ti costringe ad inserire i Riferimenti ad Access nel progetto
ma di usare l'associazione Tardiva(LateBinding) come ti mostro sotto.
In più devi inserire una corretta gestione ERRORI:
Private Sub ApriReport()
   On Error GoTo gestErrori
   Dim ac As Object
   ' Se Access non è già APERTO viene generato un'errore
   ' che gestisco nella procedura ERRORI, se al contrario 
   ' era già Aperto evito di ISTANZIARLO nuovamente.  
   Set ac= GetObject(, "Access.Application")
   ' metti tutto il tuo codice originale
   ' escluso la gestione FILTRI che non serve
   ' Al termine prima di AZZERARE le variabili 
   ' usa il metodo CloseCurrentDatabase
 
 
   Exit Sub
gestErrori:
   If err.Number = 429 Then
       'se c'è stato un errore è perchè Access non era già aperto:
       'aprilo adesso
       Set ac = CreateObject("Access.Application")
       Resume Next
 
   Else
      MsgBox "CreaSchedaTaratura()" & vbCrLf & _
             "[" & err.Number & "] - " & err.Description
   End If
End Sub
Speriamo che vada tutto.
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG