Page 1 sur 1
[R] Copier le contenu d'une table access dans un tableau
Posté : mar. 26 févr. 2008 16:51
par havoc2
Bonjour à tous,
je suis en train de programmer un outil qui me permettra (enfin j'espère

) de récupérer les données de 2 tables Access et de les coller dans une troisième, pour ce qui est de la connexion à la base et à l'insertion des données, pas de problème, par contre pour ce qui est de la récupération des données dans un tableau, là ça coince.
J'ai récupéré des morceaux de code sur d'autres programmes, et je pense que le langage utilisé pour l'accès aux tables est VB (sans conviction). Ne connaissant pas ce langage et après moultes (ca se dit ça?) recherches infructueuses, j'en viens à vous poser la question...
Voici le code :
► Afficher le texte
Code : Tout sélectionner
;-------------------------------
; Declaration gestionnaire d'erreur pour objet COM
;-------------------------------
Global $oComError = ObjEvent("AutoIt.Error", "MyErrFunc")
Global $UneChaine = ""
Global $MonCompteur = 0
Global $NomFichierLog = "Log.txt" ; Fichier Log pour tests
Global $LogFile = ""
Global $Temp = "" ; Variable temp pour tests
Global $Resultat = ""
;Variables de saisie des chiffres clés dans le tableau excel
;-------------------------------
Sleep(5000)
;-------------------------------
; Acces aux objets ADO = Access
;-------------------------------
Global $objRecordSet = ObjCreate("ADODB.Recordset")
Global $objRsResult = ObjCreate("ADODB.Recordset")
Global $objConnection = ObjCreate("ADODB.Connection")
Global $ChaineConnexion = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=MaBaseDeDonnees.mdb" ; Noter ici le nom de la base Access
Global $CommandeSQL = ""
Global $NbEnregs = 0
Global $Array = ""
Global Const $adOpenStatic = 3
Global Const $adLockOptimistic = 3
;-------------------------------
; Ouverture de l'objet permettant d'accéder à la base access
;-------------------------------
$objConnection.Open( $ChaineConnexion )
;-------------------------------
; Ouverture du fichier de Log
;-------------------------------
$LogFile = FileOpen( $NomFichierLog, 2)
;-------------------------------
; Récupération de la liste des enregistrements de ma table
;-------------------------------
$CommandeSQL = "SELECT * FROM MaTable"
$objRecordSet.Open( $CommandeSQL, $objConnection, $adOpenStatic, $adLockOptimistic )
$NbEnregs = $objRecordSet.RecordCount
FileWriteLine( $LogFile, "1) Nombre de lignes : " & $NbEnregs )
;Accès aux données
$objRecordSet.Close
;-------------------------------
; Récupération de la liste des enregistrements de ta table
;-------------------------------
$CommandeSQL = "SELECT * FROM TaTable"
$objRecordSet.Open( $CommandeSQL, $objConnection, $adOpenStatic, $adLockOptimistic )
$NbEnregs = $objRecordSet.RecordCount
FileWriteLine( $LogFile, "1) Nombre de lignes : " & $NbEnregs )
;Accès aux données
$objRecordSet.Close
;-------------------------------
; Mise en correspondance des lignes
;-------------------------------
;-------------------------------
; Création des lignes correspondantes dans la table résultat
;-------------------------------
$CommandeSQL = "INSERT INTO NotreTable (MaTable_id,MaTable_info,TaTable_id,TaTable_Info) VALUES ('" & $DB_MaTable_id & "','" & $DB_MaTable_Info & "','" & $DB_TaTable_id & "','" & $DB_TaTable_Info & ")"
FileWriteLine($LogFile, "2) Requete INSERT : " & $CommandeSQL )
$objConnection.Execute( $CommandeSQL )
Sleep(1000)
;-------------------------------
; Fermeture des connexions
;-------------------------------
FileClose( $LogFile )
$objConnection.Close
Voilà, le script est encore en chantier (il manque des morceaux) mais je recherche la commande qui me permette de récupérer les champs de mes tables Access et une fois cela fait de les intégrer dans une variable de type tableau...
Je sais que lorsque j'exécute la commande
J'obtiens le nombre de lignes de résultat de ma requête, donc je suppose qu'il doit y avoir une commande $objRecordSet.RecordQuelqueChose qui me permettrait de récupérer les données...
Merci d'avance pour vos réponses
Bonne Fin de journée
Re: copier le contenu d'une table access dans un tableau
Posté : mar. 26 févr. 2008 20:34
par moutelous
Bonsoir,
Juste une petite remarque parceque je ne comprends pas trop là ...
Pourquoi vouloir passer par un langage de script tel qu'autoit pour régler ce genre ce problème ?
A partir de 2 tables access pour en créer une troisième il est bien plus simple d'utiliser une macro VBA en interne ....
Re: [R] Copier le contenu d'une table access dans un tableau
Posté : mer. 27 févr. 2008 09:02
par havoc2
Bonjour moutelous,
Tout d'abord car je ne maitrise pas VBA, comme je l'ai expliqué dans mon post, et ensuite, je voudrais avoir un raccourci sur mon bureau vers cet exécutable, et je ne crois pas que cela soit possible avec une macro... Enfin, d'après mes connaissances VBA qui sont assez limitées...
J'ai avancé dans mes recherches :
Code : Tout sélectionner
$objRecordSet.MoveFirst
While $objRecordSet.EOF=0
FileWriteLine( $LogFile, "1.1) Valeur de EOF : " & $objRecordSet.EOF)
$Array[$i][0] = $objRecordSet.Fields[0]
$Array[$i][1] = $objRecordSet.Fields[1]
FileWriteLine( $LogFile, "2) Valeurs des lignes : " & $Array[$i][0] & ";" & $Array[$i][1])
$i +=1
$objRecordSet.MoveNext
Wend
Par contre, il n'aime pas :
"Fields[0]" : J'obtiens le message d'erreur suivant :Illegal text at the end of statement (one statement per line)
"Fields(0)" : J'obtiens le message d'erreur suivant :Badly formated variable or macro
Re: [..] Copier le contenu d'une table access dans un tableau
Posté : jeu. 28 févr. 2008 11:28
par havoc2
J'avance petit à petit...
j'ai trouvé un forum en anglais où une personne a utilisé la commande :
Et chez qui à priori, cela fonctionne...Mais chez moi, j'ai l'erreur : "the requested action with this object has failed"
Peut-être un problème d'include... Mais pour ObjCreate, je n'ai pas l'impression qu'il y ait besoin d'include particulier, j'ai déjà ca :
Code : Tout sélectionner
#include <GUIConstants.au3>
#include <File.au3>
#include <Math.au3>
#include <Array.au3>
Bref je tourne en rond et j'arrive pas à récupérer les valeurs contenues dans mes tables access...

Je pense que je vais aller acheter de la corde

...
Si quelqu'un a une idée là dessus (sur mon problème, pas sur la corde

)
A vot' bon coeur
Re: [..] Copier le contenu d'une table access dans un tableau
Posté : jeu. 28 févr. 2008 20:58
par Tlem
Le lien vers le post du forum Anglais aurait été intéressant.
Re: [..] Copier le contenu d'une table access dans un tableau
Posté : ven. 29 févr. 2008 12:18
par havoc2
Voici le lien :
http://www.autoitscript.com/forum/lofiv ... 12456.html...
Effectivement cela fonctionne, j'avais mis le nom de mon champ entre crochets...Il n'en fallait pas.
J'espère que ce post pourra aider les personnes qui ont (ou auront) le même problème que moi...
Re: [R] Copier le contenu d'une table access dans un tableau
Posté : ven. 29 févr. 2008 16:19
par Tlem
Je n'y connais pas grand chose dans l'accés aux bases de données, mais ceci ne vous conviendrait-il pas ?
http://www.autoitscript.com/forum/index ... ess++table
Re: [R] Copier le contenu d'une table access dans un tableau
Posté : lun. 03 mars 2008 10:37
par havoc2
Et bien je ne pense pas, car mes requêtes attaquent une base access, et à moins de pouvoir déterminer les paramètres (chemin...) dans la fonction :
Code : Tout sélectionner
_SQLConnect(-1,"localhost","test","sa","superartcore") ; fonction donnée dans la page proposée par Tlem
il ne sera pas possible de créer la connexion, à moins de créer un accès web à la base access, et je ne sais même pas si ça peut se faire

...
Re: [R] Copier le contenu d'une table access dans un tableau
Posté : lun. 03 mars 2008 12:38
par Tlem
Le lien était là pour guider.
Je verrais plutôt ceci pour votre recherche :
http://www.autoitscript.com/forum/index ... t&p=415426