Newsgroup: it.comp.software.database
Titolo: [Forse OT] ASP e Access

Salve a tutti,
ho uno strano problema che credo non dipenda dal codice nelle pagine asp.
Sono solito, x ogni pagina asp, aprire e chiudere il db Access con:
set OBJdbconnection = Server.CreateObject("ADODB.Connection")
OBJdbconnection.open dnsdriver
dove dsndriver contiene una chiamata al DNS oppure la stringa diretta al DB
Access
e chiudo sempre la connessione con:
OBJdbconnection.close
set OBJdbconnection=nothing
Poichè ho fatto altri siti in questo modo e non ho mai avuto problemi di
codice mi viene da pensare che Access non funzioni tanto bene se viene
ripetutamente aperto, interrogato e poi chiuso o aperto, scritto o
modificato 1 record e poi richiuso.
Vi chiedo quindi se secondo voi puo' essere la causa di ripetuti e casuali
errori sempre in fase di connessione da parte del browser che una volta mi
dice:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Driver ODBC Microsoft Access] Impossibile usare "(sconosciuto)".
File già in uso.
quando invece controllando nella cartella il DB Access è chiuso
oppure:
Tipo di errore:
Provider (0x80004005)
Errore non specificato.
Secondo voi devo cambiare DB? se si a che cosa posso passare? Il db in
questione deve supportare aperture e chiusure di db estremamente veloci...
poi magari a fine giornata riassesto il db con qualche programma come fa
access col compatta e ripristina.
Grazie!!!

 modificato 1 record e poi richiuso.
Potrebbe essere che il ciclo apri/chiudi e' tanto rapido che il motore
Jet non riesce a chiudere il file correttamente e se lo ritrova gia'
aperto. Ma se ipotizzi molti cicli, forse e' meglio cominciare a pensare
ad un sistema di connection pooling.
Davide

 quando invece controllando nella cartella il DB Access è chiuso
prova a spezzare il DB (puoi farlo con una procedura guidata,
strumenti->aggiunte->divisione database); quello a cui ti connetti (e
che non contiene fisicamente i dati ma solo dei link alle tabelle) lo
metti in read-only
Greetings,
Alessandro Trebbi
Pesaro, Italy
http://www.b3soft.com

 ad un sistema di connection pooling.
Sarebbe a dire???

 metti in read-only
Ok l'ho spezzato... mo mi ritrovo 2 db perfettamente identici solo che uno
ha delle freccine verdi accanto... che cosa sono? si possono considerare
viste del DB principale???
Se modifico un dato o lo inserisco l'altro vede le modifiche???
Grazie!!!

Posso pensare di fare in questo modo:
il db con le tabelle che non contengono i dati fisicamente lo uso solo per
effettuare interrogazioni e lo apro e lo chiudo a piacimento...
Quello invece che contiene i dati fisici lo apro esclusivamente x inserire,
modificare o cancellare poi lo chiudo. Ma mi aspetto che se interrogo il db
aprendo quello finto i dati nuovi vengano visualizzati!
Il db "fantoccio" si comporta come un db normale?
A Che precauzioni devo attenermi?
Cmq grazie x l'idea!!! :)

 Sarebbe a dire???
Avere un certo numero di connessioni sempre aperte e riutilizzarle, 
invece di aprire/chiudere ogni volta.
Vedi 
http://www.soft-land.org/articoli/pool.html
, e' orientato a 
Java ma il concetto e' lo stesso.
Davide

 Java ma il concetto e' lo stesso.
Si ma secondo te si può convertire in VBScript?

 aprendo quello finto i dati nuovi vengano visualizzati!
Lavori solo con quello in read-only, anche per inserire (in realta' i
dati sono sull'altro, ma sono accessibili tramite links); il fatto che
sia in read-only ti dovrebbe evitare il problema che segnalavi.


 sia in read-only ti dovrebbe evitare il problema che segnalavi.
Fammi capire bene... Io metto read-only quello fantoccio e quello reale dove
sono i dati č scrivibile... ma poiche io devo anche scrivere sul db come
faccio???
Ora che ho diviso il DB mi ritrovo con 2 file. Uno si chiama db1.mdb e
l'altro db1_be.mdb
Il primo č quello composto da link con le freccine verdi lo metto read-only
e l'altro lo lascio scrivibile...
Ora non mi conviene usare il db read-only solo x interrogare il db e l'altro
che č scrivibile usarlo x le altre 3 funzioni? In questo modo farei 2
connessioni distinte ed eviterei di ritrovarmi con l'errore che il file č
gia in uso xche il db non ha fatto in tempo a chiudersi.
Andrebbe bene cosě???
Grazie!!!

 gia in uso xche il db non ha fatto in tempo a chiudersi.
Io credo che l'errore sia dovuto al fatto che la prima connessione
apre il file in r/w mode modalita' esclusiva e blocca gli altri; per
superare il problema, ti connetti al db attraverso un file in r/o che
non contiene fisicamente i dati, attraverso quello puoi anche scrivere
perche' poi vai ad aggiornare un altro file mdb (a cui accede in
maniera condivisa), e cosi' facendo eviti di bloccare il file.
Comunque e' solo una ipotesi, quella del file che non fa in tempo a
chiudersi mi sembra inverosimile.
Se accedi come hai detto, aprendo direttamente il file che contiene le
tabelle, rischi di continuare ad incorrere nello stesso problema.


Con la tua soluzione mi pare che il db reagisca meglio.
X ora, faccio gli scongiuri, non si è mai bloccato!!!
Grazie!!!