connection ODBC Persistante sous Excel

connection ODBC Persistante sous Excel - VB/VBA/VBS - Programmation

Marsh Posté le 20-06-2007 à 15:31:19    

Bonjour,
 
J'essaye de créer une petite macro sous excel qui me permette d 'actualiser un certains nombres de cellules dans excel depuis une base de donnée Mysql.
par contre je cherche à ouvrir une seule fois la connexion ODBC et non une fois à chaque fois que je lance une requete.
 
voici mon code actuelle qui me prend trop de temps :
 

Code :
  1. Conn = "ODBC;"
  2. Conn = Conn & "DSN=glpi;"
  3. Conn = Conn & "SERVER=10.10.10.10;"
  4. Conn = Conn & "UID=admin;"
  5. Sheets("recap" ).Select
  6. Sheets("test" ).Select
  7. With ActiveSheet.QueryTables.Add(Connection:=Conn, Destination:=Range("D4" ))
  8.         .CommandText = Array("select serial from glpi_computers where glpi_computers.name='test'" )
  9.         .Name = "Lancer la requête à partir de glpi"
  10.         .FieldNames = False
  11.         .RowNumbers = False
  12.         .FillAdjacentFormulas = False
  13.         .PreserveFormatting = True
  14.         .RefreshOnFileOpen = False
  15.         .BackgroundQuery = True
  16.         .RefreshStyle = xlInsertDeleteCells
  17.         .SavePassword = False
  18.         .SaveData = True
  19.         .AdjustColumnWidth = False
  20.         .RefreshPeriod = 0
  21.         .PreserveColumnInfo = True
  22.         .Refresh BackgroundQuery:=False
  23.     End With
  24.     With ActiveSheet.QueryTables.Add(Connection:=Conn, Destination:=Range("A15" ))
  25.         .CommandText = Array( _
  26.         "select glpi_computers.name, glpi_software.name from glpi_computers" & Chr(13) & "" & Chr(10) & "left outer join glpi_inst_software on glpi_inst_software.cid=glpi_computers.id" & Chr(13) & "" & Chr(10) & "left outer join glpi_licenses on glpi_inst_software." _
  27.         , _
  28.         "license=glpi_licenses.id" & Chr(13) & "" & Chr(10) & "left outer join glpi_software on glpi_licenses.sid=glpi_software.id" & Chr(13) & "" & Chr(10) & "where glpi_computers.name='GS11SLWI025'" & Chr(13) & "" & Chr(10) & "order by glpi_software.name asc" _
  29.         )
  30.         .Name = "Lancer la requête à partir de glpi"
  31.         .FieldNames = False
  32.         .RowNumbers = False
  33.         .FillAdjacentFormulas = False
  34.         .PreserveFormatting = True
  35.         .RefreshOnFileOpen = False
  36.         .BackgroundQuery = True
  37.         .RefreshStyle = xlInsertDeleteCells
  38.         .SavePassword = False
  39.         .SaveData = True
  40.         .AdjustColumnWidth = True
  41.         .RefreshPeriod = 0
  42.         .PreserveColumnInfo = True
  43.         .Refresh BackgroundQuery:=False
  44.     End With
  45. Sheets("temp" ).Select
  46. End Sub


 
qqn pourrait me dire comment faire pour ouvrir une fois pour toute la connexion dans la macro?
 
merci


Message édité par p'titmath le 20-06-2007 à 15:32:33
Reply

Marsh Posté le 20-06-2007 à 15:31:19   

Reply

Marsh Posté le 20-06-2007 à 16:21:36    

Help, no one? :<

Reply

Marsh Posté le 20-06-2007 à 16:28:36    

Une connexion ça s'ouvre et ça se ferme (sinon on a des problèmes)
Il te faut donc fabriquer une fonction pour l'ouvrir, une pour la fermer et enlever les instructions de connexion de ton actuelle macro de lancement de requete.

 

La question importante à se poser est quand veux-tu ouvrir la connexion et quand dois-tu la fermer ?
Les évènements d'ouverture et de fermeture de ton classeur sont des pistes à suivre pour cela mais, évidemment, cela dépend de tes besoins.

 

Entre l'ouverture et la fermetrue tu pourras lancer autant de requetes qeu tu veux en utilisant l'objet Conn (déclaré public).

 



Message édité par tegu le 20-06-2007 à 16:29:18
Reply

Marsh Posté le 20-06-2007 à 16:32:18    

je suis bien d accord pour les connectoins.
 
en fait la connections doit se faire au lancement de la macro
apres je lance mes différentes requetes sur mes différents onglets.
seulement à la fin je fermerais la connection.
 
en fait je cherche surtt à avoir la syntaxe justement pour déclarer cette  ouverture et fermeture de connection.
 
merci =)

Reply

Marsh Posté le 20-06-2007 à 16:59:18    

Cherche sur ce forum et le web à « ADODB.Connection »

Reply

Sujets relatifs:

Leave a Replay

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