Acceder à des bases Access en VBS

Acceder à des bases Access en VBS - VB/VBA/VBS - Programmation

Marsh Posté le 29-06-2009 à 09:48:46    

Bonjour,
Merci d'avance pour votre lecture
Voila j'ai déjà posté dans une autre section sur mon projet. lien
Mais ayant changé de strategie, je poste de manière plus à proprié ici.  
Je souhaite faire une interface pour des bases de données  :sweat: . Ces bases de données ont toutes le même schéma relationnel ouf  :D .
Suite à la discussion cité précédemment, j'ai décidé de me lancer dans le VB que je ne connaissais alors que de nom.
J'ai une série de question provenant de tout les lectures que j'ai pu faire sur le web ( merci google :D)
La première qui risque de sembler bizarre mais qui pourtant me dérange pas mal est :
J'ai lu qu'entre autre il était plus simple de passer par des "interfaces" objet prédéfini pour accéder à la base
Je dis peut être une bétise mais je crois devoir utiliser ADO
J'ai lu que pour pouvoir l'utiliser il fallait entre autre la paramétrer lien
Seulement voila aucun détail sur ce point :lol:  
Donc savez comment accede-t-on  au "Projets - Références, Microsoft AtiveX Data Objects 2.x Library"  
J'ai de nombreuse fois trouvé cette remarque comme quoi il fallait avoir ajouter la dll mais jamais comment le faire?  :pt1cable:  
Ou ai-je mal interpréter ?
Je précise que suite à mes lectures, j'ai découvert, le hta que j'ai choisi car le fait d'utiliser le html pour faire une interface m'a beaucoup enthousiasmer  :)  
Merci de votre aide


Message édité par _xme_ le 29-06-2009 à 10:23:04
Reply

Marsh Posté le 29-06-2009 à 09:48:46   

Reply

Marsh Posté le 29-06-2009 à 10:05:39    

euh... pourquoi t'as posté dans XML/XSL?

Reply

Marsh Posté le 29-06-2009 à 10:22:39    

car j'ai selectionné vbs/vba et que j'ai du tourner la roulette -_-
I'm a boulet :D
y a moyen de déplacer le post?
 
edit trouvé :D suffit d'edit le 1er message  :lol:
edit 2 j'ai oublié de précisé que j'avais trouvé ce lien
mais que je ne l'ai pas compris  :sweat:
 
edit je precise que je travaille avec Access 2002


Message édité par _xme_ le 29-06-2009 à 10:50:56
Reply

Marsh Posté le 29-06-2009 à 11:17:40    

Citation :

comment accede-t-on  au "Projets - Références, Microsoft AtiveX Data Objects 2.x Library"  

1. Il faut ouvrir une fenêtre VBA dans Access. Donc, il faut créer un module, ou bien éditer le code d'un formulaire en appuyant sur Alt F11.
 
2. Aller dans la barre de menu, et cliquer sur "Outils".
Normalement, la première option est "Références..."
Parfois on n'a pas de chance et cette option est grisée. Mais habituellement, elle est accessible.
 
3. Ensuite, on a une boite de dialogue contenant une liste de "références" avec ce qu'il faut pour en enlever, en ajouter, ou changer l'ordre des références.

Reply

Marsh Posté le 29-06-2009 à 11:28:49    

Merci pour la réponse bien détaillée :)
Par contre vu la solution, je me pose d'u coup une nouvelle question ^^
Est-ce que cela va marcher même dans mes codes VBS ?
 
Bon je ne sais pas si c'est lié mais voila mon code et mon erreur:

Code :
  1. <html>
  2. <HEAD>
  3.  <TITLE>Application : Test d'acces</TITLE>
  4.  <HTA:APPLICATION ID = 'Test'>
  5.  <script language="VBScript">
  6.   Sub CreerRequete(Nom As String, SQL As String )
  7.    Dim MaCom As New ADODB.Command
  8.    Dim MCat As New ADOX.Catalog
  9.    Set MCat.ActiveConnection = CurrentProject.Connection
  10.    MaCom.CommandText = SQL
  11.    MCat.Procedures.Append Nom, MaCom
  12.    Set MCat=Nothing
  13.    Set MaCom=Nothing
  14.   End Sub
  15.  </script>
  16. </HEAD>
  17. <BODY>
  18. <p>test</p>
  19. </BODY>
  20. </html>


le code est directement tiré de developpez mais ca marche pas  :cry:  
et puis faut voir l'erreur :
erreur ligne 6 char 25
)' attendu  :sweat:  
en même temps je sais qu'il manque quelque chose, car jamais je ne présice le chemin de ma base :D


Message édité par _xme_ le 29-06-2009 à 13:16:25
Reply

Marsh Posté le 29-06-2009 à 11:39:43    

Il ne faut pas se décourager au premier petit obstacle rencontré.
 
VBS permet de faire beaucop de choses en utilisant les ActiveX. Access et Excel ont des ActiveX, que l'on nomme aussi parfois "Automation". Mais les produits autres que ceux de M$ n'ont pas toujours des interfaces de type ActiveX.
 
La méthode que je préfère pour accèder à des bases de données de différents types, est de le faire en PHP avec l'ensemble des fonctions, AdoDB, voir http://fr.wikipedia.org/wiki/ADOdb .

Reply

Marsh Posté le 29-06-2009 à 11:46:08    

olivthill a écrit :

Il ne faut pas se décourager au premier petit obstacle rencontré.
 
VBS permet de faire beaucop de choses en utilisant les ActiveX. Access et Excel ont des ActiveX, que l'on nomme aussi parfois "Automation". Mais les produits autres que ceux de M$ n'ont pas toujours des interfaces de type ActiveX.
 
La méthode que je préfère pour accèder à des bases de données de différents types, est de le faire en PHP avec l'ensemble des fonctions, AdoDB, voir http://fr.wikipedia.org/wiki/ADOdb .


Je te rassure olivthill, je ne suis pas découragé  :)  
Bon par contre je ne pense pas que la synthaxe php va marcher  :whistle:  
Du coup je repose ma question, est ce que le paramétrage dans Access va marcher pour tout mes scripts VBS ? :??:
 
edit j'ai edité mon post précédent pour montrer mon soucis :)

Message cité 1 fois
Message édité par _xme_ le 29-06-2009 à 11:52:32
Reply

Marsh Posté le 29-06-2009 à 13:34:57    

_xme_ a écrit :


Je te rassure olivthill, je ne suis pas découragé  :)  
Bon par contre je ne pense pas que la synthaxe php va marcher  :whistle:  
Du coup je repose ma question, est ce que le paramétrage dans Access va marcher pour tout mes scripts VBS ? :??:
 
edit j'ai edité mon post précédent pour montrer mon soucis :)


Je crois que je viens de trouver mon bonheur :)
lien

Reply

Marsh Posté le 29-06-2009 à 15:30:26    

erreur :(  
à priori c'est que j'ai des dll manquantes car même en utilisant le script fournit
J'obtiens une erreur.
erreur de synthaxe ligne 10
la ligne en question:

Code :
  1. Option Compare Binary


difficile de faire une erreur de synthaxe dessus du coup peut être le contexte mais voilà, y a rien autour  

Code :
  1. <html>
  2.   <HEAD>
  3.     <TITLE>Application : Test d'un enregistrement excel</TITLE>
  4.     <HTA:APPLICATION ID = 'test'>
  5.       <script language="VBScript">
  6. ' ===========
  7. ' Module SQL
  8. ' ===========
  9. Option Explicit
  10. Option Compare Binary
  11. Public cnx           As New ADODB.Connection
  12. [...]


du coup là je seche :??:  
est ce que le HTA peut poser problème?
 
merci de votre aide

Reply

Marsh Posté le 29-06-2009 à 18:13:07    

:( personne n'a d'idée  :??:  
Est ce quelqu'un a déjà fait du VBS pour acceder à une base Access?
Je prend n'importe quel bout de code, même sans explication.
Mais là ca fait plus d'une journée que je teste plein de chose. Mais à chaque fois ca foire...
Je pense que ca vient du fait qu'a chaque fois je pars de code VBA  :(  
J'ai pas trouvé un seul code VBS qui se connecte à Access qui marche  :(

Reply

Marsh Posté le 29-06-2009 à 18:13:07   

Reply

Marsh Posté le 30-06-2009 à 11:30:18    

bon je persiste et signe  :bounce:  
voici mon code actuel

Code :
  1. <html>
  2. <HEAD>
  3.  <TITLE>Application : Test d'un acces access</TITLE>
  4. <!-- <HTA:APPLICATION ID = 'Test'>--!>
  5.  <script language="VBScript">
  6.    Set appAccess = CreateObject("Access.Application" )
  7.    'Déclare le nom de la base de données et l'ouvre
  8.    nombase1 = "C:\TEMP\Copie de base.mdb"
  9.    appAccess.OpenCurrentDatabase nombase1
  10.    appAccess.Application.Visible = True
  11.    set cnx =CreateObject("ADODB.Connection" )
  12.      cnx.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+"\..\..\..\TEMP\Copie de base.mdb" )
  13.    Public Sub Testrequete()
  14.           set sql = "SELECT champ FROM table"
  15.    set rs= CreateObject("ADODB.Recordset" )
  16.    rs = cnx.Execute(sql)
  17.    ' rs.Open sql, cnx, adOpenStatic, adLockReadOnly ' Execution de la requête
  18.    End sub
  19.  </script>
  20. </HEAD>
  21. <BODY>
  22.   <INPUT TYPE="button" NAME="bouton3" VALUE="Test" onClick="Testrequete()"><BR>
  23. </BODY>
  24. </html>


J'ai déjà des progrès j'arrive à lancer une base access  :lol:  
mais bon je doute que ca serve, mais ca fait tjs plaisir de voir un truc s'afficher  :pt1cable:  
mais voila des que je clique sur le bouton, j'ai l'erreur suivante :
Objet requis : '[string "Select champ "]'  :(  
donc je remarque que la chaine est plus courte que prévu...
est ce que l'erreur vient de là ?
Je cherche toujours  :pt1cable:  
Si quelqu'un a une idée, je suis preneur :)
Comme vous pouvez voir j'ai essayer 2 méthose pour lancer la requete, les deux donne le même résultat -_-


Message édité par _xme_ le 30-06-2009 à 11:33:38
Reply

Marsh Posté le 30-06-2009 à 13:33:25    

Citation :

Objet requis : '[string "Select champ "]'  :(  

C'est à cause du set dans la ligne set sql = "SELECT champ FROM table"
 
Mais, une fois corrigé ce problème, beaucoup d'autres choses causent des erreurs (la première erreur étant le commentaire qui doit être entre <!-- et --> et non pas entre <!-- et --!> ). Finalement, je suis parvenu à ceci qui marche chez moi :

<html>
<HEAD>
 <TITLE>Application : Test d'un acces access</TITLE>
<!-- <HTA:APPLICATION ID = 'Test'> -->
 <script language="VBScript">
 
   nombase1 = "C:\...........\......mdb"  ' $$ mettre le bon chemin
   set cnx =CreateObject("ADODB.Connection" )
   cnx.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & nombase1 & ";Persist Security Info=False" )
 
   Public Sub Testrequete()
   sql = "SELECT mon_champ FROM ma_table"  ' $$ remplacer mon_champ et ma_table
   set rs = CreateObject("ADODB.Recordset" )
   rs.Open sql, cnx
   i = 1
   Do While (Not rs.EOF)
     MsgBox i & " ) Champ  = " & rs("mon_champ" ) ' $$ remplacer mon_champ
     rs.MoveNext 'suivant
     i = i + 1
   Loop
   rs.Close          'Fermer le recordset
   Set rs = Nothing  'Libération de la mémoire allouée
   cnx.Close         'Fermer la connexion à la base
   End sub
 </script>
</HEAD>
<BODY>
  <INPUT TYPE="button" NAME="bouton3" VALUE="Test" onClick="Testrequete()"><BR>
</BODY>
</html>

Reply

Marsh Posté le 30-06-2009 à 13:56:50    

olivthill a écrit :

Citation :

Objet requis : '[string "Select champ "]'  :(  

C'est à cause du set dans la ligne set sql = "SELECT champ FROM table"
 
Mais, une fois corrigé ce problème, beaucoup d'autres choses causent des erreurs (la première erreur étant le commentaire qui doit être entre <!-- et --> et non pas entre <!-- et --!> ). Finalement, je suis parvenu à ceci qui marche chez moi :

<html>
<HEAD>
 <TITLE>Application : Test d'un acces access</TITLE>
<!-- <HTA:APPLICATION ID = 'Test'> -->
 <script language="VBScript">
 
   nombase1 = "C:\...........\......mdb"  ' $$ mettre le bon chemin
   set cnx =CreateObject("ADODB.Connection" )
   cnx.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & nombase1 & ";Persist Security Info=False" )
 
   Public Sub Testrequete()
   sql = "SELECT mon_champ FROM ma_table"  ' $$ remplacer mon_champ et ma_table
   set rs = CreateObject("ADODB.Recordset" )
   rs.Open sql, cnx
   i = 1
   Do While (Not rs.EOF)
     MsgBox i & " ) Champ  = " & rs("mon_champ" ) ' $$ remplacer mon_champ
     rs.MoveNext 'suivant
     i = i + 1
   Loop
   rs.Close          'Fermer le recordset
   Set rs = Nothing  'Libération de la mémoire allouée
   cnx.Close         'Fermer la connexion à la base
   End sub
 </script>
</HEAD>
<BODY>
  <INPUT TYPE="button" NAME="bouton3" VALUE="Test" onClick="Testrequete()"><BR>
</BODY>
</html>



aarrrgh mon dieu vivant  :ouch:  
enfin un code simple qui marche chez moi  :love:  
bon ben merci pour tout http://www.emoticone-gratuit.info/emoticone-amour/53.gif
je vais me débrouiller avec ca :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed