Newsgroup: it.comp.appl.access
Titolo: Errori di connessione ADO

Abbiamo 2 connessioni attive :
C_IN e C_OUT, e rispettivamente due tabelle
T_IN e T_OUT.
Se trasferisco i dati da T_IN a T_OUT ad esempio
con :
Dim Q as string
C = "insert * into [C_OUT].T_OUT from [C_IN].T_IN;"
C_OUT.execute Q
puo' accadere (anche se e' molto raro) che durante il
trasferimento una o ambedue le connessioni cadano.
(ci possono volere diversi minuti per completare il
trasferimento).
Posso certamente intercettare l' errore, ma come diavolo
faccio a sapere *QUALE* delle due connessioni e' caduta ?!?
(mi serve  saperlo perche' le azioni da fare sono diverse).
perche :
L' errore e' sempre lo stesso ovviamente, e lo status della
connessione non m' aiuta perche' una volta aperta il suo
status rimane a 1, anche se interviene un errore, a meno che
abbia preso un abbaglio durante i miei studi e non abbia
capito un tubo (mi succede spesso).
C'e' un modo semplice per risolvere ? Non vorrei essere
costretto, per una cosa che ha bassa probabilita' di accadere,
andarmi a fare una gestione degli eventi di ognuna delle due
connessioni ... E' abbastanza "laboriosa", e non so nemmeno
se basterebbe, non la conosco ancora a  fondo e vorrei continuare
a non conoscerla se possibile :-)
Grazie.

> Grazie.
2 connessioni aperte per una query di riversaggio???
si hai ragione, sei pazzo :D
questi solo alcuni dei motivi per non lavorare in ADO, e semplificarti la 
vita con gli strumenti nativi che ti raccontavo nel post precedente... 

 si hai ragione, sei pazzo :D
Ih ! E che sara' mai ? :D
Ti spaventi per due connessioncine aperte in contemporanea ?
Naa ...
Sia \\X\code\ la macchina X con directory code dove risiede il
codice, cioe' il client , \\Y\IN\ la macchina Y remota e \\X\OUT\
i dati locali.
Allora quando l' utente entra nel client, il codice ordina il
trasferimento
dei dati da \\Y\IN\ a \\X\OUT\, poi chiude la connessione in remoto
e quella locale. A quel punto, per visualizzare o fare report, apre
solo
la locale e carica recordset, (subito disconnessi) e chiude la locale.
Solo e soltanto quando inserisce\modifica\ e cancella apre la
connessione al remoto (per fare i molti controlli del caso) e alla
locale
e aggiorna in entrambi.
Altrimenti lavora sempre disconnesso. Poi dispone di tasti di
aggiornamento su singoli record o intere tabelle nel caso volesse
essere sicuro di vedere i dati aggiornati all' ultimo momento.
Se poi la connessione Y dovesse cadere, ogni X puo' fungere
da server temporaneo per sottoinsiemi di utenti (la topologia
della rete la adatto quindi alle circostanze) con l' avvertenza
che i dati potrebbero non essere tutti gli esistenti : ma intanto
l' utente lavora : non tutte le tabelle sono in continuo
aggiornamento,
ma solo un piccolo sotoinsieme.
ADO, checche' se ne dica, e' molto, molto ok.
(cmq si, io so' matto) :-)
D' altra parte sto progettando di schiaffare \\Y\IN  su SQL server,
e a quel punto con DAO sai che ci fai ?
Meglio che sto zitto senno' poi mi fai il cazziatone ... ;-)
Mentre scrivevo m' hai fatto venire un idea !
Te devo scrivere piu ' spesso !
faro' tipo :
if apri_connessione(Y) then
   if apriconnessione(X) then
        trasferisco(Y->Y)
    else
        errore apertura connessione X
    endif
else
     errore apertura connessione Y
endif
public func. trasferisco ( )
       on error goto errore
           ...
          TRASFERISC !
       errore :
       if errore = -275 ... or ... then
          if la connessione e' X
             fai questo
           else
              fai quest' altro
           endif
       else
            errore imprevisto vai a gestione
            centralizzata errori
      endif
end func
E "VOILATTE" !
Visto ? che sara mai ? :D

 E "VOILATTE" !
e VOILATTE de che ?
la funzione : la commessione e' X
e' da intendersi :
provo a conentermi con X, se da errore segno
a = 0 else a = 1
provo a connettermi con Y, se da errore segno
b = 0 else b = 1
poi torno a & b
che' e'
00 toppa la X e la Y
10 toppa la X e non Y
01 toppa la Y e non X
11 ambedue ok, ma costringo comunque
l' utente a ripetere il caricamento.