Lancer procédure SQL via VB Excel

Résolu/Fermé
Ludivine50 Messages postés 114 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 1 février 2016 - 9 mars 2009 à 09:58
 Tonny Clinton - 24 mars 2009 à 19:03
Bonjour à tous,

Je me demande comment on peut lancer une procédure stockée sql server, à partir de VB Excel.

Pour être plus précise, un agent va ouvrir un fichier excel, il lance une macro qui va transformer le fichier pour le préparer à une importation par sql server. Ensuite, j'aimerais que la routine lance l'importation du fichier excel par Sql server, en appelant le nom de la procédure stockée qui réalise cet import, c'est à dire sans écrire la procédure stockée dans VB Excel.

Quelqu'un sait-il si c'est réalisable?
Merci
A voir également:

5 réponses

Utilisateur anonyme
11 mars 2009 à 05:20
Bonjour Ludivine,

Il m'a fallut beaucoup de temps pour comprendre ta question
et "la modélisé" dans un fait vécu, et oui j'ai fait quelque chose
comme ce que tu énonce et si je ne m'abuse c'était exactement
cela mais pas sur la BD de SQL Serveur mais sur IMAX, un système
propriétaire.

Ceci dit, sous excel tu peux lancer des requêtes directement sur ta BDs
qui utiliseras les procédures stockèes de ta BD.

Je l'ai réalisé sous Excel 95, alors comme tu vois ça ne date pas d'hier!
Toutefois, avec l'assistant de création, ça devrait se faire.

Je vais faire quelque tests, et tu peux essayer aussi, lance dans
le menu Excel :

// Menu / Données / Données externes / Créer une requête...

À partir de la, tu peux si je me souviens bien on peut lire/écrire
dans toute sorte de BDs connus.

Ceci dit, peut-être que d'autres verront autres choses :-)

Lupin
1
Ludivine50 Messages postés 114 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 1 février 2016 7
11 mars 2009 à 09:15
Bonjour Lupin et merci de ta réponse,

J'ai du mal m'expliquer. Je ne veux pas importer dans excel dans données de bases de données externes.
Je vais essayer d'être plus claire:

Le fichier Excel sert d'outil de collecte de données. Un agent reçoit ce fichier, le contrôle visuellement, puis clique sur un bouton pour valider. Cela lance une macro vb, qui crée un nouvel onglet et range les données en "mode base de données" pour être ensuite importées par sql server. Si je ne fais pas ce retraitement, il m'est impossible de récupérer les données par une procédure sql dans le fichier à l'état brut.

Le stockage des données s'effectue sous SQL SERVER; j'ai une procédure stockée actuellement dans un fichier .sql qui fait les traitements suivants, pour simplifier: faire un lien ODBC vers le fichier Excel à importer, importer les données dans sql server.
Mais cet import doit être réalisé régulièrement; il est donc nécessaire d'automatiser l'exécution de cette procédure stockée. Dans un premier temps, j'ai donc réalisé un "travail" sous sql server: j'ai créé une tâche planifiée qui exécute quotidiennement ma procédure stockée à 22h. Notez que pour réaliser une tâche planifiée, je suis obligée de recopier dedans mon script .sql.

Mais l'import quotidien des données n'est suffisant. Je voudrais que lorsque l'agent clique sur le bouton "valider", cela lance la procédure de transformation du fichier pour une préparation à l'import par sql server (comme maintenant), puis que cela lance la procédure que j'ai créée dans mon fichier .sql (ce que je n'arrive pas à réaliser).

J'espère avoir été plus claire. Je déteste quand les gens font des romans pour expliquer leur problème! J'espère que vous non! ;-)
Merci
0
Ludivine50 Messages postés 114 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 1 février 2016 7
10 mars 2009 à 15:10
Quelqu'un a-t-il une idée? J'ai écumé les forums mais les rares réponses sont en chinois. Une solution simple, et compréhensible serait la bienvenue! ;-)) Souvent, ils écrivent la procédure sql directement dans le vb. La mienne est relativement longue, donc je souhaiterais la lancer en écrivant le titre de la procédure. Peut-être n'ais-je pas trouvé les bons posts?
SOS d'une développeuse en herbe en détresse!
0
mikebzh Messages postés 127 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 11 mars 2009 28
11 mars 2009 à 10:30
Coucou,
Si ton import peut s'effectuer en dehors de ton appli excel via une petite routine externe exécutable, tu dois pouvoir te servir de la fonction shell() en vb
Syntaxe
Shell(pathname[,windowstyle])

Exemple :
' Si vous attribuez la valeur 1 au deuxième argument,
' l'application s'ouvre à sa taille normale
' et devient l'application active.
Dim RetVal
' Exécute la calculatrice.
RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)

Cette fonction marche avec les .exe, les .bat
Option 0 pour masquer la fenêtre

A plus.
0
Ludivine50 Messages postés 114 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 1 février 2016 7
12 mars 2009 à 12:56
Bonjour mikebzh et merci pour ta réponse,

Pour ta solution, je dois transformer un fichier .sql en exécutable. J'ai cherché mais apparemment ce n'est pas possible à réaliser. Peut-être peux-tu me donner un indice?
0
Tonny Clinton
24 mars 2009 à 19:03
Salut Monsieur
Je voulais savoir comment je peux débuter pour créer par exemple un Logiciel (Programme)
Donc je demande si possible de me donner la procedure.
Merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ludivine50 Messages postés 114 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 1 février 2016 7
24 mars 2009 à 17:50
Bonjour à tous,

voici la solution à mon problème:

En effet, mon problème finalement était le suivant: je ne savais pas où mettre ma procédure stockée.

Il fallait simplement faire un CREATE procedure PS_TEST AS... dans sql server.

Et dans VB faire la connexion à la bd sql server et cN.Execute ("exec dbo.PS_TEST").

Bon courage à tous
-1