Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
est il possible de mettre dans un champ lord du load le nom de la table loadée?
Merci
Sébastien
Bonjour
Ok je comprends mieux ; j'ai un bout de script qui fait çà pour une de mes app ; a adapter suivant ton besoin :
// j'ai une connexion ODBC sur un fichier excel
LIB CONNECT TO 'NOM_CONNXION_ODBC';
//script pour récupérer nom des onglets
XlsInfo:
SQLTables;
DISCONNECT;
let var=NoOfRows('XlsInfo');
// Pour chaque feuille du classeur
FOR i = 0 to $(var)-1
// sheetName = nom de la feuille
let sheetName=subfield(peek('TABLE_NAME', i,'XlsInfo'),'$',1);
MyTable:
'$(sheetName)' as nom_onglet,
etc,
from ...
DROP Table XlsInfo;
Bonjour
Oui possible avec la fonction TableName() :
voir cette exemple qui devrait t'aider :
//Iterate through the loaded tables
For t = 0 to NoOfTables() - 1
//Iterate through the fields of table
For f = 1 to NoOfFields(TableName($(t)))
Tables:
Load TableName($(t)) as Table,
TableNumber(TableName($(t))) as TableNo,
NoOfRows(TableName($(t))) as TableRows,
FieldName($(f),
TableName($(t))) as Field,
FieldNumber(FieldName($(f),
TableName($(t))),
TableName($(t))) as FieldNo
Autogenerate 1;
Next f
Next t;
Merci mais je parlais du nom de l'onglet du tableau excel que je charge. J'ai besoin de récupérer le nom de cette onglet et le mettre dans mon chargement
nom de l'onglet as table_name?
Comme ça ne change pas vraiment, vous savez le coder dans le script de chaque table voulue.
Si jamais vous travaillez avec de variables dans le nom, vous copiez ça aussi.
e.g nom_de_longlet_$(date) as table_name;
Bonjour
Ok je comprends mieux ; j'ai un bout de script qui fait çà pour une de mes app ; a adapter suivant ton besoin :
// j'ai une connexion ODBC sur un fichier excel
LIB CONNECT TO 'NOM_CONNXION_ODBC';
//script pour récupérer nom des onglets
XlsInfo:
SQLTables;
DISCONNECT;
let var=NoOfRows('XlsInfo');
// Pour chaque feuille du classeur
FOR i = 0 to $(var)-1
// sheetName = nom de la feuille
let sheetName=subfield(peek('TABLE_NAME', i,'XlsInfo'),'$',1);
MyTable:
'$(sheetName)' as nom_onglet,
etc,
from ...
DROP Table XlsInfo;
et si ca change. Et je voudrais charger tous les onglets et je ne sais pas nécessairement le nom de l'onglet.
Est-ce possible? Il faut toujours indiquer le nom de l'onglet dans le load-statement, sinon le programme ne retrouvera rien.
Si c'est une table qui existe déjà, là je comprends, mais alors vous n'avez plus d'onglets...
Bonjour,
Voici le script qui va faire ce dont vous avez besoin.
// connexion au fichier excel via un driver ODBC à paramétrer au préalable dans votre panneau de configuration
ODBC CONNECT TO ;
// création d'une table Qlikview contenant toutes les définitions du fichier excel, dotn la liste des onglets dans la table TABLE_NAME
metadonnees:
sqltables;
// variables compteurs
let i=;
let vNbOnglets=NoOfRows('metadonnees')-1;
//création d'un moule de table vide qui va contenir les données des onglets
data:
load null()as champ1,null() as champ2 autogenerate 1;
// parcours de la table des métadonnées pour pouvoir récupérer les noms d'onglet un par un
for i=0 to $(vNbOnglets);
let vNomOnglet=peek('TABLE_NAME',$(i),'metadonnees');
//trace $(vNomOnglet);
//ODBC CONNECT TO ;
// ajout des enregistrements récupérés dans chaque onglet à la table data
// remarquer le nom de l'onglet passé dans une variable
concatenate (data)
data:
load champ1,champ2;
SQL SELECT champ1,champ2
FROM `C:\Temp\fichier excel.xlsx`.`$(vNomOnglet)`;
//
Merci tout marche bien.
Bonne fin de journée
Sébastien