Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Apertura di 2 recordset con access...

63 views
Skip to first unread message

Marduk

unread,
Jun 17, 2002, 4:35:50 AM6/17/02
to
Salve a tutti avrei necessita' di poter aprire 2 diversi recordset con
access 97, ma appena inizio ad aggiornarne uno, l'altro si blocca.
E' possibile aggiornare 2 recordset separatamente (devo aggiornare 2 tabelle
diverse, non la stessa)
Grazie
PS Posso passare anche a versioni superiori di access se necessario

Alex

unread,
Jun 17, 2002, 4:55:35 AM6/17/02
to
"Marduk" <luca.tr...@tiscali.it> wrote in message
news:aek715$20b$1...@lacerta.tiscalinet.it


Si è possibile, solo probabilmente sbagli qualche procedura...!!
Prova a postare un minimo di codice......!!

@Alex

--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG

Marduk

unread,
Jun 17, 2002, 5:43:37 AM6/17/02
to
Il db e' lo stesso e le tabelle sono uguali
Mi interessa aggiornare le 2 tabelle separatamente.
Se aggiorno una , l'altra mi dice che e' bloccata dall'utente...
Mi interessa farlo con Jet pero'
Mi puoi fare la cortesia di postarmi qualche riga di codice che mi faccia
aggiornare due tabelle diverse senza bloccarmi tutto?
Grazie


Private Sub Command1_Click()
Dim cn As ADODB.Connection, rs As ADODB.Recordset, num As Integer
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
num = 0
cn.ConnectionString = "DSN=prova;"
cn.Open

Set rs.ActiveConnection = cn
rs.Open "articoli", cn, adOpenDynamic, adLockOptimistic

Do Until num = 20000
rs.AddNew
rs.Fields("des_art") = "aaa"
rs.Update
num = num + 1
Text1 = num
Text1.Refresh
Loop
End Sub

Private Sub Command3_Click()
Dim cn As ADODB.Connection, rs As ADODB.Recordset, num As Integer
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.ConnectionString = "DSN=prova;"
cn.Open

Set rs.ActiveConnection = cn
rs.Open "articoli2", cn, adOpenDynamic, adLockOptimistic
Do Until num = 20000
rs.AddNew
rs.Fields("des_art") = "aaa"
rs.Update
num = num + 1
Text1 = num
Text1.Refresh
Loop
End Sub

Alex

unread,
Jun 17, 2002, 6:07:53 AM6/17/02
to
"Marduk" <luca.tr...@tiscali.it> wrote in message
news:aekb0a$446$1...@lacerta.tiscalinet.it


Come hai fatto andrebbe bene, solo che non hai annullato
la precedente impostazione, come mai...???
Quando usi i Recordset li apri, li usi e poi li chiudi, e li annulli.
La stessa cosa dicasi per la CONNECTION, perchè apri ogni volta una
Connection
allungando i tempi di accesso al DB..???
Ti conviene aprire una CONNECTION a livello di MODULO Pubblica, e
lasciarla sempre aperta, a meno di gestione differente che dipende da
te.

In un Modulo inserisci una Funzione che esegui all'apertura del DB:

Dim cn As ADODB.Connection
Public function DOConnect()

Set cn = New ADODB.Connection

cn.ConnectionString = "DSN=prova;"
cn.Open
End

Private Sub Command1_Click()
Dim rs As ADODB.Recordset, num As Integer


Set rs = New ADODB.Recordset
num = 0

Set rs.ActiveConnection = cn
rs.Open "articoli", cn, adOpenDynamic, adLockOptimistic

Do Until num = 20000
rs.AddNew
rs.Fields("des_art") = "aaa"
rs.Update
num = num + 1
Text1 = num
Text1.Refresh
Loop

rs.Close
set RS=nothing


End Sub

Private Sub Command3_Click()

Dim rs As ADODB.Recordset, num As Integer
Set rs = New ADODB.Recordset


Set rs.ActiveConnection = cn
rs.Open "articoli2", cn, adOpenDynamic, adLockOptimistic
Do Until num = 20000
rs.AddNew
rs.Fields("des_art") = "aaa"
rs.Update
num = num + 1
Text1 = num
Text1.Refresh
Loop

rs.Close
set RS=nothing
End Sub

Ciao @Alex.

Marduk

unread,
Jun 17, 2002, 6:12:55 AM6/17/02
to
Si pero' a me serve tenere aperti i 2 recordset nello stesso momento,
perche' un utente aggiorna il primo e l'altro aggiorna il secondo

Se eseguo il ciclo nello stesso momento con 2 tabelle diverse mi blocca
tutto.

E poi mi interessa farlo con DAO tipo:

Private Sub Command1_Click()
Dim db As Database, Rs As Recordset, num As Integer
Set db = OpenDatabase("C:\Documents and
Settings\walter1\Documenti\download\db1_97.mdb")
Set Rs = db.OpenRecordset("articoli", dbOpenDynaset)
num = 0


Do Until num = 20000

Rs.AddNew
Rs.Fields("des_art") = "aaa"
Rs.Update


num = num + 1
Text1 = num
Text1.Refresh
Loop

End Sub

Private Sub Command2_Click()
Dim db As Database, Rs As Recordset, num As Integer
Set db = OpenDatabase("C:\Documents and
Settings\walter1\Documenti\download\db1_97.mdb")
Set Rs = db.OpenRecordset("articoli2", dbOpenDynaset)
num = 0


Do Until num = 20000

Rs.AddNew
Rs.Fields("des_art") = "aaa"
Rs.Update


num = num + 1

Text2 = num
Text2.Refresh
Loop
End Sub

Questo e' in realta' cio' che mi serve
Possibile che access blocca anche la tabella che non sta usando?


Alex

unread,
Jun 17, 2002, 7:05:08 AM6/17/02
to
"Marduk" <luca.tr...@tiscali.it> wrote in message
news:aekcn8$543$1...@lacerta.tiscalinet.it

> Si pero' a me serve tenere aperti i 2 recordset nello stesso momento,
> perche' un utente aggiorna il primo e l'altro aggiorna il secondo

1) Se devi tenere aperti 2 Recordset nello stesso tempo, non devi
dichiararli
all'interno di una ROUTINE Privata come hai fatto.
2) Almeno devi chiamarli con 2 nomi diversi es: RS1 e RS2 questo ti
evita
CONFLITTI.

> Se eseguo il ciclo nello stesso momento con 2 tabelle diverse mi blocca
> tutto.
> E poi mi interessa farlo con DAO tipo:

>[CUT]


>
> Questo e' in realta' cio' che mi serve
> Possibile che access blocca anche la tabella che non sta usando?

Non è corretto, ma credo sia frutto di un'errata gestione dei RECORDSET.
Se ottimizzi, correggi, l'uso dei RECORDSET forse.....!!!
Ricordati che su evento CLOSE della Form devi in ogni caso liberare
la memoria dai 20000 records che hai impegnato....!!!

Marduk

unread,
Jun 17, 2002, 7:02:24 AM6/17/02
to
Ho fatto delle prove e ho risolto da solo. Gazie mille per le tue
risposte.CIAOoo


0 new messages