11 messaggi dal 19 novembre 2001
E' mai possibile che non si possa fare accedere (in sola lettura) 2 utenti contemporaneamente su una tabella?
Mi si genera "File in uso".
In ordine: la connessione è
Server.CreateObject("ADODB.Connection")cnStHol="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ Server.MapPath("mio file.mdb")
cnHol.Open cnStHol,"",""
il recordset è riordinato e aperto (sempre adodb)
miorecordset.Open sql,cnHol,3,3

Non mi pare che sia qui il problema: in effetti se apro il mio db e lo tengo aperto sul desktop, mi si genera lo stesso errore: file in uso.
E' possibile eliminare questo inconveniente?
grazie

Se non devi fare delle grandi cose prova a usare 1, 3 come parametri di apertura. Access come ogni DBMS ha un suo sistema che gestisce le connessioni multiple. E' caratteristicha di ogni DBMS essere un software che gestisce una collezione di dati che può essere condivisa.

---[ www.digiscout.it ]---

"This message was written using 100% recycled electrons"
11 messaggi dal 19 novembre 2001
No; mi sa che sia un problema di connessione.
Infatti ripeto:
1-apro il mio DB (per conto proprio)
2- faccio girare una pagina asp che abbia una connessione con quel db.
3- mi si genera il problema ("file in uso") al momento della apertura della connessione.

Tutto questo non si verificava con Win98, ma qui, in Win2000 mi si genera il problema (sia che usi Access97 o Access2000)

Forse si tratta di una sciocchezza, ma qualcosa mi sfugge.


635 messaggi dal 06 settembre 2002
Scusa ma, cosa intendi con contemporaneamente?

Non mi è capitato di accedere ad una stessa tabella Access (in fase di test) contemporaneamente (nello stesso istante) da 2 postazioni diverse (ho una rete ma non l'ho mai provato).

Tuttavia, se apri una connessione, apri il recordset, effettui le varie operazioni, chiudi il recordset (rs.Close e Set rs=Nothing) chiudi la connessione al database (conn.Close e Set Conn=Nothing) non credo che ci siano problemi.


Se lasci invece aperta la connessione della tabella (in modalità locale o con una pagina ASP) il problema non credo che sia risolvibile (Access è un database Mono utente e se viene aperto in locale (doppio click sul nome del database) lo si apre sempre in modalità Ammin).

Spero di essere stato di aiuto.

 JD

OJD
1.818 messaggi dal 21 giugno 2001
Contributi
<b>ojd ha scritto:</b>
<BLOCKQUOTE id=quote><font size=1 face="Arial" id=quote><hr height=1 noshade id=quote>
Scusa ma, cosa intendi con contemporaneamente?

Non mi è capitato di accedere ad una stessa tabella Access (in fase di test) contemporaneamente (nello stesso istante) da 2 postazioni diverse (ho una rete ma non l'ho mai provato).

 JD
<hr height=1 noshade id=quote></BLOCKQUOTE id=quote></font id=quote><font face="Arial" size=2 id=quote>

Non è necessario avere due postazioni diverse; basta aprire due volte il browser e digitare su entrabe le finestre l'indirizzo del sito.Così facendo ottieni due IDSession distinte e per l'applicazione ASP è come se ci fossero due utenti distinti collegati al momento.

Per quanto riguarda il tuo problema Fili, ti suggerisco di usare recordset disconnessi. Il recordset disconnesso ha il cursore ADO settato lato client e quindi puoi leggerlo anche dopo aver chiuso la connessione al db.

Eccoti un esempio:
<code>
SQL="SELECT * FROM Nome_Tabella"

set rs = Server.CreateObject("ADODB.Recordset")

set cn = Server.CreateObject("ADODB.Connection")

cn.Open Nome_Connessione

rs.CursorLocation=3

rs.CursorType=3 'adOpenStatic

rs.LockType=4

do

&nbsp; &nbsp;     rs.open SQL, cn

loop until cn.Errors.Count = 0

Set rs.ActiveConnection=Nothing

cn.close

set cn=Nothing
</code>

Così facendo io posso leggere il recordset rs anche se non ho più nessuna connessione attiva al db.

Dopo che hai fatto tutto quello che devi fare, ricordati di chiudere e deallopcare anche il recordset al solito modo:

<code>
rs.Close
Set rs=Nothing
</code>

Cia Cia
hyppos

www.teatrolabaracca.com

<code>
|--------------------------------------|
|<font color=white><b>in giro torte sol ciclos et rotor igni</b></font id=white>|
|--------------------------------------|
</code>

hyppos
<code> in giro torte sol ciclos et rotor igni</code>
635 messaggi dal 06 settembre 2002
Per Hyppos,
Se apri 2 session diverse, non accedi contemporaneamente ad una tabella (2 session diverse che nello stesso istante eseguono la stessa istruzione di connessione alla tabella la puoi realizzare solo da una rete con 2 pc diversi e 2 operatori diversi); quindi, secondo me, il problema è proprio nella chiusura del rs, o meglio, nella mancata chiusura di rs e, forse, della connessione.

Ciao.


 JD

OJD
11 messaggi dal 19 novembre 2001
Bene, ricapitoliamo la natura dell'errore.
L'errore si genera in
cn.Open
quando qualclun altro ha -in quel momento- un'altra connessione aperta. L'errore viene notificato con "File in uso".
Ho verificato che non si tratta di autorizzazioni a livello di db.

Mi sembra una riduzione eccessiva per un programma, non trovate? Mi aspetto che qualcuno abbia già risolto questo genere di probema. Per quanto io possa limitare al minimo il tempo di una connessione... beh, se un programma è molto visitato.

Per hyppos
L'idea di loopare, mettendo in attesa il visitatore, me l'hai data tu, ma devo spostare tutto in su, all'apertura della connessione:

on error resume next
'skippo l'errore
call ApriConnessione()
function ApriConnessione()
cn.Open miaconn
end function
do until cnHol.Errors.Count = 0
call ApriConnessione()
loop

il visitatore vede la clessidra finché non viene rilasciata la precedente connessione.
Ma possibile non ci sia un modo diretto??
Ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.