Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Forms
Forms Forum d'entraide sur Oracle Forms
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 20/04/2006, 09h36   #1
Membre à l'essai
 
Inscription : février 2006
Messages : 83
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 83
Points : 24
Points : 24
Par défaut incompatibilité sur les dates (forms6i)

Bjr,
Voilà, j'ai envie de faire une critère de recherche sur les dates d'une base 9i et là je m'y retrouve plus. Je ne retrouve pas les résultats souhaités même si je copie en dur les requètes que j'ai testé moi même dans toad. J'ai essayé toutes les possibilités sur les formats de la date et même en changeant les dates en to_char. Voiçi un extrait de code que j'ai envie de vous montrer :
....
clause_where := ' (date_creation between ''' || to_char(:block.date_deb, 'DD/MM/YYYY') || ''' and ''' || to_char(:block.date_fin, 'DD/MM/YYYY') || ''')';
....
remarque :
dans regedit, NLS_DATE_FORMAT = 'DD/MM/YYYY'
date type de : date_deb et date_fin est Date
et évidemment, dans la base date_creation est une date.
ramaro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2006, 09h45   #2
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Essaie :
Code :
1
2
3
4
5
clause_where := '(date_creation between to_date(''' ||
               to_char(:block.date_deb, 'DD/MM/YYYY') || 
               ''', ''DD/MM/YYYY'') and to_date(''' || 
               to_char(:block.date_fin, 'DD/MM/YYYY') || 
               ''', ''DD/MM/YYYY''))';
Cette solution marche dans tous les cas.

Si c'est pour faire un set_block_property (..., default_where, ...) tu peux essayer :
Code :
clause_where := '(date_creation between :block.date_deb and :block.date_fin)';
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2006, 15h16   #3
Membre à l'essai
 
Inscription : février 2006
Messages : 83
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 83
Points : 24
Points : 24
J'ai essayé les deux solutions mais le problème n'est pas encore résolu. Est-ce que quelqu'un peut venir à mon secour.
ramaro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2006, 15h18   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
pourrais-tu indiqué le résultat obtenu et le résultat souhaité STP ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2006, 15h57   #5
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
ainsi que l'erreur si tu en as une...
sinon toutes la clause where (car l'erreur vient peut-être d'une parenthèse mal placée par exemple).
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2006, 08h06   #6
Membre à l'essai
 
Inscription : février 2006
Messages : 83
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 83
Points : 24
Points : 24
ok je vais vous donner les parties pertinantes du code :
dans le trigger : PRE-QUERY du bloc
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 DECLARE
    clause_where_DATE_DEMINIT VARCHAR(2000);
    clause_where_final VARCHAR(20000);  
BEGIN
    clause_where_final := '';
    str_AND    := '';
....
IF Name_In ('fhcoord_input.DATE_DEMINIT_DEB') IS NOT NULL 
      AND Name_In ('fhcoord_input.DATE_DEMINIT_FIN') IS NOT NULL
THEN 
clause_where_DATE_DEMINIT := '(date_demande_init between to_date(''' || to_char(:fhcoord_input.DATE_DEMINIT_DEB,'DD/MM/YYYY') || ''',''DD/MM/YYYY'' AND to_date(''' || to_char(:fhcoord_input.DATE_DEMINIT_FIN,'DD/MM/YYYY') || ''',''DD/MM/YYYY''))';
...
IF clause_where_DATE_DEMINIT IS NOT NULL
THEN
    clause_where_final := clause_where_final || str_AND || clause_where_DATE_DEMINIT;  
    str_AND := ' AND ';
END IF;
....
set_block_property('FHCOORD_POSSIBLES',DEFAULT_WHERE,clause_where_final);
 
END;
Aucune erreur!
Exemple pour la plage de date j'entre : 20/01/2003 et 21/01/2003
dans toad ces valeurs existent, en tout il y a 23 enregistrements.
Mais quand je lance l'application avec ces critères il y en a 272.
En premier lieu il affiche une quinzaine de réponse vraie mais après cette liste c'est la pagaille.
exemple :
Citation:
20/01/2003
20/01/2003
20/01/2003
20/01/2003
...
12/06/1999
01/05/2001
...
ramaro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2006, 08h56   #7
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Merci de penser aux balises CODE et QUOTE à l'avenir

As tu essayé d'afficher la clause where pour la coller dans TOAD et ainsi vérifier que c'est bien la clause attendue ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2006, 15h39   #8
Membre à l'essai
 
Inscription : février 2006
Messages : 83
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 83
Points : 24
Points : 24
Désolé pour le dérangement. c'était une erreur d'inattention, je me suis planté sur les critères. En faite, il y avais 2 dates lors de la recherche. Le problème est enfin résolu.
ramaro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h37.


 
 
 
 
Partenaires

Hébergement Web