IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AS/400 Discussion :

Accès tables d'une LIB via ODBC


Sujet :

AS/400

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 63
    Points : 35
    Points
    35
    Par défaut Accès tables d'une LIB via ODBC
    Bonjour à tous,

    Je travaille avec la base de données d'un AS400 via ODBC, depuis Windows. J'ai des requêtes SQL de sélection à faire sur différentes tables de l'AS400. Les tables se trouvent toutes dans une seule librairie.

    Mon problème est que je n'arrive pas à accéder à une des tables de la lib. Je reçois un message d'erreur ODBC... Comme si la table n'existait pas dans cette librairie. Pourtant, si je refais la même requête SQL via l'émulateur avec la commande STRSQL, ça fonctionne parfaitement. Pour le reste, j'arrive parfaitement à accéder aux tables soit via ODBC soit via STRSQL.

    J'utilise le driver MSDASQL avec la connexion string suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'DRIVER=iSeries Access ODBC Driver;
                   SYSTEM=ERP07;
                   DBQ=QGPL;
                   DFTPKGLIB=QGPL;
                   LANGUAGEID=ENU;
                   PKG=QGPL/DEFAULT(IBM),2,0,1,0,512;
                   XDYNAMIC=0;
                   TRANSLATE=1;
                   SIGNON=1;
                   Uid=QSECOFR;
                   Pwd=MONCODE;'
    Je ne comprends pas pourquoi ça marche avec certaines tables et pas d'autres... Je me connecte à ODBC en tant que QSECOFR pour tester.
    il y a peut-être un paramètre spécial à définir sur les tables pour qu'elles puissent être visible via ODBC ???

    Merci de votre aide,

    Cordialement,

    Nico

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Peut tu nous donner le message d'erreur ODBC ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 63
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    oui, voici le message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    OLE DB error trace [Non-interface error:  OLE/DB provider returned an invalid schema definition.].
    Msg*7317, Niveau*16, État*1, Ligne*2
    OLE DB provider 'MSDASQL' returned an invalid schema definition.
    pas terrible comme message...
    J'ai l'impression que ODBC ne trouve pas la table dans le schéma.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 691
    Points : 996
    Points
    996
    Par défaut
    Tu as peut être un pilote qui n'est pas à jour.
    Quelle est la version d'OS sur le serveur et la version d'iSeries Access utilisée ?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Le message vient de MSDASQL, le driver ODBC de Microsoft qui reçoit une définition invalide de la bibliothèque.
    Comme toutes tes tables sont dans la même bibliothèque, je ne pense pas qu'il s'agisse de la définition de la bibliothèque (le schéma) mais celle de la table.
    La table est trouvée, mais la définition renvoyée n'est pas appréciée par ton driver ODBC. Vérifie le type de la table qui te pose problème (fichier PF ou LF plutôt que table SQL par exemple).

    Je ne connais pas MSDASQL, donc je ne peux t'aider plus. Désolé.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 63
    Points : 35
    Points
    35
    Par défaut
    Merci pour votre aide.

    Côté AS400 : je suis en V6R1.

    Côté Windows : je suis sur un Windows 2003 SP2 Français sur lequel est installé le System i navigator 6.1, l'émulateur console, les drivers odbc, ole-db,...

    Dans odbcad32.exe, je dispose différents drivers :
    • "iSeries Access" version 12.00.06.00;
    • "Client Access ODBC 32 Driver" version 12.00.06.00.


    Dans MS SQL Server (que j'utilise), j'ai le choix entre :
    • "IBM DB2 fo i5/OS IBMDASQL OLE DB Provider";
    • "IBM DB2 fo i5/OS IBMDA400 OLE DB Provider";
    • "IBM DB2 fo i5/OS IBMDARLA OLE DB Provider";



    En interrogeant QSYS2.SYSTABLES, je consulte les paramètres d'une table qui me cause problème : ARTIC. Ensuite, je compare le résultat à une autre table qui fonctionne parfaitement. Et malheureusement, c'est exactement la même chose.

    Exemple de ma table ARTIC qui me cause problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    TABLE_NAME	:	ARTIC
    TABLE_OWNER	:	QSECOFR
    TABLE_TYPE	:	P
    COLUMN_COUNT	:	28
    ROW_LENGTH	:	204
    TABLE_TEXT	:	ARTICLES                                        A 
    LONG_COMMENT	:	NULL
    TABLE_SCHEMA	:	GIAM01
    LAST_ALTERED_TIMESTAMP	:	2011-10-03 15:25:03.750
    SYSTEM_TABLE_NAME	:	ARTIC     
    SYSTEM_TABLE_SCHEMA	:	GIAM01    
    FILE_TYPE	:	D
    BASE_TABLE_SCHEMA	:	NULL
    BASE_TABLE_NAME	:	NULL
    BASE_TABLE_MEMBER	:	NULL
    SYSTEM_TABLE	:	N
    SELECT_OMIT	:	N
    IS_INSERTABLE_INTO	:	YES
    IASP_NUMBER	:	0
    ENABLED	:	NULL
    MAINTENANCE	:	NULL
    REFRESH	:	NULL
    REFRESH_TIME	:	NULL
    MQT_DEFINITION	:	NULL
    ISOLATION	:	NULL
    PARTITION_TABLE	:	NO
    TABLE_DEFINER	:	
    MQT_RESTORE_DEFERRED	:	NULL
    ROUNDING_MODE	:	NULL
    Exemple de ma table ZONGEO qui fonctionne parfaitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    TABLE_NAME	:	ZONGEO
    TABLE_OWNER	:	QSECOFR
    TABLE_TYPE	:	P
    COLUMN_COUNT	:	4
    ROW_LENGTH	:	34
    TABLE_TEXT	:	Zones géographiques                              S
    LONG_COMMENT	:	NULL
    TABLE_SCHEMA	:	GIAM01
    LAST_ALTERED_TIMESTAMP	:	2011-10-03 15:25:04.970
    SYSTEM_TABLE_NAME	:	ZONGEO    
    SYSTEM_TABLE_SCHEMA	:	GIAM01    
    FILE_TYPE	:	D
    BASE_TABLE_SCHEMA	:	NULL
    BASE_TABLE_NAME	:	NULL
    BASE_TABLE_MEMBER	:	NULL
    SYSTEM_TABLE	:	N
    SELECT_OMIT	:	N
    IS_INSERTABLE_INTO	:	YES
    IASP_NUMBER	:	0
    ENABLED	:	NULL
    MAINTENANCE	:	NULL
    REFRESH	:	NULL
    REFRESH_TIME	:	NULL
    MQT_DEFINITION	:	NULL
    ISOLATION	:	NULL
    PARTITION_TABLE	:	NO
    TABLE_DEFINER	:	
    MQT_RESTORE_DEFERRED	:	NULL
    ROUNDING_MODE	:	NULL
    Je crois comprendre qu'il s'agit de fichiers "Physical File". Est-ce un problème ?

    Je viens de faire un test avec le Driver IBMDASQL. J'ai su créer la connexion, mais je n'arrive pas a faire mes "select" sur la BD. Conseillez-vous d'utiliser un driver en particulier ?

    Merci,

    nico

  7. #7
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 691
    Points : 996
    Points
    996
    Par défaut
    Tu n'arrives pas à requêter la table parce que la syntaxe est peut être légèrement différente avec ce driver. Du genre "Bibliothèque/NomFichier" au lieu de "Bibliothèque.NomFichier".
    Personnellement j'utilise le driver IBMDA400.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 63
    Points : 35
    Points
    35
    Par défaut
    Bonjour à tous,

    voilà j'y arrive. En effet, c'est mon driver qui était mauvais.

    J'ai utilisé le driver IBMDASQL qui ne provoque plus l'erreur.

    Il faut effectivement bien faire attention à la façon d’appeler schéma, librairie et table.

    J'ai trouvé une documentation intéressante sur le sujet ici :

    http://publib-b.boulder.ibm.com/Redb.../sg245183.html

    Merci pour votre aide.
    Cordialement,

    nico

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Connexion à une BDD via ODBC
    Par skan_one dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/07/2009, 16h24
  2. Accès à des tables SAS v9.2 via ODBC
    Par ALLB dans le forum Administration et Installation
    Réponses: 2
    Dernier message: 06/05/2009, 14h21
  3. Connection à une base via ODBC
    Par sylvainlepetit dans le forum W4 Express
    Réponses: 12
    Dernier message: 25/06/2007, 13h09
  4. [SQLServer] Acces simultanés a une BD via ADO dans un dll
    Par corwin_d_ambre dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/11/2004, 15h52
  5. [ODBC][WINDOWS] gérer une base via ODBC
    Par narmataru dans le forum Windows
    Réponses: 2
    Dernier message: 19/12/2003, 13h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo