Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[ADO] Temps de reponse anormal sur Recordset.open

1 réponse
Avatar
Chnew
Bonjour,

j'utilise ADO2.7 pour l'acces a ma Database.
Comme pilote odbc jutilise le pilote fourni par oracle9.

Or jai un petit soucis lorsque je creer mon recordset.
C'est bien trop long.Je ne vois pas ou est le probleme car ma requete sous
un analyseur me retourne des enregistrements sous un temps en dessous de la
seconde.
Or ici la methode Rs.Open met plus de 20 Secondes !

Par contre la methode Command.execute sous VB est quasi instantanée

Please Help me


Voici le debut de ma fonction .
sur le recordset.open

il met plus de 20 sec a me renvoyer la reponse
alors que la requete est de l'ordre de la millisecondes

Public Function OpenRecordset(ByRef Recset As ADODB.Recordset, Optional
TableName As String, _
Optional SqlQuery As String, Optional BlankTablePermitted As Boolean =
True, _
Optional pCursorLocation As CursorLocationEnum = adUseClient, _
Optional pCursorType As CursorTypeEnum = adOpenKeyset, _
Optional pLockType As LockTypeEnum = adLockOptimistic, _
Optional bKeepConnexion As Boolean = True) As Boolean

Dim sErrorMsg As String, sRecordsetSource As String
Dim iComptError As Integer

On Error GoTo Erreur
sErrorMsg = vbNullString

If TableName = vbNullString And SqlQuery = vbNullString Then
sErrorMsg = "No table name or sql query defined! Process cancelled..."
GoTo Erreur
ElseIf TableName <> vbNullString And SqlQuery <> vbNullString Then
sErrorMsg = "Table name and sql query both defined! Process cancelled..."
GoTo Erreur
ElseIf TableName <> vbNullString Then
sRecordsetSource = TableName
ElseIf SqlQuery <> vbNullString Then
sRecordsetSource = SqlQuery
End If



'set up query
Set Recset = New ADODB.Recordset
Set Recset.ActiveConnection = GCnxDbFit
Recset.CursorLocation = pCursorLocation
Recset.CursorType = pCursorType
Recset.LockType = pLockType


Recset.Open sRecordsetSource, GCnxDbFit, adOpenKeyset, adLockOptimistic

1 réponse

Avatar
Axel Guerrier [MS]
Bonjour,

A priori, tu passes par ODBC.
Pourquoi ne pas prendre le Provider OLEDB pour Oracle ? ça te fera une
couche en moins à parcourir et ça améliorera les performances globales.


--
Axel GUERRIER
Microsoft France
--------------------
Merci de bien vouloir répondre à ce message dans le newsgroup où il a été
posté. Je le consulte régulièrement.

"Chnew" wrote in message
news:
Bonjour,

j'utilise ADO2.7 pour l'acces a ma Database.
Comme pilote odbc jutilise le pilote fourni par oracle9.

Or jai un petit soucis lorsque je creer mon recordset.
C'est bien trop long.Je ne vois pas ou est le probleme car ma requete sous
un analyseur me retourne des enregistrements sous un temps en dessous de


la
seconde.
Or ici la methode Rs.Open met plus de 20 Secondes !

Par contre la methode Command.execute sous VB est quasi instantanée

Please Help me


Voici le debut de ma fonction .
sur le recordset.open

il met plus de 20 sec a me renvoyer la reponse
alors que la requete est de l'ordre de la millisecondes

Public Function OpenRecordset(ByRef Recset As ADODB.Recordset, Optional
TableName As String, _
Optional SqlQuery As String, Optional BlankTablePermitted As Boolean > True, _
Optional pCursorLocation As CursorLocationEnum = adUseClient, _
Optional pCursorType As CursorTypeEnum = adOpenKeyset, _
Optional pLockType As LockTypeEnum = adLockOptimistic, _
Optional bKeepConnexion As Boolean = True) As Boolean

Dim sErrorMsg As String, sRecordsetSource As String
Dim iComptError As Integer

On Error GoTo Erreur
sErrorMsg = vbNullString

If TableName = vbNullString And SqlQuery = vbNullString Then
sErrorMsg = "No table name or sql query defined! Process


cancelled..."
GoTo Erreur
ElseIf TableName <> vbNullString And SqlQuery <> vbNullString Then
sErrorMsg = "Table name and sql query both defined! Process


cancelled..."
GoTo Erreur
ElseIf TableName <> vbNullString Then
sRecordsetSource = TableName
ElseIf SqlQuery <> vbNullString Then
sRecordsetSource = SqlQuery
End If



'set up query
Set Recset = New ADODB.Recordset
Set Recset.ActiveConnection = GCnxDbFit
Recset.CursorLocation = pCursorLocation
Recset.CursorType = pCursorType
Recset.LockType = pLockType


Recset.Open sRecordsetSource, GCnxDbFit, adOpenKeyset, adLockOptimistic