21 messaggi dal 29 settembre 2005
Ho un grosso problema....
Ho la necessità di aggiornare tutti i recordset di un database, inserendo in un campo (tipo) il valore di un array, ma dopo circa 108 cicli mi da l'errore Impossibile aprire altre tabelle.
Il codice è questo:
for k=1 to j 'j è la dimensione dell'array
sql_UPDATE= "INSERT INTO FILES (TITOLO,FILE,DIMENSIONE,TIPO,ID_ZONE) VALUES ('" & nome(k-1) & "','" & nome(k-1) & "','" & dimensione(k-1) & "','" & tipo(k-1) & "'," & ID_ZONA & ")"
Set rds_UPDATE = Server.CreateObject("ADODB.Recordset")
rds_UPDATE.Open sql_UPDATE, conn ,3,3
set rds_UPDATE = Nothing
next

l'errore viene riportato alla linea: rds_UPDATE.Open sql_UPDATE, conn ,3,3

Perfavore potete aiutarmi, come posso fare a risolvere questo problema?

Grazie a tutti
Marco
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
Usi una tecnica sbagliata per aggiornare tutti quei record. Tu per ogni record modificato utilizzi una connessione diversa: spreco di risorse e di prestazioni.

Ti consiglio una tecnica simile a questa:

Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open(conn) ' conn è la strina di connessione
for k=1 to j 'j è la dimensione dell'array
sql_UPDATE= "INSERT INTO FILES (TITOLO,FILE,DIMENSIONE,TIPO,ID_ZONE)VALUES ('" & nome(k-1) & "','" & nome(k-1) & "','" & dimensione(k-1) &"','" & tipo(k-1) & "'," & ID_ZONA & ")"
objConn.execute(sql_UPDATE)
next
objConn.Close()
set objConn=nothing

Ciao
21 messaggi dal 29 settembre 2005
Grazie milleee, adesso funziona fino a 400 files...
Scusa se ne approfitto, ma come posso risolvere lo stesso problema qui, con lo stesso mentodo non si puo fare, perchè stavolta il recordset serve all'interno del controllo:
For Each strFile in objFiles
sql_CERCA= "SELECT * from FILES where FILE='" & strFile.name & "'"
Set rds_CERCA = Server.CreateObject("ADODB.Recordset")
rds_CERCA.Open sql_CERCA, conn ,3,3
if (rds_CERCA.recordcount=0) and (Right(strFile.name, Len(".db")) <> ".db") then
nome(j)=strFile.name
dimensione(j)=strFile.Size
strEstensione = GetFileExtension(strFile.name)
tipo(j)=strEstensione
j=j+1
end if
set rds_CERCA = Nothing
Next


Grazie ancora
Marco
Modificato da alisp il 08 ottobre 2005 13.02 -
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
alisp ha scritto:
Grazie milleee, adesso funziona anche con 500 file.
Ma scusa allora non conviene che uso questo metodo sempre, o ci sono degli svantaggi?

No, non ci sono svantaggi. Con questa tecnica puoi modificare, inserire, cancellare e richiedere dati tenendo aperta solo una connessione.

L'utilizzo del solo recordset è comoda e veloce quando devi effettuare solo una query di richiesta al database.

Grazie
Marco

Prego

Ciao
21 messaggi dal 29 settembre 2005
Scusa se ne approfitto, ma come posso risolvere lo stesso problema qui, con lo stesso mentodo non funziona, perchè stavolta il recordset serve all'interno del controllo:
For Each strFile in objFiles
sql_CERCA= "SELECT * from FILES where FILE='" & strFile.name & "'"
Set rds_CERCA = Server.CreateObject("ADODB.Recordset")
rds_CERCA.Open sql_CERCA, conn ,3,3
if (rds_CERCA.recordcount=0) and (Right(strFile.name, Len(".db")) <> ".db") then
nome(j)=strFile.name
dimensione(j)=strFile.Size
strEstensione = GetFileExtension(strFile.name)
tipo(j)=strEstensione
j=j+1
end if
set rds_CERCA = Nothing
Next

sostituendo al posto di:
Set rds_CERCA = Server.CreateObject("ADODB.Recordset")
rds_CERCA.Open sql_CERCA, conn ,3,3
l'istruzione: conn.execute(sql_CERCA), non da errori...ma quando devo estrarre i record o (conteggiarlo), non funziona perchè non trova l'ogetto rds_CERCA...quindi come faccio a leggere il rs?

Grazie ancora
Marco
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
Apri il recordset con la connessione attualmente aperte:

Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open(conn) ' conn è la strina di connessione
for k=1 to j 'j è la dimensione dell'array
sql_UPDATE= "INSERT INTO FILES (TITOLO,FILE,DIMENSIONE,TIPO,ID_ZONE)VALUES('" & nome(k-1) & "','" & nome(k-1) & "','" & dimensione(k-1) &"','" &tipo(k-1) & "'," & ID_ZONA & ")"
objConn.execute(sql_UPDATE)
next
'

sql_CERCA= "SELECT * from FILES where FILE='" & strFile.name & "'"Set rds_CERCA = Server.CreateObject("ADODB.Recordset")
rds_CERCA.Open sql_CERCA, objConn ,3,3 ' <- connessione
if (rds_CERCA.recordcount=0) and (Right(strFile.name, Len(".db")) <> ".db")then
nome(j)=strFile.name
dimensione(j)=strFile.Size
strEstensione = GetFileExtension(strFile.name)
tipo(j)=strEstensione
j=j+1
end if
rds_Cerca.Close()
set rds_CERCA = Nothing
Next

'
objConn.Close()
set objConn=nothing

Ciao
21 messaggi dal 29 settembre 2005
Ma in questo modo non funziona:

For Each strFile in objFiles
sql_CERCA= "SELECT * from FILES where FILE='" & strFile.name & "'"
Set rds_CERCA = Server.CreateObject("ADODB.Recordset")
rds_CERCA.Open sql_CERCA, Conn ,3,3 ' <- connessione
if (rds_CERCA.recordcount=0) and (Right(strFile.name, Len(".db")) <> ".db") then
nome(j)=strFile.name
dimensione(j)=strFile.Size
strEstensione = GetFileExtension(strFile.name)
tipo(j)=strEstensione
j=j+1
end if
rds_Cerca.Close()
set rds_CERCA = Nothing

Next

Mi da lo stesso errore...come faccio quindi....e poi tu nell'esempio hai dimenticato l'inizio del ciclo for (For Each strFile in objFiles)...
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
La riga:
rds_CERCA.Open sql_CERCA, Conn ,3,3 ' <- connessione

Diventa:
rds_CERCA.Open sql_CERCA,objConn ,3,3 ' <- connessione

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.