Champ OBDC & Requête Excel

jeanphi

XLDnaute Occasionnel
Bonjour le forum

J'utilise une macro Excel pour exécuter des requêtes à partir d'une source OBDC
Voir début du code ci-dessous:

Sub ServeursPSERIESOp()
Sheets("Requête").Select
Sheets("Requête").Range("B2:S100").Delete
With Sheets("Requête").QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=GDB SF;UID=GDBuser;PWD=GDB;APP=Microsoft Office XP;WSID=SES0TE5I;DATABASE=GDBDPISF;AutoTranslate=No;Regional=Yes;UseProcFor" _
), Array("Prepare=0;QuotedId=No;AnsiNPW=No")), Destination:=Range("B2"))
.CommandText = Array( _
"SELECT amModel.FullName, amAsset.SerialNo, amAsset.Status, amPortfolio.FullName, amLocation.FullName FROM GDBDPISF.dbo.amAsset amAsset, GDBDPISF.dbo.amLocation amLocation, GDBDPISF.dbo.amModel amModel, G" _
, _
"DBDPISF.dbo.amPortfolio amPortfolio WHERE amAsset.lAstId = amPortfolio.lAstId AND amAsset.lModelId = amModel.lModelId AND amLocation.lLocaId = amPortfolio.lLocaId AND amModel.lModelId = amPortfolio.l" _
, _
"ModelId AND ((amModel.FullName='/Informati" _
, _
"que distribuée/Unix/Serveurs (discrets) /IBM/05_IBM Serveur P660/') AND (amAsset.Status='Opérationnel') OR (amModel.FullName='/Informatique distribuée/Unix/Serveurs (discrets) /IBM/05_IBM Serveur P550/') AND " _
, "(amAsset.Status='Opérationnel')OR (amModel.FullName='/Informatique distribuée/Unix/Serveurs (discrets) /IBM/05_IBM serie p610/') AND " _
, "(amAsset.Status='Opérationnel')OR (amModel.FullName='/Informatique distribuée/Unix/Serveurs (discrets) /IBM/05_IBM Serveur P570 9117-570/') AND " _
, "(amAsset.Status='Opérationnel')OR (amModel.FullName='/Informatique distribuée/Unix/Serveurs (discrets) /IBM/06_IBM SERVEUR P690/') AND " _


Le problème c'est que si un nouveau "amModel.FullName" est crée dans ma source OBDC, la macro de ne remonte évidemment pas l'info
Ce que je voudrais faire c'est que chaque fois qu'un "amModel.FullName" est détécté dans ma source OBDC, une Msgbox m'en avertisse....
Comment puis je faire??? :(
Merci pour votre aide!!!
 

GIBI

XLDnaute Impliqué
Re : Champ OBDC & Requête Excel

Bonjour Jeanphi,



Si la table amModel est bien faite il doit y avoir une colonne date de création et(ou) date de modification sur lequel tu peux t'appuyer pour les mettre en évidence.

Si il n'y a pas de date, tu peux stocker la liste des Fullname (si la volumétrie le permet) sur une feuille de ton classeur ou dans un autre classeur et faire la comparaison.

GIBI
 

michel_m

XLDnaute Accro
Re : Champ OBDC & Requête Excel

Bonjour,

Le principe et l'intérêt de ton ODBC est d'utiliser SQL pour se connecter à ta base, exécuter la requête et se déconnecter de la base; on a ainsi un vrai-faux système client-serveur... Donc un changement de valeur d'un champ ne peut pas être répercuté dans ton classeur(il faudrait que la demande de mise à jour d'excel parte de la base)

La seule chose que tu puisses faire est de rafraichir à partir d'excel...

A moins qu'il y ait une astuce que je ne connaisse pas, chose fort possible!

Bon WE

Michel
 
C

Compte Supprimé 979

Guest
Re : Champ OBDC & Requête Excel

Salut tout le monde

Je ne sais pas, mais pourquoi ne pas essayer

... WHERE amAsset.lAstId = amPortfolio.lAstId AND amAsset.lModelId = amModel.lModelId AND amLocation.lLocaId = amPortfolio.lLocaId AND amModel.lModelId = amPortfolio.lModelId AND ((amModel.FullName='*') AND (amAsset.Status='Opérationnel'))"

Plutôt que tous tes "amModel.FullName = machintruc"

A+
 

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz