OVH Cloud OVH Cloud

OLEDB et Recordset

1 réponse
Avatar
eric chesney
Bonjour =E0 tous,

voici mon souci, j'utilise le driver OLEDB pour ASA7=20
(provider=3DASAProv)

Lorsque je place le curseur de ma connexion en serveur, un=20
select * retourne bien ma zone, ma mon recordcount est =E0 -
1 .

En revanche, lorsque je place le curseur en client, le=20
m=EAme select renvoi S mais mon recordcount vaut bien 1=20
(j'ai qu'une ligne =E0 retourne).

Avez-vous d=E9j=E0 rencontr=E9 le pb ?

Merci pour vos r=E9ponses.

ci-joint : le code de mon module VB de gestion des donn=E9es=20


Option Explicit

Private db_cnx_Ref As ADODB.Connection

Public Function ADOConnecter(pstr_DSN As String,=20
pstr_Login As String, pstr_Pwd As String) As Integer

On Error GoTo Erreur
=20
Set db_cnx_Ref =3D New ADODB.Connection
=20
With db_cnx_Ref
=20
.ConnectionTimeout =3D 100
.CursorLocation =3D adUseServer
.CommandTimeout =3D 30
.Mode =3D adModeReadWrite
=20
'Connection par OLEDB
.Provider =3D "ASAProv"
.ConnectionString =3D "DBF=3Dc:\bdsiel\SIEL.db;UID=3D" &=20
pstr_Login & ";PWD=3D" & pstr_Pwd '=3D=3D> Connection OK
.Open
=20
End With
ADOConnecter =3D 1
Exit Function
=20
Erreur:
ADOConnecter =3D 0
=20
End Function

Public Sub ADODeconnecter()

On Error GoTo Erreur
=20
If Not db_cnx_Ref Is Nothing Then
If db_cnx_Ref.State =3D adStateOpen Then
db_cnx_Ref.Close
End If
End If
Set db_cnx_Ref =3D Nothing
Exit Sub
=20
Erreur:

End Sub

Public Function ADOExecuteRequete(pstr_Requete As String)=20
As ADODB.Recordset
=20
On Error GoTo Erreur
=20
=20
Dim cmd_ADO As ADODB.Command

Set cmd_ADO =3D New ADODB.Command
With cmd_ADO

.CommandType =3D adCmdText
.ActiveConnection =3D db_cnx_Ref
.CommandText =3D pstr_Requete
Set ADOExecuteRequete =3D .Execute

End With
Set cmd_ADO =3D Nothing
=20
Exit Function
=20
Erreur:
Set ADOExecuteRequete =3D Nothing
End Function

1 réponse

Avatar
Cédric Naudy
Utilisez un curseur coté client si vous voulez un recordcount qui renvoie
une valeur :

myconnection.cursorlocation = aduseclient
ou
myrecordset.cursorlocation = aduseclient

Cédric


"eric chesney" wrote in message
news:917201c3ea56$a07a4300$
Bonjour à tous,

voici mon souci, j'utilise le driver OLEDB pour ASA7
(provider=ASAProv)

Lorsque je place le curseur de ma connexion en serveur, un
select * retourne bien ma zone, ma mon recordcount est à -
1 .

En revanche, lorsque je place le curseur en client, le
même select renvoi S mais mon recordcount vaut bien 1
(j'ai qu'une ligne à retourne).

Avez-vous déjà rencontré le pb ?

Merci pour vos réponses.

ci-joint : le code de mon module VB de gestion des données


Option Explicit

Private db_cnx_Ref As ADODB.Connection

Public Function ADOConnecter(pstr_DSN As String,
pstr_Login As String, pstr_Pwd As String) As Integer

On Error GoTo Erreur

Set db_cnx_Ref = New ADODB.Connection

With db_cnx_Ref

.ConnectionTimeout = 100
.CursorLocation = adUseServer
.CommandTimeout = 30
.Mode = adModeReadWrite

'Connection par OLEDB
.Provider = "ASAProv"
.ConnectionString = "DBF=c:bdsielSIEL.db;UID=" &
pstr_Login & ";PWD=" & pstr_Pwd '==> Connection OK
.Open

End With
ADOConnecter = 1
Exit Function

Erreur:
ADOConnecter = 0

End Function

Public Sub ADODeconnecter()

On Error GoTo Erreur

If Not db_cnx_Ref Is Nothing Then
If db_cnx_Ref.State = adStateOpen Then
db_cnx_Ref.Close
End If
End If
Set db_cnx_Ref = Nothing
Exit Sub

Erreur:

End Sub

Public Function ADOExecuteRequete(pstr_Requete As String)
As ADODB.Recordset

On Error GoTo Erreur


Dim cmd_ADO As ADODB.Command

Set cmd_ADO = New ADODB.Command
With cmd_ADO

.CommandType = adCmdText
.ActiveConnection = db_cnx_Ref
.CommandText = pstr_Requete
Set ADOExecuteRequete = .Execute

End With
Set cmd_ADO = Nothing

Exit Function

Erreur:
Set ADOExecuteRequete = Nothing
End Function