EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit...

25
EXCEL et L’IBM i Patrick THOMAS Les cahiers de L’IBMi Je parcours souvent les forums « IBM i » et les questions récurrentes sont relatives à la « remontée » de données dans Excel. Si l’on n’est pas doté d’outils de reporting ou de BI comme DB2 Web Query, les tableurs restent des outils relativement efficaces pour présenter les données issues de l’IBM i sous forme de rapport ou sous forme graphique. Il y a des dizaines de façons de « remonter » des données sous Excel : - le CPYTOIMPF pour copier des tables en CSV dans des répertoires partagés Windows, - les transferts « Client Access » depuis l’émulateur, ou depuis le plug-in Excel, - System i Navigator, - iSeries Access for the Web - etc… Nous étudierons ici uniquement les possibilités d’Excel afin d’extraire des données de l’IBM i ou d’appeler des programmes RPG ou SQL (procédures stockées) pour récupérer des données. EXCEL étant un outil Microsoft Office, l’extraction des données se fera avec des outils Microsoft tel ODBC qu’il faudra configurer. Il est à noter, que le driver ODBC pour l’IBM i est installé par défaut lorsque vous installez Client/Access sur un poste de travail. Il s’agit donc d’un prérequis pour faire fonctionner tous les exemples suivants. Je vous livre dans cet Article six différents classeurs Excel dont certains contiennent du VBA (dont je suis loin d’être un spécialiste). 1) Extractions à partir d’une requête SQL statique Excel_01_SQL Statique.xls 2) Extractions à partir d’une requête SQL dynamique (VBA) Excel_02_SQL_Dynamique.xls 3) Extractions à partir de MS QUERY avec création de paramètres Excel_03_SQL_MSQUERY.xls 4) Appel d’une procédure stockée en VBA Excel_04_Procedure_VBA.xls 5) Appel d’un procédure stockée avec MS QUERY Excel_05_Procecudre_MSQUERY.xls

Transcript of EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit...

Page 1: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

EXCEL et L’IBM i

Patrick THOMAS

Les cahiers de L’IBMi

Je parcours souvent les forums « IBM i » et les questions récurrentes sont relatives à la

« remontée » de données dans Excel.

Si l’on n’est pas doté d’outils de reporting ou de BI comme DB2 Web Query, les tableurs

restent des outils relativement efficaces pour présenter les données issues de l’IBM i sous

forme de rapport ou sous forme graphique.

Il y a des dizaines de façons de « remonter » des données sous Excel :

- le CPYTOIMPF pour copier des tables en CSV dans des répertoires partagés Windows,

- les transferts « Client Access » depuis l’émulateur, ou depuis le plug-in Excel,

- System i Navigator,

- iSeries Access for the Web

- etc…

Nous étudierons ici uniquement les possibilités d’Excel afin d’extraire des données de l’IBM i

ou d’appeler des programmes RPG ou SQL (procédures stockées) pour récupérer des

données.

EXCEL étant un outil Microsoft Office, l’extraction des données se fera avec des outils

Microsoft tel ODBC qu’il faudra configurer. Il est à noter, que le driver ODBC pour l’IBM i est

installé par défaut lorsque vous installez Client/Access sur un poste de travail. Il s’agit donc

d’un prérequis pour faire fonctionner tous les exemples suivants.

Je vous livre dans cet Article six différents classeurs Excel dont certains contiennent du VBA

(dont je suis loin d’être un spécialiste).

1) Extractions à partir d’une requête SQL statique

� Excel_01_SQL Statique.xls

2) Extractions à partir d’une requête SQL dynamique (VBA)

� Excel_02_SQL_Dynamique.xls

3) Extractions à partir de MS QUERY avec création de paramètres

� Excel_03_SQL_MSQUERY.xls

4) Appel d’une procédure stockée en VBA

� Excel_04_Procedure_VBA.xls

5) Appel d’un procédure stockée avec MS QUERY

� Excel_05_Procecudre_MSQUERY.xls

Page 2: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

6) Récupération de BLOB (images, photos) en VBA

� Excel_06_BLOB.xls

Pour faire fonctionner ces feuilles, il faudra au préalable préparer l’environnement

d’exécution, c’est à dire :

���� Créer un jeu d’essai de données sur l’IBM i (sur lequel baser nos exemples)

���� Créer une source de donnée ODBC (Client Access doit avoir été préalablement

installé)

���� Créer une procédure stockée (pour faire fonctionner les classeurs Excel N°4 et N° 5)

Pour cette étape, vous aurez la possibilité au choix de créer 3 procédures différentes :

o Procédure SQL,

o Procédure Externe RPG basée sur un tableau

o Procédure Externe RPG basée sur un curseur SQL

Page 3: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

Préparation de l’environnement

���� Création d’un jeu d’essai de données sur votre système

Pour préparer un jeu de données standard sur lequel nous allons appuyer nos exemples,

allez au choix : sous STRSQL ou sur l’exécution de script iSeries Navigator et tapez :

CALL CREATE_SQL_SAMPLE(‘JEUDESSAI’)

� DB2 est livré en standard avec une procédure stockée qui créé entre autre un fichier

EMPLOYEE dans le schéma (bibliothèque) passé en paramètre. Ainsi une bibliothèque

JEUDESSAI sera créée sur votre système que vous pourrez supprimer à la fin de ce tutorial.

Les données crées par cette procédure stockée ressemblent à ceci (organigramme de

Database Navigator)

Vue depuis l’Organigramme

Database Navigator dans

Systemi Navigator

Page 4: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

���� Création du driver ODBC

Allez dans le panneau de configuration Windows, puis Outils d’Administration afin de

configurer les sources de données ODBC ou tout simplement « Démarrer, Exécuter, ODBC ».

Ajoutez une nouvelle source de donnée, en choisissant "iSeries Access ODBC Driver" ou

éventuellement "Client Access ODBC Driver" (un peu moins rapide).

Nom de la source : « IBMi » et choisissez le système sur lequel vous voulez que ce driver

"pointe" (en sélectionnant votre serveur dans la liste proposée).

Dans l’onglet serveur, vous pouvez

éventuellement affecter une liste des

bibliothèques. Les noms de

bibliothèques peuvent être séparés par

des virgules ou des espaces.

Pour ajouter des bibliothèques à la liste

des bibliothèques utilisateur existante,

ajoutez *USRLIBL dans la liste des

bibliothèques.

Dans la convention d'appellation SQL, un point est inséré entre les noms de bibliothèque (schémas) et de fichier (tables).

Page 5: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

���� Création et Déclaration de la procédure stockée.

Cette étape n’est utile que pour tester les classeurs Excel N°4 et N°5 qui appellent une

procédure stockée sur l’IBM i (un programme RPG ou SQL).

Je vous propose de créer au choix l’une des 3 procédures ci-dessous.

Au préalable, créez un membre source SOURCES dans JEUDESSAI :

I. Procédure en SQL qui reçoit deux paramètres et renvoie un result-set.

Créez un nouveau membre ex : PROCEDURE1 dans JEUDESSAI/SOURCES avec le code

ci-dessous :

Puis lancer le script avec la commande ci-dessous :

DROP PROCEDURE JEUDESSAI.PROSTOCK; CREATE PROCEDURE JEUDESSAI.PROSTOCK ( IN SERVICE VARCHAR(3), IN SEXE VARCHAR(1) ) DYNAMIC RESULT SETS 1 LANGUAGE SQL NOT DETERMINISTIC BEGIN DECLARE C1 CURSOR WITH RETURN FOR SELECT WORKDEPT, EMPNO, FIRSTNME, LASTNAME, SEX, SALARY FROM JEUDESSAI . EMPLOYEE WHERE (WORKDEPT = SERVICE OR SERVICE = ' ') AND (SEX = SEXE OR SEXE = ' ') ORDER BY EMPNO ; OPEN C1 ; END ;

CRTSRCPF FILE(JEUDESSAI/SOURCES) RCDLEN(112)

STRSEU SRCFILE(JEUDESSAI/SOURCES) SRCMBR(PROCEDURE1) TYPE(SQL)

RUNSQLSTM SRCFILE(JEUDESSAI/SOURCES) SRCMBR(PROCEDURE1) COMMIT(*NONE) NAMING(*SQL) ERRLVL(20)

Page 6: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un

result-set.

Créez un nouveau membre ex : PROC2RPG dans JEUDESSAI/SOURCES avec le code

RPG ci-dessous :

h DftActGrp(*no) ActGrp(*caller)

H usrprf(*owner) AlwNull(*inputonly)

H option(*srcstmt : *nodebugio)

femployee if e disk extfile('JEUDESSAI/EMPLOYEE')

f rename (employee : empF)

f usropn

d Matrice ds Qualified Dim(999)

d Service 3

d Matricule 6

d Prenom 20 Varying

d Nom 20 Varying

d Sexe 1

d Salaire 11S 2

d i s 10i 0 inz(0)

*‚------------------------------------------------------------------------

*‚Paramètres de la procédure stockée ----

*‚------------------------------------------------------------------------

d $entry pr extpgm('PROC2RPG')

d 3 Varying

d 1 Varying

d $entry pi

d Parm1 3 Varying

d Parm2 1 Varying

//---------------------------------------------------------------

/free

Open Employee;

Reset i;

Read EmpF;

Dow i <= 999 and not %eof;

If ( Parm1 = WORKDEPT or Parm1 = *blanks )

and ( Parm2 = SEX or Parm2 = *blanks );

i += 1;

Matrice(i).Service = WORKDEPT;

Matrice(i).Matricule = EMPNO ;

Matrice(i).Prenom = FIRSTNME;

Matrice(i).Nom = LASTNAME;

Matrice(i).Sexe = SEX ;

Matrice(i).Salaire = SALARY ;

EndIf;

Read EmpF ;

EndDo;

Exec SQL

Set Result Sets ARRAY :Matrice FOR :i ROWS;

Close Employee;

return;

STRSEU SRCFILE(JEUDESSAI/SOURCES) SRCMBR(PROC2RPG) TYPE(SQLRPGLE)

Page 7: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

Compilez ce programme a l’aide de l’option 14 de PDM ou utilisez la commande ci-

après :

Il faut maintenant déclarer ce programme RPG en tant que procédure stockée dans

les références croisées DB2. Pour ce faire, créez un nouveau membre ex :

PROCEDURE2 dans JEUDESSAI/SOURCES avec le code ci-dessous :

Puis lancer le script avec la commande ci-dessous :

RUNSQLSTM SRCFILE(JEUDESSAI/SOURCES) SRCMBR(PROCEDURE2) COMMIT(*NONE) NAMING(*SQL) ERRLVL(20)

CRTSQLRPGI OBJ(JEUDESSAI/PROC2RPG) SRCFILE(JEUDESSAI/SOURCES) COMMIT(*NONE)

DROP PROCEDURE JEUDESSAI.PROSTOCK; CREATE PROCEDURE JEUDESSAI.PROSTOCK ( IN SERVICE VARCHAR(3), IN SEXE VARCHAR(1) ) RESULT SETS 1 LANGUAGE RPGLE NOT DETERMINISTIC CALLED ON NULL INPUT EXTERNAL NAME JEUDESSAI.PROC2RPG SPECIFIC PROSTOCK PARAMETER STYLE GENERAL;

STRSEU SRCFILE(JEUDESSAI/SOURCES) SRCMBR(PROCEDURE2) TYPE(SQL)

Page 8: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

III. Procédure Externe en RPG avec curseur SQL qui reçoit deux paramètres et renvoie

un result-set à partir d’une requête.

Créez un nouveau membre ex : PROC3RPG dans JEUDESSAI/SOURCES avec le code

RPG ci-dessous :

Compilez ce programme a l’aide de l’option 14 de PDM ou utilisez la commande ci-

après :

Il faut maintenant déclarer ce programme RPG en tant que procédure stockée dans

les références croisées DB2. Pour ce faire, créez un nouveau membre ex :

PROCEDURE3 dans JEUDESSAI/SOURCES avec le code ci-dessous :

h DftActGrp(*no) ActGrp(*caller)

H usrprf(*owner) AlwNull(*inputonly)

H option(*srcstmt : *nodebugio)

*‚------------------------------------------------------------------------

*‚Paramètres de la procédure stockée ----

*‚------------------------------------------------------------------------

d $entry pr extpgm('PROC3RPG')

d 3 Varying

d 1 Varying

d $entry pi

d Parm1 3 Varying

d Parm2 1 Varying

//---------------------------------------------------------------

/free

// On peut imaginer que ce RPG créé un fichier de travail

// et renvoie avec un SELECT * FROM QTEMP/.... ce fichier.

Exec SQL Set Option NAMING=*SQL, COMMIT=*NONE;

Exec SQL

Declare C1 cursor with return to client for

Select Workdept Service,

Empno Mat,

Lastname Nom,

Firstnme Prenom,

Sex Sexe,

Salary Salaire

From Jeudessai.Employee

Where (Workdept = :Parm1 or :Parm1 = ' ')

and ( Sex = :Parm2 or :Parm2 = ' ');

Exec SQL Close C1;

Exec SQL Open C1;

Exec SQL set result sets cursor C1;

return;

STRSEU SRCFILE(JEUDESSAI/SOURCES) SRCMBR(PROC3RPG) TYPE(SQLRPGLE)

CRTSQLRPGI OBJ(JEUDESSAI/PROC3RPG) SRCFILE(JEUDESSAI/SOURCES) COMMIT(*NONE)

Page 9: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

Puis lancer le script avec la commande ci-dessous :

RUNSQLSTM SRCFILE(JEUDESSAI/SOURCES) SRCMBR(PROCEDURE3) COMMIT(*NONE) NAMING(*SQL) ERRLVL(20)

DROP PROCEDURE JEUDESSAI.PROSTOCK; CREATE PROCEDURE JEUDESSAI.PROSTOCK ( IN SERVICE VARCHAR(3),

IN SEXE VARCHAR(1) ) RESULT SETS 1 LANGUAGE RPGLE NOT DETERMINISTIC CALLED ON NULL INPUT EXTERNAL NAME JEUDESSAI.PROC3RPG SPECIFIC PROSTOCK PARAMETER STYLE GENERAL;

STRSEU SRCFILE(JEUDESSAI/SOURCES) SRCMBR(PROCEDURE3) TYPE(SQL)

Page 10: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

Classeurs EXCEL

���� Excel_01_SQL Statique.xls

Dans cette feuille Excel, l’ordre SQL est statique. A l’ouverture de la feuille Excel, les données

sont réactualisées :

Pour visualiser ou modifier la requête, positionnez-vous sur le début de la plage de données

(ici B2) puis dans la barre de menu, choisissez l’onglet « Données », puis clic sur

« Connexion », « Propriétés » puis l’onglet « Définition ».

Dans la chaîne de connexion il suffit de renseigner le nom de « la source de données » et

dans le texte de la commande, la requête SQL désirée.

Cette technique n’offre que très peu d’avantages, en effet, l’utilisateur final doit connaître

SQL s’il désire extraire les données d’une façon sélective.

Page 11: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...
Page 12: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

���� Excel_02_SQL_Dynamique.xls

Dans ce classeur Excel, l’ordre SQL est Dynamique (il est fabriqué à la volée) et variera en

fonction du choix de l’utilisateur. A l’ouverture du classeur, on propose un simple formulaire

à l’utilisateur pour faire deux choix : le choix du sexe et du service à extraire.

Ces listes déroulantes sont alimentées à partir des données de l’IBM i. Ainsi, derrière chaque

liste, une requête SQL a été paramétrée.

Il y aura donc 3 requêtes distinctes dans ce classeur :

A l’ouverture du classeur, le formulaire ci-dessus s’affiche :

Private Sub Workbook_Open()

Formulaire.Show

End Sub

Puis à l’initialisation de ce formulaire ( Private Sub UserForm_Initialize() ) les deux requêtes

ci-dessous sont lancées :

1. Select Distinct sex from Employee

2. Select Deptno, Deptname from Department

DEMANDE L'ACTIVATION DU COMPOSANT MICROSOFT ACTIVEX DATA OBJECT 2.7 ou 2.8 LIBRARY, DEPUIS

MENU "OUTILS" - "RÉFÉRENCES" DE L'ÉDITEUR VISUAL BASIC

Page 13: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

La requête SQL est fabriquée dynamiquement en fonction des choix de l’utilisateur :

3. Select * from Employee Where 1=1 and Sex = …. and Workdept = …..

Cette technique demande un minimum de connaissance en développement VBA en plus de

SQL. De plus, il faudra maintenir le code de ces classeurs Excel en fonction des désidératas

des différents utilisateurs.

Page 14: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

���� Excel_03_SQL_MSQUERY.xls : MS QUERY et Paramètres

Si, lors de l’installation d’Office, vous avez aussi installé MS QUERY, vous pourrez exécuter

des requêtes Query basées sur le contenu de cellules Excel comme dans l’exemple ci-

dessous.

Il suffit de modifier le contenu de la cellule B3 pour voir s’actualiser notre feuille avec tous les

employés étant dans le service sélectionné.

Etapes de mise en œuvre :

Dans l’onglet Données, positionnez-vous en B4 puis Autres Sources : Microsoft Query.

Page 15: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

Microsoft Query va vous proposer les tables, vues (logiques) de votre bibliothèque.

Dans notre exemple, nous allons choisir un LIKE (Commence Par)

Remarquez qu’il ne faut pas mettre le % du LIKE dans MS Query.

Nous pourrions choisir d’autres critères de sélection. Sinon passons aux critères de tri.

Page 16: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

Query ajoute en finalité le % du LIKE

dans la requête.

Page 17: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

Ce stade est le plus important, il s’agit de mettre en œuvre les paramètres.

Dans MS QUERY vous pourrez mettre des paramètres entre crochets [], ces derniers seront repris

dans Excel. Dans l’exemple ci-dessous nous avons remplacé Comme ‘D%’ par Comme [PARAM1]

A l’exécution, MS QUERY nous demandera de saisir la valeur du paramètre.

Puis renvoyez les données dans Excel (depuis le menu Fichier) et modifiez les propriétés de la

requête.

Page 18: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

Cliquez sur le bouton PARAMETRES.

Et cochez « Obtenir la valeur de la cellule suivante » en donnant les références de la cellule

concernée. Ne pas oublier de cocher « Actualiser automatiquement… ». Dès que cette cellule sera

modifiée, les données seront à nouveau extraites.

Page 19: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

���� Excel_04_SQL_Procedure.xls

Pour pouvoir utiliser ce classeur ainsi que le suivant, il vous faudra au préalable avoir réalisé

l’étape 3 des préparatifs, c’est-à-dire avoir créé et déclaré au moins une procédure stockée.

Ainsi, on appellera depuis Excel soit un programme SQL soit un programme RPG en lui

passant en paramètre certains choix de l’utilisateur.

Sur le même principe que le classeur N°2, ce travail se fera en VBA.

A l’ouverture du classeur, on propose un simple formulaire à l’utilisateur pour faire deux

choix : le choix du sexe et du service à extraire. Ces listes déroulantes sont alimentées à

partir des données de l’IBM i (derrière chaque liste, une requête SQL a été paramétrée).

Après avoir choisi les critères de sélection, on appelle la procédure stockée en lui passant en

paramètre les valeurs saisies. Côté IBM i c’est notre programme RPG ou SQL qui est appelé

et qui va renvoyer un RESULT-SET en mémoire.

Le but de ce tutorial n’est pas d’expliquer comment utiliser OLE DB en VBA, il y a de

nombreux forums sur le sujet.

Page 20: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

���� Excel_05_Procedure_MSQUERY.xls

Pour pouvoir utiliser ce classeur, il vous faudra au préalable avoir réalisé l’étape 3 des

préparatifs, c’est-à-dire avoir créé et déclaré au moins une procédure stockée.

Si, lors de l’installation d’Office, vous avez aussi installé MS QUERY, vous pourrez appeler

des programmes RPG ou SQL (procédures stockées) en leur passant en paramètre le contenu

de cellules Excel. A chaque modification de la cellule, le programme est appelé à nouveau,

les données sont rafraîchies comme montré dans l’exemple ci-dessous.

Dans cet exemple, dès que l’on modifie l’une des cellules jaunes, le programme RPG ou SQL

est appelé, les données sont réactualisées. Il n’y a aucun code VBA.

Page 21: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

Procédons étape par étape comme pour le classeur N°3.

Puis sélectionnez n’importe quelle table, ça n’a pas d’importance. Ce que nous cherchons ici,

c’est la possibilité de créer deux paramètres dans Excel, deux paramètres de type

Alphabétique. Car, pour obtenir la possibilité dans Excel d’avoir des paramètres, à ma

connaissance, il faut passer par MS QUERY.

Page 22: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

Voici nos deux paramètres créés qui seront utilisables dans Excel.

Ma procédure stockée attend deux paramètres alpha. Je créés donc 2 paramètres dans MS

QUERY de type alphanumérique.

Page 23: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...
Page 24: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

Dans cet exemple nous avons appelé une procédure stockée, mais pour les connaisseurs de

SQL on pourrait imaginer qu’il s’agisse aussi d’une UDTF.

On peut aussi s’appuyer sur des RPGs qui feraient appel à des APIs.

Page 25: EXCEL et L’IBM i - lescahiersdelibmi.fr · II. Procédure Externe en RPG avec tableau qui reçoit deux paramètres et renvoie un result-set. Créez un nouveau membre ex : ...

���� Excel_06_SQL_BLOB.xls

DB2 UDB accepte les champs BLOB (binaires) qui peuvent être des photos, mp3, vidéos etc..

Dans cette feuille Excel, les lignes DB2 sont lues une à une à partir d’une requête SQL en

VBA.

La table JEUDESSAI.emp_photo contient des BLOBs. Ils sont chargés dans le répertoire

temporaire de Windows.