OVH Cloud OVH Cloud

Objet Recordset ADO et SQL Server 2000 ??

6 réponses
Avatar
News Groups
Bonjour,

Je suis sous Access2002 en projet ADP + SQL Server via OLEDB,
je souhaite mettre à jour un recorset mais par la méthode Update mais cela
est impossible ?? :
je déclare les propriétés de mon recordset de la façon suivante :
With MonRst
.LockType = adLockPessimistic
.CursorType = adOpenDynamic
.CursorLocation = adUseServer ' --- (normalement valeur par
défaut)
End With
mais aprés le chargement du recordset par la méthode :
Set MonRst = MaCommande.Execute()
les propriétés de mon recordset passe automatiquement à :
LockType : "adLockReadOnly "
CursorType : "adOpenStatic"
CursorLocation : "adUseClient"

et donc l'update ne peut s'éxécuter car le recorset est en lecture seule
Je ne comprend pas pourquoi les propriétés change automatiquement après la
méthode Execute ??
quelqu'un peut m'aider à résoudre le probléme ???

Merci encore d'avance,
Thierry.

PS : détail du code :
...
Set MaCommande = New ADODB.Command
MaCommande .ActiveConnection =
Application.CurrentProject.AccessConnection
MaCommande .CommandType = adCmdText
MaCommande .CommandText = strCommandText

Set MonRst = New ADODB.Recordset
With MonRst
.LockType = adLockPessimistic
.CursorType = adOpenDynamic
End With

' la lecture de MonRst.LockType, MonRst.LockType,MonRst.CursorLocation
donne respectivement :
' adLockPessimistic, adOpenDynamic, adUseServer

Set MonRst = MaCommande.Execute()

' la lecture de MonRst.LockType, MonRst.LockType,MonRst.CursorLocation
donne respectivement :
' adLockReadOnly, adOpenStatic, adUseClient ..??!!

MonRst .Update "MonChamp", "MaValeur"

Set MaCommande = Nothing
Set MonRst = Nothing
...

6 réponses

Avatar
Del-Info
A priori la méthode EXECUTE ne sert pas à ouvrir des recordsets, mais à
exécuter des requêtes actions. Il est donc normal que vos typages soient
changés.
Essayez avec la méthode OPEN
Avatar
News Groups
Merci,
je vais effectivement essayer, mais d'après documentation
l'utilisation suivante :

Set MonRst = MaCommande.Execute
permet bien de charger un recorset,
c'est pourquoi je ne comprend pas la subtilité ?? :-(

Merci,
Thierry.

"Del-Info" a écrit dans le message de news:

A priori la méthode EXECUTE ne sert pas à ouvrir des recordsets, mais à
exécuter des requêtes actions. Il est donc normal que vos typages soient
changés.
Essayez avec la méthode OPEN




Avatar
Sylvain Lafontaine
Ne cherchez pas à comprendre, ADO est un joyeux cafouillis et ADP rajoute
une bonne couche de sauce par dessus tout ça en terme de bugs et autres
choses subtiles.

Si possible, utilisez également des valeurs plus orthodoxes que
adLockPessimistic ou adUseServer:

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open cmd, , adOpenStatic, adLockOptimistic

S. L.

"News Groups" wrote in message
news:415d71b9$0$27555$
Merci,
je vais effectivement essayer, mais d'après documentation
l'utilisation suivante :

Set MonRst = MaCommande.Execute
permet bien de charger un recorset,
c'est pourquoi je ne comprend pas la subtilité ?? :-(

Merci,
Thierry.

"Del-Info" a écrit dans le message de news:

A priori la méthode EXECUTE ne sert pas à ouvrir des recordsets, mais à
exécuter des requêtes actions. Il est donc normal que vos typages soient
changés.
Essayez avec la méthode OPEN








Avatar
News Groups
Effectivement si je souhaite mettre à jour un champ par le biais d'un
recorset et de la méthode "update"
je doit utiliser la méthode Open et non Execute pour ouvrrir mon recordset.
Etant bien d'accord que pour effectuer une telle mise à jour il est plus
souhaitable de passer par une instruction SQL et la méthode Execute ;-) !!

Je vous remercie pour la précision, mais la raison du changement des typages
n'est pas due à l'utilisation de la commande Execute, en fait après essais,
il s'avère apparemment que les typage affectés par code ne soient pas pris
en compte et que le fournisseur de données applique des typages par défaut
?!!..ce qui ne permet donc de controler de façon précise ces typages
..malheureusement !!.

Merci,
Thierry.

"Del-Info" a écrit dans le message de news:

A priori la méthode EXECUTE ne sert pas à ouvrir des recordsets, mais à
exécuter des requêtes actions. Il est donc normal que vos typages soient
changés.
Essayez avec la méthode OPEN




Avatar
News Groups
merci de vous interresser à mon problème,
le contexte concernant d'avantage Access, j'ai jugé préférable de continuer
la suite de la discussion sur le forum mpfa d'access
dans lequel je vous remercie aussi d'être intervenu.

Thierry.

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news: ePd3$
Ne cherchez pas à comprendre, ADO est un joyeux cafouillis et ADP rajoute
une bonne couche de sauce par dessus tout ça en terme de bugs et autres
choses subtiles.

Si possible, utilisez également des valeurs plus orthodoxes que
adLockPessimistic ou adUseServer:

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open cmd, , adOpenStatic, adLockOptimistic

S. L.

"News Groups" wrote in message
news:415d71b9$0$27555$
> Merci,
> je vais effectivement essayer, mais d'après documentation
> l'utilisation suivante :
>
> Set MonRst = MaCommande.Execute
> permet bien de charger un recorset,
> c'est pourquoi je ne comprend pas la subtilité ?? :-(
>
> Merci,
> Thierry.
>
> "Del-Info" a écrit dans le message de news:
>
>> A priori la méthode EXECUTE ne sert pas à ouvrir des recordsets, mais à
>> exécuter des requêtes actions. Il est donc normal que vos typages


soient
>> changés.
>> Essayez avec la méthode OPEN
>>
>>
>
>




Avatar
News Groups
merci de vous interresser à mon problème,
le contexte concernant d'avantage Access, j'ai jugé préférable de continuer
la suite de la discussion sur le forum mpfa d'access
dans lequel je vous remercie aussi d'être intervenu.

Thierry.

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news: ePd3$
Ne cherchez pas à comprendre, ADO est un joyeux cafouillis et ADP rajoute
une bonne couche de sauce par dessus tout ça en terme de bugs et autres
choses subtiles.

Si possible, utilisez également des valeurs plus orthodoxes que
adLockPessimistic ou adUseServer:

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open cmd, , adOpenStatic, adLockOptimistic

S. L.

"News Groups" wrote in message
news:415d71b9$0$27555$
> Merci,
> je vais effectivement essayer, mais d'après documentation
> l'utilisation suivante :
>
> Set MonRst = MaCommande.Execute
> permet bien de charger un recorset,
> c'est pourquoi je ne comprend pas la subtilité ?? :-(
>
> Merci,
> Thierry.
>
> "Del-Info" a écrit dans le message de news:
>
>> A priori la méthode EXECUTE ne sert pas à ouvrir des recordsets, mais à
>> exécuter des requêtes actions. Il est donc normal que vos typages


soient
>> changés.
>> Essayez avec la méthode OPEN
>>
>>
>
>