Page 1 sur 1
[R] Problème update avec ADODB
Posté : lun. 23 août 2010 11:51
par scorp84
Bonjour,
J'ai un soucis avec un objet ADODB.
J'arrive sans problème à récupérer le contenu d'une table SQL :
► Afficher le texte
Code : Tout sélectionner
; Création objet connexion
Local $oConn = ObjCreate("ADODB.Connection")
$oConn.ConnectionString = "DSN=XXX;Uid=XXX;Pwd=XXX;"
$oConn.CursorLocation = $adUseClient
$oConn.Open
$datej=_NowDate()
; FAX DU JOUR ENVOYES
Local $SQL = "SELECT FAX_DATE FROM FAX WHERE FAX_DATE>='" & $datej & "' AND FAX_ETAT=1"
Local $oRs = ObjCreate("ADODB.Recordset")
$oRs.Open($SQL, $oConn, $adOpenDynamic, $adLockReadOnly)
GUICtrlSetData($f_envoyes_j,$oRs.RecordCount)
Par contre je n'arrive pas à faire un UPDATE en changeant juste la requête. Du coup, en cherchant sur le forum et sur Internet, j'ai compris que cela venait peut être du curseur.
J'ai trouvé ce post :
http://autoitscript.fr/forum/viewtopic. ... ado+update dans lequel GaRydelaMer utilisait ce curseur :
$oRS.Open($sql, $oConn, $adOpenStatic, $adLockOptimistic)
Du coup, j'ai essayé ça :
► Afficher le texte
Code : Tout sélectionner
$datej=_NowDate()
; FAX DU JOUR ENVOYES
Local $SQL = "UPDATE FAX SET FAX_ETAT=0 WHERE FAX_DATE>'" & $datej & "' AND FAX_ETAT=3"
Local $oRs = ObjCreate("ADODB.Recordset")
$oRs.Open($SQL, $oConn, $adOpenStatic, $adLockOptimistic)
Mais j'obtiens toujours une erreur :
The requested action with this object has failed.:
$oRs.Open($SQL, $oConn, $adOpenStatic, $adLockOptimistic)
$oRs.Open($SQL, $oConn, $adOpenStatic, $adLockOptimistic)^ ERROR
Quelqu'un aurait il une idée ?
Merci d'avance
Amicalement.
BM
Re: [..] Problème update avec ADODB
Posté : mar. 24 août 2010 01:17
par ayuckers
Bonsoir
Apres avoir fait pas mal de recherche sur le forum anglais
j'ai réussi a faire ces 3 fonction SQL (tant bien que mal) ;
Comme toi je fait une requette en modifiant un paramettre et ensuite j'acualise.
pour moi sa fonctionne plutot bien.
j'ai essayer d'adapter ton exemple avec mes fonctions et voici le résultat.
comme je n'ai pas de quoi le tester il y a peut être quelques erreurs.
voici mon exemple :
► Afficher le texte
Code : Tout sélectionner
#include-once ; je ne me souvient plus quelles includes utiliser j'ai mis tout cela ;)
#include <Array.au3>
#include <Constants.au3>
#Include <String.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
;******************* variables necessaire : initialisation de parametre de la connection ADODB ********************
Global $adoCn = ObjCreate( "ADODB.Connection" )
$adoCn.Properties("Prompt") = 2; 1=PromptAlways, 2=PromptComplete
Global $adoRs = ObjCreate( "ADODB.RecordSet" )
Global $StrConnect = "Provider='OraOLEDB.Oracle';Data Source=xxxx;User Id='xxxxx';Password='xxxxxxx';" ; source = nom de la base
Const $adStateClosed = 0
Const $adStateOpen = 1
;************************ variable utilisateur ***************************************
Global $mystring ; a voir si on peut placer cette variable en local dans _SQLQuery
Global $Resultat, $Etat
Global $SQL = "SELECT FAX_DATE FROM FAX WHERE FAX_DATE>='@Date@' AND FAX_ETAT=1"
;********************** Test **************************************************
$Etat = _SQLConnect() ; retourne 1 si connecté , 0 si pas connecté
Msgbox(0,"Etat",$Etat)
; par ex : ici faire une bouble et modifie rla date ....
$Resultat = _SQLQuery("17/08/2010" ,$SQL,1) ; si dernier parametre = 0 alors retourne un tableau
Msgbox(0,"Resultat",$Resultat)
;_ArrayDisplay($Resultat,"Resultat")
_SQLClose() ; fermeture de la connection
;****************************** fonction SQL ******************************************
Func _SQLConnect($iStrConnect = $StrConnect)
If $adoCn.State = $adStateOpen Then $adoCn.Close
$adoCn.ConnectionString = $iStrConnect
$adoCn.Open
$Txt = "1"
If $adoCn.State <> $adStateOpen Then $Txt = "0"
Return $Txt
EndFunc
Func _SQLQuery($Variable= "" ,$SqlQuery = "",$aMode=0)
$SqlQuery = StringReplace($SqlQuery,"@Date@",$Variable)
If $adoRs.State = $adStateOpen Then $adoRs.Close
$adoRs = $adoCn.Execute($SqlQuery)
If $adoRs.State = $adStateOpen Then
$SqlQuery = ""
$J = $adoRs.Fields.Count - 1
$SqlQuery = $SqlQuery & $adoRs.GetString(2, -1, ",", @CRLF, "Null")
$adoRs.Close
If $aMode = 0 then $mystring = StringSplit($SqlQuery,",")
If $aMode = 1 then $mystring = $SqlQuery
Return $mystring
EndIf
EndFunc
Func _SQLClose()
If $adoCn.State = $adStateOpen Then $adoCn.Close
EndFunc
dis moi si cela peut t'aider

Re: [..] Problème update avec ADODB
Posté : mar. 24 août 2010 09:51
par scorp84
Bonjour ayuckers,
Merci pour ton aide, c'est nickel
Amicalement.
BM