Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1
    Membre actif
    Inscrit en
    juin 2006
    Messages
    592
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 592
    Points : 150
    Points
    150

    Par défaut Problème requête sql champ DATE

    Bonjour,

    Voici la requête:

    Code :
    1
    2
    3
    4
    5
    6
    7
     
     Dim str_requete As String = "SELECT a.NADM,a.NDL,c.CSVL,c.NSEJ,c.DPRV, pbname, pbdob, cana, rana, dres, cdca, cdrs, cdip " & _
                                        "FROM FLABO.SDLM c, FLABO.RAL a, MEDCPOF.SPTML0 d " & _
                                        "WHERE DPRV BETWEEN '01/06/12' AND '15/06/12' AND a.ndl=c.ndl AND cana " & _
                                        "IN ('CA', 'SP', 'ALB', 'CO2', 'PTHL', 'HB', 'TPRO', '1088G', 'HC', 'DEB24', 'CRE24', 'B2MIC') AND " & _
                                        "EXISTS (SELECT * FROM FLABO.RAL b WHERE c.ndl=b.ndl AND cana IN ('BMPRE', 'BAPRE', 'BTPRE', 'BSPRE')) " & _
                                        "AND a.nadm=d.nadm AND rana NOT IN ('99999999','NR')"
    Mon message d'erreur:

    Code :
    1
    2
    3
     
    SQL0180: La syntaxe de la valeur de date, d'heure ou d'horodatage est incorrecte.
    Cause . . . . . :   La chaîne représentant une valeur de date, d'heure ou d'horodatage n'est pas conforme à la syntaxe applicable au format et au type de données implicites ou spécifiés. *N est soit la constante (chaîne de caractères) incorrecte, soit la variable hôte ou la colonne qui contient cette chaîne. Si le nom est *N, la valeur est une expression indiquée dans l'instruction. Si la chaîne a été trouvée dans une variable hôte, celle-ci porte le numéro 1. Que faire . . . :   Assurez-vous que la valeur de date, d'heure ou d'horodatage est conforme à la syntaxe applicable au type de données qu'elle représente. Renouvelez ensuite la demande.
    je me connecte a une base de donnée DB2.

    C'est le between BETWEEN '01/06/12' AND '15/06/12' qui pose problème pourtant dans la DB c'est bien un champ de type date sous forme dd/mm/YY

    Que faire ?

    D'avance merci

  2. #2
    Expert Confirmé Sénior Avatar de Graffito
    Inscrit en
    janvier 2006
    Messages
    5 790
    Détails du profil
    Informations forums :
    Inscription : janvier 2006
    Messages : 5 790
    Points : 6 676
    Points
    6 676

    Par défaut

    Que faire ?
    Utiliser les requètes paramérées.
    Voir : http://johannblais.developpez.com/tu...acces-donnees/
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre actif
    Inscrit en
    juin 2006
    Messages
    592
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 592
    Points : 150
    Points
    150

    Par défaut

    Merci de ton aide graffito mais ma requête fonctionne dans mon client AS400 je voudrais comprendre ici la différence ya des adaptations mais la je ne vois pas ?

    Y aurait pas des ♯ en plus a mettre ??

  4. #4
    Expert Confirmé Sénior Avatar de Graffito
    Inscrit en
    janvier 2006
    Messages
    5 790
    Détails du profil
    Informations forums :
    Inscription : janvier 2006
    Messages : 5 790
    Points : 6 676
    Points
    6 676

    Par défaut

    c'est bien un champ de type date sous forme dd/mm/YY
    En es-tu bien sûr ? Les formats standard sont:
    - USA : mm/dd/yyyy
    - ISO : yyyy-mm-dd
    - EUR : dd.mm.yyyy
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Membre actif
    Inscrit en
    juin 2006
    Messages
    592
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 592
    Points : 150
    Points
    150

    Par défaut

    Oui je suis sûr du format: la requête me retourne un résultat quand je l'execute dans l'environnement AS400

  6. #6
    Membre habitué
    Homme Profil pro Pierre-Marie Westeel
    Inscrit en
    juin 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Nom : Homme Pierre-Marie Westeel
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : juin 2012
    Messages : 133
    Points : 124
    Points
    124

    Par défaut

    Citation Envoyé par jacko842 Voir le message
    Oui je suis sûr du format: la requête me retourne un résultat quand je l'execute dans l'environnement AS400
    je peux dire une betise ?
    Ne faut il pas une commande comme todate(01/01/12,dd/mm/yy) pour qu'il comprenne ?

  7. #7
    Membre actif
    Inscrit en
    juin 2006
    Messages
    592
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 592
    Points : 150
    Points
    150

    Par défaut

    J'ai essayé ceci:

    Code :
    1
    2
    3
    4
    5
    6
    7
     
            Dim str_requete As String = "SELECT a.NADM,a.NDL,c.CSVL,c.NSEJ,c.DPRV, pbname, pbdob, cana, rana, dres, cdca, cdrs, cdip " & _
                                        "FROM FLABO.SDLM c, FLABO.RAL a, MEDCPOF.SPTML0 d " & _
                                        "WHERE DPRV BETWEEN " & "'" & Format(dte_date1, "dd/MM/yy") & "' AND " & "'" & Format(dte_date2, "dd/MM/yy") & "' AND a.ndl=c.ndl AND cana " & _
                                        "IN ('CA', 'SP', 'ALB', 'CO2', 'PTHL', 'HB', 'TPRO', '1088G', 'HC', 'DEB24', 'CRE24', 'B2MIC') AND " & _
                                        "EXISTS (SELECT * FROM FLABO.RAL b WHERE c.ndl=b.ndl AND cana IN ('BMPRE', 'BAPRE', 'BTPRE', 'BSPRE')) " & _
                                        "AND a.nadm=d.nadm AND rana NOT IN ('99999999','NR')"
    mais sans succès

    Message d'erreur:

    Code :
    1
    2
    3
     
    SQL0180: La syntaxe de la valeur de date, d'heure ou d'horodatage est incorrecte.
    Cause . . . . . :   La chaîne représentant une valeur de date, d'heure ou d'horodatage n'est pas conforme à la syntaxe applicable au format et au type de données implicites ou spécifiés. *N est soit la constante (chaîne de caractères) incorrecte, soit la variable hôte ou la colonne qui contient cette chaîne. Si le nom est *N, la valeur est une expression indiquée dans l'instruction. Si la chaîne a été trouvée dans une variable hôte, celle-ci porte le numéro 1. Que faire . . . :   Assurez-vous que la valeur de date, d'heure ou d'horodatage est conforme à la syntaxe applicable au type de données qu'elle représente. Renouvelez ensuite la demande.

  8. #8
    Membre actif
    Inscrit en
    juin 2006
    Messages
    592
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 592
    Points : 150
    Points
    150

    Par défaut

    Si je fais juste

    Code :
    1
    2
    3
     
     
    Dim str_requete As String = "select dprv from flabo.sdlm where dprv='01/06/2012'"
    Il me sort un résultat sous forme 2012-01-06 ????????

  9. #9
    Membre actif
    Inscrit en
    juin 2006
    Messages
    592
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 592
    Points : 150
    Points
    150

    Par défaut

    Okkkkkkkkk c'était le format

    2012-06-01

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •