Page 1 sur 1
[R] Base de donnée access et autoit
Posté : mer. 15 avr. 2009 16:35
par wasabi
Comme mon précédent message n'était pas trés claire j'en refait un autre. ( modérateur veuillez svp supprimé l'ancien).
Pour faire simple:
Dans ma boite nous utilisons un logiciel avec login et password. maleuresement ils ne sont pas atitré donc on ne peut jamais avoir le meme.
J'ai donc décidé de concevoir un logiciel qui me permettrais de vérifier la disponibilité des mots de passe et compte user ainsi qu'une connection automatisée au logiciel.
Tout fonctionne lorsque j'insere les user et password manuellement a la base de donnée.
Mais je voudrai créer une interfaces permettant que chaque employés puissent mettre les compte qu'il désire (les plus souvent utilisé).
Pour ceux j'ai fait deux inputbox mais je n'arrive pas à injecter les donné dans la BDD.
Y'en a til parmi vous qui sont qualifié dans se domaine pour m'aider.
Voici le code d'insertion que j'ai:
► Afficher le texte
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
;---------------------------------------------------------------------------------------------------------------------------------------
Global Const $ProviderJET = 'Microsoft.Jet.OLEDB.4.0; '
Global Const $adOpenStatic = 3
Global Const $adLockOptimistic = 3
Global $AccessDB = "connexion.mdb"
Global $oAccessADO = _adoaccessOpen($AccessDB)
Global $rsUser = ObjCreate("ADODB.Recordset")
Global $rsPass = ObjCreate("ADODB.Recordset")
Global $SQL = "SELECT username, password FROM utilisateur"
;---------------------------------------------------------------------------------------------------------------------------------------
#include <GuiConstants.au3>
#NoTrayIcon
; Déclaration des variables.
Global $Largeur = 250, $Hauteur = 220, $Titre = "Auto login for ASSET"
#Region ### START Koda GUI section ###
; Fenetre principale.
$Form1 = GUICreate($Titre, $Largeur, $Hauteur, -1, -1)
; Bouton OK.
$Button1 = GUICtrlCreateButton("Connexion", 145, 180, 75, 25)
GUISetState(@SW_SHOW)
;---------------------------------------------------------------------------------------------------------------------------------------
$inputbox1 = GUICtrlCreateInput("user", 50, 50, 75, 25)
; ouverture du recordset
$rsUser.open($SQL, $oAccessADO, $adOpenStatic, $adLockOptimistic)
;parcours du recordset
; définition de la variable listusername
$listusername="vide"
While Not $rsUser.EOF
if $listusername="vide" then
$listusername = $rsUser.insert("username").value
Else
;caractère de séparation de liste ==> |
$listusername = $listusername & "|" & $rsUser.insert("username").value
EndIf
WEnd
$rsUser.close
GUICtrlSetData($listuser,$listusername,"")
;---------------------------------------------------------------------------------------------------------------------------------------
$inputbox2 = GUICtrlCreateInput("pass", 50, 100, 75, 25)
; ouverture du recordset
$rsPass.open($SQL, $oAccessADO, $adOpenStatic, $adLockOptimistic)
;parcours du recordset
; définition de la variable listpass
$listPassword="vide"
While Not $rsPass.EOF
if $listPassword="vide" then
$listPassword = $rsPass.insert("password").value
Else
;caractère de séparation de liste ==> |
$listPassword = $listPassword & "|" & $rsPass.insert("password").value
EndIf
WEnd
$rsPass.close
GUICtrlSetData($listpass,$listPassword,"")
;---------------------------------------------------------------------------------------------------------------------------------------
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Button1
Sleep(3000)
EndSwitch
WEnd
;---------------------------------------------------------------------------------------------------------------------------------------
Func _adoAccessOpen($AccessDB)
$oAccessADO = ObjCreate("ADODB.Connection")
$oAccessADO.Provider = $ProviderJET
$oAccessADO.Open($AccessDB)
Return $oAccessADO
EndFunc ;==>_adoAccessOpen
;---------------------------------------------------------------------------------------------------------------------------------------
Et si jamais je suis preneur de toute les possibilité de création d'une base de donnée sous autoit si cela est possible.
Merci de votre aide.
Re: [...]base de donnée access et autoit
Posté : mer. 15 avr. 2009 17:41
par GaRydelaMer
Bonjour
Alors pour l'insertion d'enregistrement dans la base de données.
On suppose:
$oConn est l'objet connexion
1/
Avec le SQL: la commande :INSERT tu as surement MsAccess fais ta requête avec lui et ensuite tu fais un copier coller du code SQL.
Pour exécuter la commande: $oConn.Execute("La chaine SQL ou une variable qui la contient")
"Insert Into ...." voir l'aide SQL de access
2/
Une autre methode (celle que j'utilise le plus souvent)
je modifie le recordset, et je l'update
$oRS est le recordset
$oRs.Fields("username").Value = "Un nouvel user dans la base"
$oRs.Update
Pas besoin de tout parcourir, j'ai pas tout compris à ton programme.
Maintenant concernant ton programme corrige le avec les éléments donné ci-dessus.
Chris
Re: [...]base de donnée access et autoit
Posté : mer. 15 avr. 2009 20:32
par wasabi
Décidément toi tu es vraiment un bon. je teste et je te redit sa. merci ^^