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

Requêtes et SQL. Discussion :

Erreur d'éxécution requête via lien ODBC


Sujet :

Requêtes et SQL.

  1. #1
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 799
    Points
    799
    Par défaut Erreur d'éxécution requête via lien ODBC
    Bonjour,Bonsoir,

    Travaillant avec un système IBM nommé "AS 400", j'ai pu me dégotté "Client Access" qui me permets de récupérer les fichiers AS 400 dans ma Bd Access.(via tables liées)

    Ma problématique:

    Lorsque je veux créer une requête contenant des champs avec fonction(=Ajout de champ calculé),(EX:Somme(MonChamp)),cette dernière me génère un message d'erreur m'expliquant en gros qu'il y a une erreur liée à mon lien ODBC.

    Résultat:Je suis actuellement contraint de créer une requête d'extraction pour repporter mes données dans une table temporaire afin de créer mes différentes requêtes et dans ce cas : Pas de problème !!!
    => Ce qui n'est pas cool (Pourquoi passer par une étape qui pourrait être évitée ?)
    Avis aux spécialistes:Avez vous des idées pour m'expliquer pourquoi ce problème est généré ?

    Dispo à vos lumières.

    Merci à nos génies.

    Stéphane (c'est mieux qu'un numéro mais c'est le seul que je retiens)

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Points : 1 041
    Points
    1 041
    Par défaut
    Bonjour,
    c'est peut etre idiot ce que je vais dire mais si tu écris Somme(Cha ... tu écrit en langage ACCESS alors que pour que l'AS400 comprenne il faut qu'il ai exactement le bon texte SQL . déja peut etre qu'en faisant ta requete en Anglais avec SUM ça pourrait fonctionner.

    Bon courage.

  3. #3
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 799
    Points
    799
    Par défaut
    Bonne idée...........MAIS..........NON...

    Je vais être plus précis:

    J'ai un champ ("Date1") exprimant une date qui,au lieu de me donner (au pire) 24082006, me donne 20060824.

    Mon idée première fut de créer un nouveau champ "date2" dans ma requête avec pour instruction Date2:Extracchaîne([Date1];7;2) & Extracchaîne([Date1];5;2) & Extracchaîne([Date1];1;4) afin de me donner mon voeux premier 24082006.

    Et c'est LA que le message d'erreur survient !!!!

    Le fait de passer par une étape intermédiaire (cf.: Post précédent) me résoud mon problème.

    MAIS POURQUOI ?!?!?!?!?!?! .......

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Points : 1 041
    Points
    1 041
    Par défaut
    bonjour,
    est ce que tu as regardé comment écrire la requète en langage AS400? Pourrais tu écrire directement la requète qui fonctionne et celle qui te pose problème?

  5. #5
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 799
    Points
    799
    Par défaut
    Je n'est pas les droits pour créer des requêtes sur AS400.

    C'est la raison pour laquelle,je me sers de "Client Access" qui me permets d'accéder directement aux fichiers sources.

    Et dès lors je peux créer mes requêtes dans Ms Access

  6. #6
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    En créant une requête Access type 'SQL Direct' tu dois pouvoir l'écrire dans le SQL natif du SGDB AS/400.

    Moi ça fonctionne avec le driver ODBC pour MySQL.
    Je peux mettre des instructions spécifiques à MySQL que Access ne connaît pas.


    A+

  7. #7
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 799
    Points
    799
    Par défaut
    Salut LedZeppII,

    Qu'entends tu par:

    tu dois pouvoir l'écrire dans le SQL natif du SGDB AS/400

  8. #8
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut Re:Qu'entends tu
    Bonsoir,

    Je veux dire que d'un SGBD à l'autre il y a des petites variantes dans le SQL.
    SQL Server, Oracle, ou MySQL par exemple n'ont pas exactement le même jeux de fonctions.
    Donc par SQL natif, j'entends le SQL que le SGBD de l'AS/400 comprend naturellement.

    A+

  9. #9
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 799
    Points
    799
    Par défaut
    Salut LedZeppII,

    Merci pour ta réponse.

    Si j'ai bien saisi,tu laisses entendre que pour la création de mon nouveau champ je devrai utiliser le langage AS 400?

    Ce qui voudrai dire que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Date2:Extracchaîne([Date1];7;2) & 
    Extracchaîne([Date1];5;2) & Extracchaîne([Date1];1;4)
    et son équivallent AS 400:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Substr(Champ, 7, 2)!!substr(Champ, 5, 2)!!substr(Champ, 1, 4)
    fonctionnerait dans Access?

  10. #10
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Oui, c'est ce que je crois.
    Pour cela il faut une requête type 'SQL Direct'.
    Tu crée une nouvelle requête sans ajouter de table.
    Depuis le menu principal : Requête -> Spécifique SQL -> SQL Direct
    Ensuite il faut définir la châne de connection ODBC dans les propriétés.
    Puisque tu as déjà des tables liées, exécute cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT Connect, ForeignName, Name
    FROM MSysObjects WHERE type=4
    copie et colle le contenu de la colonne Connect après "ODBC;"
    dans la propriété 'Chaîne connexion ODBC' de la requête SQL Direct.

    Ex Connect MySQL : DATABASE=test;DSN=MySQL_DB;OPTION=0;PORT=0;SERVER=localhost;
    -> ODBC;DATABASE=test;DSN=MySQL_DB;OPTION=0;PORT=0;SERVER=localhost;

    C'est sans garanties mais ça vaut peut-être le coup d'essayer.

    Un lien sur SQL AS/400 : DB2 for AS/400 (au cas où ça pourrait servir)

    A+

  11. #11
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 799
    Points
    799
    Par défaut
    Salut LedzeppII,

    Premièrement,merci.........car tu t'interresses à mon problème.(Ton lien interressant)

    En revanche :

    Depuis le menu principal : Requête -> Spécifique SQL -> SQL Direct
    Ensuite il faut définir la chaîne de connection ODBC dans les propriétés.
    Puisque tu as déjà des tables liées, exécute cette requête
    Code:
    SELECT Connect, ForeignName, Name
    FROM MSysObjects WHERE type=4
    copie et colle le contenu de la colonne Connect après "ODBC;"
    dans la propriété 'Chaîne connexion ODBC' de la requête SQL Direct.

    Ex Connect MySQL : DATABASE=test;DSN=MySQL_DB;OPTION=0;PORT=0;SERVER=localhost;
    -> ODBC;DATABASE=test;DSN=MySQL_DB;OPTION=0;PORT=0;SERVER=localhost;
    Lorsque je te lis tu me parles d'une procédure (à priori interne à MS Acces).

    OR !!!

    "Client Access" n'est ni plus ni moins qu'un moyen de communiquer entre applications Microsoft (voire p-ê plus).

    DONC !!! actuellement mon problème se situe au niveau d'une création de champ.

    Peu importe que je puisse créer une requête SQL au sein du système AS 400 (de toute façon je n'en ai pas les droits)
    le problème réside par un problème qui me parraissait "simple".

    Puisque tu as déjà des tables liées, exécute cette requête
    A quel moment j'ai sous-entendu ceci ?????
    (Je suis directement lié aux fichiers sources)
    Dans la pratique,"Client Access" (grosso merdo) mâche tout le travail.

    Ex.:Quel bibliothèque vous interresse,...quel fichier ????

    Résumé:

    Je veux créer une Bd Access avec des tables liées sur AS 400:

    1°.J'essaie d'avoir "Client Access".
    2°.Je l'installe.
    3°.Je crée une nouvelle Bd.
    4°.Je fais "Fichier,Données externes,Lier les tables


    ========> Ca y est c'est fait !!!!!!!!!!!!!!!!!!!!!!!!

  12. #12
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Citation Envoyé par ft035580
    Citation Envoyé par LedZeppII
    Puisque tu as déjà des tables liées, exécute cette requête
    A quel moment j'ai sous-entendu ceci ?????
    La je ne comprends plus rien.
    Je croyais qu'après avoir installé 'Client Access' tu avais lié des tables (dans MS-Access) via ODBC.

    J'ai bien peur de ne pouvoir être d'aucune utilité.
    On a bien eu un AS/400 il y a plus de sept ans, avec 'Client Access' pour que les PCs en réseaux puissent se
    connecter à celui-ci, mais je ne faisait pas d'informatique à cette époque.

    Bonne chance et bon courage pour la suite.

  13. #13
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 799
    Points
    799
    Par défaut
    Je croyais qu'après avoir installé 'Client Access' tu avais lié des tables (dans MS-Access) via ODBC.
    Tout à fait.

    Le problème:

    Lorsque je veux créer une requête contenant des champs avec fonction(=Ajout de champ calculé),(EX:Somme(MonChamp)),cette dernière me génère un message d'erreur m'expliquant en gros qu'il y a une erreur liée à mon lien ODBC.

    Résultat:Je suis actuellement contraint de créer une requête d'extraction pour repporter mes données dans une table temporaire afin de créer mes différentes requêtes et dans ce cas : Pas de problème !!!
    => Ce qui n'est pas cool (Pourquoi passer par une étape qui pourrait être évitée ?)
    Je ne vois pas comment être plus explicite.

    Merci quand même LedZeppII

Discussions similaires

  1. [ODBC] Probleme d'éxécution query sur AS400 via lien ODBC
    Par kamnouz dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 01/06/2011, 16h30
  2. [AC-2007] Copier une BDD rapidement via lien ODBC
    Par greg360 dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/12/2010, 15h41
  3. [AC-2003] Problème affichage via lien ODBC
    Par sabwina dans le forum Access
    Réponses: 6
    Dernier message: 24/11/2009, 17h23
  4. controle Excel via Access erreur d'éxécution
    Par darkspoilt dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/06/2007, 10h29
  5. [Etat][Requête] Erreur d'éxécution '3364'
    Par Optimus dans le forum IHM
    Réponses: 2
    Dernier message: 05/01/2006, 14h24

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