> Tous les forums > Forum Autres langages
 Connexion odbc VBASujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
loulou84
  Posté le 05/01/2015 @ 17:29 
Aller en bas de la page 
Petit astucien

Bonjour,

J'aimerai avoir un script de connexion a une base de donnée via ODBC via vba,

A l'heure d'aujourd'hui je me connecte de la manière suivante:

With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=AKAM_Intervention;uid=Admin;pwd=Admin", _

Destination:=Worksheets("temp").Range("A1"))

.CommandText = requete

.Name = instruction

.FieldNames = True

.RowNumbers = False

.FillAdjacentFormulas = False

.PreserveFormatting = True

.RefreshOnFileOpen = False

.BackgroundQuery = True

.RefreshStyle = xlInsertDeleteCells

.SavePassword = False

.SaveData = True

.AdjustColumnWidth = True

.RefreshPeriod = 0

.PreserveColumnInfo = True

.Refresh BackgroundQuery = True

End With

Mais cela ne me plait pas du tout

Publicité
Titus68
 Posté le 06/01/2015 à 00:00 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Qu'est ce qui ne te plait pas ? Suivant la base de données il y a aussi possiblité de passer par OleDb.

loulou84
 Posté le 06/01/2015 à 09:41 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Merci,

Ce qui me plait pas c'est le fait d'avoir besoin d'une feuille pour accomplir ces requêtes,

et ce qui me plait pas c'est cela : .Refresh BackgroundQuery:= True.

En effet ça me fait tourner des requêtes en fond de taches, quand je le passe a false ca ne marche pas.

Titus68
 Posté le 06/01/2015 à 13:36 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Tu peux utiliser ce type de syntaxe :

sub macro1()

'Declare un objet de connexion

Dim cnDB As New ADODB.Connection

'Declare un objet recordset

Dim rsRecords As New ADODB.Recordset

' Ouvre la ODBC Connexion
cnDB.Open "ODBC;DSN=AKAM_Intervention;uid=Admin;pwd=Admin"

requete="select ... from ..."

rsRecords.Open requete, cnDB

i=0

Do Until rsRecords.EOF ' lecture de chaque ligne retournée par la requête "requete" jusqu'à la fin

i=i+1 ' i est un n° de ligne dans excel

cells(i,1).value=rsRecords.fields(0) ' prend la première colonne de la requête est la place dans la cellule excel

cells(i,2).value=rsRecords.fields(1) ' 2ème colonne dans cellule excel

...

rsRecords.MoveNext
Loop
' ferme le recordset

rsRecords.Close
Set rsRecords = Nothing

' ferme la base

cnDB.Close
Set cnDB = Nothing
End Sub

Il y a alors moyen d'affecter la macro à un bouton, à un évènement excel, à l'ouverture du classeur ...

On trouve souvent cette syntaxe dans des exemples vbscript (vbs), c'est pratiquement identique à vba.



Modifié par Titus68 le 06/01/2015 13:39
loulou84
 Posté le 06/01/2015 à 14:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Merci,

Je regarde ça alors,

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Sujets relatifs
.NET:Problème de connexion avec la base de donnés
connection ODBC
ODBC Pour SQL
probleme de connexion à un switch avec telnet
Connexion distante
Classe java pour la connexion avec MySQL
script de connexion à un serveur
 > Tous les forums > Forum Autres langages