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

VB.NET Discussion :

Requete sql sur Bib AS400


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Exploitant
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Exploitant

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Par défaut Requete sql sur Bib AS400
    Bonjour,

    je fais un programme en vb.net 2003 pour extraire la dernière log du batch sur un AS400 (V5R4), pour cela il me faut prendre le bon QHST***.
    Donc je crée un connexion avec ODBC puis je fais ma requete pour la mettre dans un datagrid, histoire d'avoir un visuel et c est la que ca coince...

    ma requete SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    da1 = New OdbcDataAdapter("SELECT LAST_ALTERED_TIMESTAMP, TABLE_NAME FROM QSYS2.SYSTABLES WHERE TABLE_NAME LIKE 'QHST%' and LAST_ALTERED_TIMESTAMP >= 20120417 ", conn)
    plantage... :
    opérande de l'opérateur incompatible
    que je mette <= ou = ou >= ca plante.
    Je suppose que c est une histoire de conversion de date entre l'Os400 et VB mais je sèche, quelqu'un à déja rencontré ce problème ?

    Ps : si je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "SELECT LAST_ALTERED_TIMESTAMP, TABLE_NAME FROM QSYS2.SYSTABLES WHERE TABLE_NAME LIKE 'QHST%'"
    le programme fonctionne tres bien.

    Merci d'avance.

    En espérant qu je suis dans le bon forum...

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Deux solutions:
    - Utiliser un paramètre SQL pour passer la valeur du timestamp.
    - Essayer de mettre la valeur du timestamp entre simple quotes : '

    La première solution est plus efficace et plus propre
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bonjour,


    Citation Envoyé par Magdel Voir le message
    Je suppose que c est une histoire de conversion de date entre l'Os400 et VB mais je sèche, quelqu'un à déja rencontré ce problème ?
    Tu ne fais pas de conversion de date ici; tu compares une date à un entier, ça ne peut pas fonctionner : 20120417 c'est un nombre dans tous les cas; si c'était la chaine '20120417', alors là, ça pourrait éventuellement être considéré comme une date, avec un format spécifique.

    Pour la correction, SaumonAgile t'a fournit la solution.

  4. #4
    Membre averti
    Homme Profil pro
    Exploitant
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Exploitant

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Par défaut
    Merci de vous pencher sur mon cas.

    Alors je viens de tester avec ' et j ai comme message :

    Error[22008][IBM][Pilote ODBC ISeries Access][DB2 UDB]SQL0180 - La syntaxe de la valeur de date, d'heure ou d'horodatage est incorrecte.
    et pour :

    Utiliser un paramètre SQL pour passer la valeur du timestamp.
    Pourrais tu développer un peu car je ne vois pas ce que je dois faire..

    Merci encore.

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par Magdel Voir le message
    Pourrais tu développer un peu car je ne vois pas ce que je dois faire..

    Merci encore.
    L'idée est de remplacer la valeur du timestamp par un ? et de passer sa valeur sous forme d'un OdbcParameter:
    http://support.microsoft.com/kb/310130
    http://it.toolbox.com/blogs/coding-d...ing-odbc-15954
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Membre averti
    Homme Profil pro
    Exploitant
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Exploitant

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Par défaut
    Merci bien pour l'info, je regarde de suite.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 6
    Par défaut
    Bonjour,

    Le type timestamp peut avoir des séparateurs différents en fonction du paramétrage de l'AS400, il faut respecter le format défini dans votre requête SQL et ça devrait aller. Le format date par défaut est en ISO sur un AS400 : AAAA-MM-JJ

Discussions similaires

  1. Requete SQL sur le resultat d'un autre Requete SQL
    Par Redsky dans le forum Bases de données
    Réponses: 8
    Dernier message: 02/08/2005, 11h55
  2. Requete SQL sur table dbase et date du jour
    Par Jean-François PETIT dans le forum Bases de données
    Réponses: 5
    Dernier message: 29/03/2005, 09h31
  3. Ecrire une requete SQL sur plusieurs lignes
    Par PrinceMaster77 dans le forum ASP
    Réponses: 2
    Dernier message: 15/11/2004, 14h47
  4. requete sql sur un grand nombre d enregistrement
    Par marielaure dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/08/2004, 11h53
  5. Réponses: 2
    Dernier message: 03/05/2004, 12h13

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