Page 1 sur 1

[R]autoit et interrogation base de donnée access 2003

Posté : jeu. 09 avr. 2009 15:02
par wasabi
Bonjour. je vous explique:

Je souhaité créer un logiciel qui me permette de me connecter automatique a une applis du travail.
Utilisateur de plusieur profil oblige j'ai donc créer una base de donnée sur Access 2003 avec tout mes panneau de configue et tout. Maintenant je souhaite automatiser cette tache par le biais d'autoit, mais le souci c que je n'arrive pas a récupérer les info stocker dans ma base de donnée.

Comment faire s'il vous plait.

Voila se que j'ai actuellement:
► Afficher le texte

Re: autoit et BDD

Posté : jeu. 09 avr. 2009 17:03
par GaRydelaMer
Bonjour

J'ai déjà répondu ici même et donnés quelques fonctions que j'utilise tout le temps pour accéder à mes bases de données, Access 2000 pour moi, pas de différence avec 2003 pour l'accès au mdb.

Pour créer un Recordset et y accéder
Local $oConn = _ADO_Open("c:\xxx.mdb")
Local $_oRS = ObjCreate("ADODB.Recordset")
$_oRS.Open($SQL, $oConn, $adOpenStatic, $adLockOptimistic)

j'imagine que tu connais quand même bien les objets ADO.
► Afficher le texteExemples de fonction
► Afficher le texteConstantes ADO

Re: autoit et BDD

Posté : jeu. 09 avr. 2009 17:40
par Yogui
sinon petit lien vers un UDF access :

http://dundats.mvps.org/AutoIt/udf_code.aspx?udf=access$

liste des fonctions

; _accessCompactDB() *
; _accessCreateDB()
; _accessCreateTable()
; _accessDeleteTable()
; _accessListTables()
; _accessCountTables()
; _accessAddRecord()
; _accessUpdateRecord()
; _accessDeleteRecord()
; _accessClearTable()
; _accessCountRecords()
; _accessCountFields()
; _accessListFields()
; _accessQueryLike()
; _accessQueryStr()
; _accessSaveXML()

Re: autoit et BDD

Posté : jeu. 09 avr. 2009 20:36
par Tlem
@wasabi
Merci de ré-éditer votre message afin de le rendre conforme aux règles de présentation d'un message.

Re: [...]autoit et interrogation base de donnée access 2003

Posté : ven. 10 avr. 2009 09:41
par wasabi
GaRydelaMer :

Merci pour ton aide mais je ne capte pas tout il y as encore une erreur.
J'ai ajouter a tout sa une requete sql mais il m'envoie promener ( encore ^^).

Re: [...]autoit et interrogation base de donnée access 2003

Posté : ven. 10 avr. 2009 11:04
par GaRydelaMer
Bonjour

c'est quoi l'erreur ?

Le principe, créer un objet "ADODB.Connection"
Puis un RecordSet comme tu le ferais dans un module dans access.

Sinon Ajoute ca dans ton script:

Au début

Code : Tout sélectionner

Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc"), $EventError = 0

Func MyErrFunc()
    Local $msg, $HexNumber = Hex($oMyError.number, 8)
    Switch $HexNumber
        Case "_80020009"
            $msg = MsgBox(4 + 16, $FenetreFilms & " Erreur " & $oMyError.scriptline, _
                    "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
                    "Risque de doublons" & @LF & @LF & "continuer ?")
            SetError(1, 1)
        Case Else
            $msg = MsgBox(4 + 16, "AutoItCOM Test", "We intercepted a COM Error !" & @CRLF & @CRLF & _
                    "err.description is: " & @TAB & $oMyError.description & @CRLF & _
                    "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _
                    "err.number is: " & @TAB & $HexNumber & @CRLF & _
                    "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _
                    "err.source is: " & @TAB & $oMyError.source & @CRLF & _
                    "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _
                    "err.helpcontext is: " & @TAB & $oMyError.helpcontext & @CRLF & @CRLF & _
                    "Continuer ???")
            SetError(1, 9)
    EndSwitch
    If $msg <> 6 Then Exit
EndFunc   ;==>MyErrFunc
 
Avec ca tu auras les erreurs renvoyer par les objets ADO.

Re: [...]autoit et interrogation base de donnée access 2003

Posté : ven. 10 avr. 2009 11:19
par wasabi
Pour faire simple j'ai une requete sql qui me permet de selectionner dans ma table sous access un login et un utilisateur, mais le souci c'est qu'il refuse completement de tout me renvoyé.
► Afficher le texte
Ou avec ton script:
► Afficher le texte

Re: [...]autoit et interrogation base de donnée access 2003

Posté : ven. 10 avr. 2009 11:29
par GaRydelaMer
Essaye ca:

Code : Tout sélectionner

Global Const $ProviderJET = 'Microsoft.Jet.OLEDB.4.0'
Global Const $adOpenStatic = 3
Global Const $adLockOptimistic = 3

Global $AccessDB = "C:\connexion.mdb"
Global $oAccessADO = _adoaccessOpen($AccessDB)
Global $rsAccess = ObjCreate("ADODB.Recordset")
Global $SQL = "SELECT username, password FROM utilisateur" ;==>> selectionner ma table.
$rsAccess.open($SQL, $oAccessADO, $adOpenStatic, $adLockOptimistic)

Global $NameList = ""
While Not $rsAccess.EOF
    $NameList &= $rsAccess.Fields("username" ).value & " " & $rsAccess.Fields("password" ).value & @CRLF
    $rsAccess.MoveNext
WEnd
$rsAccess.close
MsgBox(0, "liste des users", $NameList)

Func _adoAccessOpen($AccessDB)
    $oAccessADO = ObjCreate("ADODB.Connection")
    $oAccessADO.Provider = $ProviderJET
    $oAccessADO.Open($AccessDB)

    If @error Then
        MsgBox(0, "ERROR", "Cant open Access Database , handle = " & $oAccessADO)
    Else
        MsgBox(0, "connexion", $oAccessADO.State)
    EndIf
    Return $oAccessADO
EndFunc   ;==>_adoAccessOpen
 

Re: [...]autoit et interrogation base de donnée access 2003

Posté : ven. 10 avr. 2009 11:32
par wasabi
erreur identique.

par contre si je met en commentaire ceci

Code : Tout sélectionner

$rsAccess.open($SQL, $oAccessADO, $adOpenStatic, $adLockOptimistic)

Global $NameList = ""
While Not $rsAccess.EOF
    $NameList &= $rsAccess.Fields("username" ).value & " " & $rsAccess.Fields("password" ).value & @CRLF
    $rsAccess.MoveNext
WEnd
$rsAccess.close
MsgBox(0, "liste des users", $NameList)
 
j'ai pas d'erreur.

Re: [...]autoit et interrogation base de donnée access 2003

Posté : ven. 10 avr. 2009 11:46
par GaRydelaMer
Tu es sur de ton SQL ?

Ajoute la gestion des erreurs tu auras un message un peu plus clair sur l'erreur de ADO.

Re: [...]autoit et interrogation base de donnée access 2003

Posté : ven. 10 avr. 2009 11:53
par wasabi
http://img14.imageshack.us/my.php?image ... treoiw.jpg

arf résolu.^^
Aprés vérification j'ai ma table qui s'appelai utiliateur, il manquait le S désolé.

Re: [...]autoit et interrogation base de donnée access 2003

Posté : ven. 10 avr. 2009 11:58
par GaRydelaMer
L'erreur est claire, il trouve pas la Table "utilisateur" vérifie le nom de la table avec access. Ton SQL est pas bon.

edit:

Alors ca marche !!! (avec le "s"), n'hésite pas à revenir si tu bloque ailleurs dans ton développement.

Re: [R]autoit et interrogation base de donnée access 2003

Posté : ven. 10 avr. 2009 12:02
par wasabi
Merci beaucoup de ton aide .

je reviendrai vers toi si je blok encore. merci.

Re: [...]autoit et interrogation base de donnée access 2003

Posté : ven. 10 avr. 2009 12:05
par GaRydelaMer
modifie le titre du sujet pour mettre Résolu.
[R]autoit et interrogation base de donnée access 2003

N'hésite pas, je manipule pas mal de base de données avec AutoIt.