Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > AS/400
AS/400 Le Forum d'entraide sur IBM AS/400 - iSeries. RPG.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/12/2010, 12h50   #1
Invité régulier
 
Développeur informatique
Inscription : novembre 2010
Messages : 53
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2010
Messages : 53
Points : 5
Points : 5
Par défaut Erreur syntaxe de la valeur de date en As400

Bonjour,

en AS400 avec STRSQL la requête suivante s'exécute bien :

Code :
1
2
SELECT * FROM Mabiblio/MonFichier where dat504 between '08/12/10' and     
'10/12/10'
mais en windev la requéte suivante me donne un message d'erreur :


Code :
1
2
3
4
5
6
7
8
SELECT    
    
    MonFichier.RXS504 AS RXS504,    
    MonFichier.DAT504 AS CHR504
FROM 
    Cre504
WHERE 
    Cre504.DAT504 BETWEEN {Param1} AND {Param2}

sachant que je donne à {Param1} et {Param2} des valeurs comme '08/12/10' et '12/12/10'

Voici le message d'erreur :

Citation:
Erreur req : Erreur de l'accés natif As400
Numéro erreur = 1
Query execution failled
Error category 1 (SQL)
Error code -180
Message : 22007
Full message : la syntaxe de la valeur de date , d'heure ou d'horodatage est incorrecte
?
mostafajob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2010, 16h36   #2
Membre Expert
 
Patrick
Inscription : mai 2008
Messages : 821
Détails du profil
Informations personnelles :
Nom : Patrick
Âge : 42
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2008
Messages : 821
Points : 1 041
Points : 1 041
Essaye plutôt ça :

Code :
1
2
SELECT * FROM Mabiblio/MonFichier 
where dat504 between date('08.12.2010') and date('10.12.2010')
ou encore
Code :
1
2
SELECT * FROM Mabiblio/MonFichier 
where dat504 between date('2010-12-08') and date('2010-12-10')

Un conseil, ne travaille JAMAIS avec des dates sur 6 positions !!!!
K2R400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 10h50   #3
Invité régulier
 
Développeur informatique
Inscription : novembre 2010
Messages : 53
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2010
Messages : 53
Points : 5
Points : 5
Merci bien ça marche bien la 1 méthode
mostafajob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 11h19   #4
Invité régulier
 
Développeur informatique
Inscription : novembre 2010
Messages : 53
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2010
Messages : 53
Points : 5
Points : 5
Bonjour,
j'ai une autre solution si j'ai pas dans ma table la zone date mais regroupé mais sur 3 zones ANNE MOIS ET JOUR comment je peux faire la même requête ?
mostafajob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 12h27   #5
Membre Expert
 
Patrick
Inscription : mai 2008
Messages : 821
Détails du profil
Informations personnelles :
Nom : Patrick
Âge : 42
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2008
Messages : 821
Points : 1 041
Points : 1 041
Ce sont des champs numériques ou alphanumériques ?
L'année est codée sur 2 ou 4 charactères ?
K2R400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 13h42   #6
Invité régulier
 
Développeur informatique
Inscription : novembre 2010
Messages : 53
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2010
Messages : 53
Points : 5
Points : 5
se sont des chaines de caractères : le mois et le jours sur 2 caractère et l'année sur 4 caractère

j'ai fait dans la requête la concaténation pour obtenir la date ça marche, mais lorsque je l'ajout dans la clause where j'obtient une message d'erreur me dit que ce champ n'existe pas sur ma table
mostafajob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 16h00   #7
Membre Expert
 
Patrick
Inscription : mai 2008
Messages : 821
Détails du profil
Informations personnelles :
Nom : Patrick
Âge : 42
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2008
Messages : 821
Points : 1 041
Points : 1 041
Il te faut concaténer les trois zones séparées par des points (ou des tirets) pour obtenir une date EUR (ou ISO dans le cas de tirets) :

Code :
1
2
3
SELECT * FROM Mabiblio/MonFichier 
where date(JJ concat '.' concat MM concat '.' concat AAAA) 
between date('08.12.2010') and date('10.12.2010')
K2R400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 16h35   #8
Invité régulier
 
Développeur informatique
Inscription : novembre 2010
Messages : 53
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2010
Messages : 53
Points : 5
Points : 5
Citation:
Envoyé par K2R400 Voir le message

Code :
1
2
where date(JJ concat '.' concat MM concat '.' concat AAAA)

En as400 j'ai le message suivant : Erreur de sélection impliquant la zone JJ

sans espace avant et aprés concat ?
mostafajob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 16h42   #9
Membre Expert
 
Patrick
Inscription : mai 2008
Messages : 821
Détails du profil
Informations personnelles :
Nom : Patrick
Âge : 42
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2008
Messages : 821
Points : 1 041
Points : 1 041
dans mon exemple, JJ, MM et AAAA sont les 3 zones de ta table.
K2R400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 16h47   #10
Invité régulier
 
Développeur informatique
Inscription : novembre 2010
Messages : 53
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2010
Messages : 53
Points : 5
Points : 5
Citation:
Envoyé par K2R400 Voir le message
dans mon exemple, JJ, MM et AAAA sont les 3 zones de ta table.
oui je l'ai remplacé mais ça marche pas ?
mostafajob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 16h51   #11
Invité régulier
 
Développeur informatique
Inscription : novembre 2010
Messages : 53
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2010
Messages : 53
Points : 5
Points : 5
voilà ce que j'ai fait en as400

select * from bibio/fic where
date(djJ213 concat '.' concat dMM213 concat '.' concat dAA213)
between date('01.12.2010') AND date('13.12.2010')

et voici le message d'erreur :

Erreur de sélection impliquant la zone DJJ213.
mostafajob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 16h53   #12
Membre Expert
 
Patrick
Inscription : mai 2008
Messages : 821
Détails du profil
Informations personnelles :
Nom : Patrick
Âge : 42
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2008
Messages : 821
Points : 1 041
Points : 1 041
Poste le résult de :

Code :
1
2
select djJ213 concat '.' concat dMM213 concat '.' concat dAA213 
from bibio/fic
K2R400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 16h56   #13
Invité régulier
 
Développeur informatique
Inscription : novembre 2010
Messages : 53
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2010
Messages : 53
Points : 5
Points : 5
Citation:
Envoyé par K2R400 Voir le message
Poste le résult de :

Code :
1
2
select djJ213 concat '.' concat dMM213 concat '.' concat dAA213 
from bibio/fic
cette clause me renvoie bien les lignes !
mostafajob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 16h58   #14
Invité régulier
 
Développeur informatique
Inscription : novembre 2010
Messages : 53
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2010
Messages : 53
Points : 5
Points : 5
des lignes comme celles ci :
10.12.2010
10.12.2010
10.12.2010
10.12.2010
10.12.2010
10.12.2010
10.12.2010
10.12.2010
10.12.2010
10.12.2010
11.12.2010
13.12.2010
1 .12.2010
1 .12.2010
01.12.2010
mostafajob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 17h11   #15
Membre Expert
 
Patrick
Inscription : mai 2008
Messages : 821
Détails du profil
Informations personnelles :
Nom : Patrick
Âge : 42
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2008
Messages : 821
Points : 1 041
Points : 1 041
Citation:
Envoyé par mostafajob Voir le message
...
1 .12.2010
1 .12.2010
01.12.2010
Pas très propre entre '01' et '1 ' dans tes colonnes !!!!!

Essaye donc plutôt ça, maintenant que l'on sait ce qu'il y a dans ta table :

Code :
1
2
3
4
5
6
SELECT * FROM Mabiblio/MonFichier 
Where date ( 
digits(dec(djJ213, 2, 0)) concat '.' concat 
digits(dec(dMM213, 2, 0)) concat '.' concat 
digits(dec(dAA213, 4, 0)) )
between date('08.12.2010') and date('10.12.2010')
tu peux aussi faire :

Code :
1
2
3
4
5
6
7
SELECT * FROM Mabiblio/MonFichier 
Where 
digits(dec(dAA213, 4, 0)) concat
digits(dec(dMM213, 2, 0)) concat 
digits(dec(djJ213, 2, 0)) concat 
between '20101208' and '20101210'
ou

Code :
1
2
3
4
5
SELECT * FROM Mabiblio/MonFichier 
Where 
dec(dAA213, 4, 0) * 10000 + dec(dMM213, 2, 0) * 100 + dec(djJ213, 2, 0) 
between 20101208 and 20101210
etc...
K2R400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 17h21   #16
Invité régulier
 
Développeur informatique
Inscription : novembre 2010
Messages : 53
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2010
Messages : 53
Points : 5
Points : 5
la 1er marche bien :

Code :
1
2
3
4
5
6
SELECT * FROM Mabiblio/MonFichier 
Where date ( 
digits(dec(djJ213, 2, 0)) concat '.' concat 
digits(dec(dMM213, 2, 0)) concat '.' concat 
digits(dec(dAA213, 4, 0)) )
between date('08.12.2010') and date('10.12.2010')
les autres affiche des messages d'erreurs
je sais pas comment te remercie
Merci beaucoup
mostafajob est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h51.


 
 
 
 
Partenaires

Hébergement Web