OVH Cloud OVH Cloud

Récupération des données d'un SELECT

2 réponses
Avatar
Jerome
Bonjour,
J'ai différentes macro qui se connectent sur des bases de données via ODBC
(MSSQL, Oracle,...). J'utilise, à titre d'exemple, la chaine de connexion et
le SELECT suivant :

With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=Exemple_oracle;UID=xx;PWD=xx;DBQ=ORACLE9
;DBA=R;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=F" _
),
Array(";BAM=IfAllSuccessful;MTS=F;MDI=F;CSR=F;FWC=F;PFC=10;TLO=0;")), _
Destination:=Range("A1"))
.CommandText = Array( _
"SELECT YFIC_DIFFUSION.YDIF_SYSID_DIFFUSION,
YFIC_DIFFUSION.YDIF_REPONDU_L" _
, _
"E" & Chr(13) & "" & Chr(10) & "FROM .YFIC_DIFFUSION YFIC_DIFFUSION"
& Chr(13) & "" & Chr(10) & "ORDER BY YFIC_DIFFUSION.YDIF_SERVICE" _
)
.Name = "Requete1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With


Ma question est que je récupère ces données dasn une feuille Excel
(Destination) et ensuite j'effectue mes traitements. Toutefois, pour des
questions de vitesse et parfois de nombre de données (limite du nb de lignes
de la page Excel), je souhaiterai garder en mémoire le résultat du Select
pour le traiter et n'afficher que les données calculées dans ma page Excel.
J'avais envisagé de passer par OLAP mais il faut a priori que le poste client
soit configuré en conséquence ce qui ne va pas etre simple en déploiement

Existe-t-il un autre moyen d'arriver à cela ? Si quelqu'un à une méthode, je
suis preneur. Tous les exemples que j'ai pu voir passés par l'écriture dans
la feuille Excel des données

Merci d'avance

Jerome

2 réponses

Avatar
michdenis
Bonjour Jérome,

Si tu connais ADO (activex data object), il y a moyen de gérer le recordset généré
et n'affiché que les données répondant à certains critères.

A cette adresse, tu vas trouver toutes les chaînes de connection en fonction
de la base de données source.

http://www.carlprothman.net/Default.aspx?tabid

Évidemment, tu devras ajouter la bibliothèque suivante à ton projet :
"Microsoft Activex Data Object 2.x librairy"


Salutations!


"Jerome" a écrit dans le message de news:
Bonjour,
J'ai différentes macro qui se connectent sur des bases de données via ODBC
(MSSQL, Oracle,...). J'utilise, à titre d'exemple, la chaine de connexion et
le SELECT suivant :

With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=Exemple_oracle;UID=xx;PWD=xx;DBQ=ORACLE9
;DBA=R;APA=T;EXC=F;FEN=T;QTO=T;FRC;FDL;LOB=T;RST=T;GDE=F;FRL=F" _
),
Array(";BAM=IfAllSuccessful;MTS=F;MDI=F;CSR=F;FWC=F;PFC;TLO=0;")), _
Destination:=Range("A1"))
.CommandText = Array( _
"SELECT YFIC_DIFFUSION.YDIF_SYSID_DIFFUSION,
YFIC_DIFFUSION.YDIF_REPONDU_L" _
, _
"E" & Chr(13) & "" & Chr(10) & "FROM .YFIC_DIFFUSION YFIC_DIFFUSION"
& Chr(13) & "" & Chr(10) & "ORDER BY YFIC_DIFFUSION.YDIF_SERVICE" _
)
.Name = "Requete1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:úlse
End With


Ma question est que je récupère ces données dasn une feuille Excel
(Destination) et ensuite j'effectue mes traitements. Toutefois, pour des
questions de vitesse et parfois de nombre de données (limite du nb de lignes
de la page Excel), je souhaiterai garder en mémoire le résultat du Select
pour le traiter et n'afficher que les données calculées dans ma page Excel.
J'avais envisagé de passer par OLAP mais il faut a priori que le poste client
soit configuré en conséquence ce qui ne va pas etre simple en déploiement

Existe-t-il un autre moyen d'arriver à cela ? Si quelqu'un à une méthode, je
suis preneur. Tous les exemples que j'ai pu voir passés par l'écriture dans
la feuille Excel des données

Merci d'avance

Jerome
Avatar
Jerome
Merci pour l'info et le lien. Je vais étudier l'ADO

Bonne journée

Jerome