sql2000 procedures stockees et vb6
Bonjour, jai une appli vb6 qui utilise une base de donnee SQL Server 2000 (par le biais de procedure stockee) en ADO. Ca fonctionne et tout mais jai un probleme de performance.
Apres lappelle dune requete SQL, je copie le contenu de mon recordset dans un autre recordset et je manipule ensuite ce dernier...apparament ca optimise la performance en raison que le travail se fait offline (disconnecter du serveur). Je note par contre que ma fonction qui fait le copiage du recordset nest pas performante du tout (en fait elle prend autant de temps que la requete SQL elle meme :oops: ) jai besoin de votre aide.
Voici mes 2 procedures:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
Public Function QueryDatabase() As ADODB.Recordset
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
'ma query se fait ici
rs.Open "spQueryQuelconque", DataB, adOpenStatic, adLockBatchOptimistic, adCmdStoredProc
'procedure de copiage
Set QueryDatabase = copyrs(rs)
Exit Function |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
Public Function copyrs(rsSource As ADODB.Recordset) As ADODB.Recordset
Dim rsNew As ADODB.Recordset
Dim field As ADODB.field
Set rsNew = Nothing
Set rsNew = New ADODB.Recordset
Set copyrs = Nothing
'Copy Fields from the Source and Create same ones in new recordset
For Each field In rsSource.Fields
rsNew.Fields.Append field.Name, field.Type, field.DefinedSize, _
adFldIsNullable
rsNew(field.Name).Precision = field.Precision
Next
rsNew.LockType = adLockBatchOptimistic 'So we can edit the recordset
rsNew.Open
If Not (rsSource.BOF And rsSource.EOF) Then
rsSource.MoveFirst '<---- le goulot a lair detre ici....cest tres lent
' Copy all the values from the source recordset to this new recordset
While Not rsSource.EOF
rsNew.AddNew
For Each field In rsSource.Fields
rsNew(field.Name).Value = field.Value
Next
rsNew.Update
rsSource.MoveNext
Wend
rsNew.MoveFirst
End If
Set copyrs = rsNew
End Function |
Quest-ce que je peux faire pour optimiser ceci? Aussi, est-ce que mon rs.Open (premiere procedure demontree) a les bons parametres, en terme de performance (adOpenStatic, adLockBatchOptimistic, adCmdStoredProc)?
merci a lavance