Newsgroup: it.comp.appl.access
Titolo: Connessione Ado: Saltuario messaggio di errore

Ciao a tutti
La seguente routine che svuota una tabella e poi genera una serie di date,
funziona ma una volta su 10 mi restituisce l'errore:
[Il data base è stato messo dall'utente 'Admin' del computer 'Staz-9852'
in uno stato che non consente di aprirlo o bloccarlo]
La connessione è al database corrente, aperto da un solo utente in
modalità condivisa.
la routine è chiamata dal form [Menu Principale]
che contiene sottomaschere e controlli aventi il recordset in questione
come origine dati.
Public Sub Aggiorna_Calendario()
DoCmd.SetWarnings False
Dim stDocName As String
    stDocName = "Q_Elimina_Calendario"
    DoCmd.OpenQuery stDocName, acNormal, acEdit
DoCmd.SetWarnings True
Dim contatore As Long
Dim data_add As Date
data_add = Date
contatore = 0
Dim dcnBase_Dati As New ADODB.Connection
        dcnBase_Dati.CursorLocation = adUseClient
        dcnBase_Dati.Open PercorsoDB2 
'[***PercorsoDB2  è una variabile pubblica su modulo popolata così da una
routine su apertura:
'= "Provider=microsoft.jet.oledb.4.0;" & "Data Source=
C:\Pb\Database_Pbl\Pb_Proc.mdb"]
 
	Dim rst1 As ADODB.Recordset
        Set rst1 = New ADODB.Recordset
 
           Do While contatore < 62
           Set rst1 = New ADODB.Recordset
                contatore = contatore + 1
                data_add = data_add + 1
            With rst1
                .CursorType = adOpenKeyset
                .LockType = adLockOptimistic
                .Open "T_Calendario", dcnBase_Dati, , adCmdTable
                .AddNew
                .Fields(0).Value = contatore
                .Fields(1).Value = data_add
                .Update
            End With
            rst1.Close
        Set rst1 = Nothing
        Loop
        dcnBase_Dati.Close
    Set dcnBase_Dati = Nothing
End Sub
Non capisco se il problema è dovuto a conflittualità tra il DB aperto e la
connessione ADO che hanno la stessa base dati in comune, ma in altri
lavori la cosa ha sempre funzionato a dovere
Grazie
Prometeo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Prometeo
Forse l'errore è di aver aperto il recordset e poi aver avviato il ciclo
che lo riapre;
è meglio così?:
Dim rst1 As ADODB.Recordset
            'Elimino l'istruzione Set rst1 = New ADODB.Recordset     
           Do While contatore < 62
           Set rst1 = New ADODB.Recordset
                contatore = contatore + 1
                data_add = data_add + 1
            With rst1
                .CursorType = adOpenKeyset
                .LockType = adLockOptimistic
                .Open "T_Calendario", dcnBase_Dati, , adCmdTable
                .AddNew
                .Fields(0).Value = contatore
                .Fields(1).Value = data_add
                .Update
            End With
            rst1.Close
        Set rst1 = Nothing
        Loop
 
        dcnBase_Dati.Close
    Set dcnBase_Dati = Nothing
Ciao e grazie


[CUT]
Va 1 pň meglio -> cosě non viene istanziato 62 volte ma una sola  -> x il 
resto il codice sembra pulito... 

 resto il codice sembra pulito...
Ciao Gaspare e grazie
Purtroppo il problema si ripresenta ed il debug č sulla riga
dcnBase_Dati.Open PercorsoDB2 con il solito messaggio [Il DB č stato messo
dall'utente Admin in uno stato che non consente di aprirlo o bloccarlo]
Il percorso assegnato alla variabile [PercorsoDB2] č corretto e infatti
9 volte su 10 la routine funziona ed il calendario viene rigenerato
Ciao 


[CUT]
A questo punto non sò proprio cosa dirti -> 9/10 è strano!
Vedi un pò cosa ti dicono gli altri...
Buona giornata! 

[CUT]
Prova un pò qui -> 
http://mailgate.supereva.com/it/it.comp.appl.access/msg63727.html
 

 
http://mailgate.supereva.com/it/it.comp.appl.access/msg63727.html
 
Ciao Gaspare,
..Finalmente ho capito, indirettamente il Link che mi hai postato mi ha
suggerito di verificare che non ci fossero in realtà oggetti aperti;
Ero io che causavo il problema perchè lavorando in modifica  su diverse
maschere ne lasciavo a volte aperta in modalità struttura una che aveva
alcuni controlli che facevano riferimento alla stessa tabella a cui
puntava il recordset che chiamavo poi dalla form principale.
Se aprivo il form principale con il db già aperto mi dava errore mentre se
lo facevo aprire in automatico all'avvio tutto bene.
E' stata una distrazione reiterata insomma, mi dispiace averti fatto
perdere del tempo.
Di nuovo grazie della disponibilità


[CUT]
Di nulla figurati ! ;-)