Si è possibile, solo probabilmente sbagli qualche procedura...!!
Prova a postare un minimo di codice......!!
@Alex
--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG
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
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.
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?
> 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....!!!