Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données > ADO.NET
ADO.NET Forum d'entraide sur le développement avec les services d'accès aux données disponibles avec ADO.NET.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 13/07/2012, 17h01   #1
jacko842
Membre habitué
 
Inscription : juin 2006
Messages : 557
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 557
Points : 145
Points : 145
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
jacko842 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2012, 21h50   #2
Graffito
Expert Confirmé Sénior
 
Avatar de Graffito
 
Inscription : janvier 2006
Messages : 5 424
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 5 424
Points : 6 109
Points : 6 109
Citation:
Que faire ?
Utiliser les requètes paramérées.
Voir : http://johannblais.developpez.com/tu...acces-donnees/
__________________
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson
Graffito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2012, 15h01   #3
jacko842
Membre habitué
 
Inscription : juin 2006
Messages : 557
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 557
Points : 145
Points : 145
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 ??
jacko842 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2012, 15h26   #4
Graffito
Expert Confirmé Sénior
 
Avatar de Graffito
 
Inscription : janvier 2006
Messages : 5 424
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 5 424
Points : 6 109
Points : 6 109
Citation:
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
Graffito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2012, 15h37   #5
jacko842
Membre habitué
 
Inscription : juin 2006
Messages : 557
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 557
Points : 145
Points : 145
Oui je suis sûr du format: la requête me retourne un résultat quand je l'execute dans l'environnement AS400
jacko842 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2012, 07h13   #6
Schim59
Membre régulier
 
Homme Pierre-Marie Westeel
Inscription : juin 2012
Messages : 101
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Marie Westeel
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : juin 2012
Messages : 101
Points : 98
Points : 98
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 ?
Schim59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2012, 09h17   #7
jacko842
Membre habitué
 
Inscription : juin 2006
Messages : 557
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 557
Points : 145
Points : 145
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.
jacko842 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2012, 09h21   #8
jacko842
Membre habitué
 
Inscription : juin 2006
Messages : 557
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 557
Points : 145
Points : 145
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 ????????
jacko842 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2012, 09h24   #9
jacko842
Membre habitué
 
Inscription : juin 2006
Messages : 557
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 557
Points : 145
Points : 145
Okkkkkkkkk c'était le format

2012-06-01
jacko842 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h33.


 
 
 
 
Partenaires

Hébergement Web