Quoi, tu ne connais pas PB ? Va falloir parcourir tout le forum alors !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 23-04-2008 15:25:55

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

[RESOLU] Ajout de champs à une DW

Salut à tous,   

Dans une DataWindow 'dw_selection' , j'ai écris la requête suivante :

Code: mssql

SELECT 'O'date_1,
       'O'date_2,
        d.colonne1,   
              d.colonne2,   
              d.colonne3  
             
         
FROM ma table d 
WHERE  1 = 1

Avec ma table : une table de la base oracle, elle contient les champs suivant : colonne1, colonne2, colonne3. 

Dans ma Datawindow je besoin de deux champs date_1 et date_2, donc pour cela j'ai les ajouter dans ma requête de datawindow sans modifier ma table. 

Le problème c'est que quand je fait :

Code: pb

ld_date_du = dw_selection.GetItemDate(1,"date_du")
ld_date_au = dw_selection.GetItemDate(1,"date_au")

Il m'affiche le message suivant :   

Error : DataWindow columm type does not match GetItem type at line 23 in generer event of object w_xxx

Est ce que je peut pas faire de cette manière ou Quoi  ?

merci de me répondre !!!

Dernière modification par mattdamon (24-04-2008 18:20:03)

Hors ligne

 

#2 23-04-2008 15:40:09

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2493
Pépites: 106
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Ajout de champs à une DW

Bonjour,

Tout d'abord

C'est plus lisible

Ensuite, il vaut mieux
que tu utilises la requête suivante:

Code: mssql

SELECT TO_DATE('01/01/1900','DD/MM/YYYY') as date_1,
         TO_DATE('01/01/1900','DD/MM/YYYY') as date_2,
          d.colonne1,   
              d.colonne2,   
              d.colonne3  
             
              
FROM ma table d 
WHERE  1 = 1


Enfin, utilises "GetItemDateTime": le type DATE Oracle correspond au type DateTime dans PB


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#3 23-04-2008 16:02:13

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Ajout de champs à une DW

Si j'ai bien compris ta réponse foon, je doit écrire cette requête derrière ma Datawindow quand je fait datasource  non  ?

Dernière modification par mattdamon (23-04-2008 16:02:42)

Hors ligne

 

#4 23-04-2008 16:09:14

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2493
Pépites: 106
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Ajout de champs à une DW

Tout à fait, dans le datasource de la datawindow.

Le problème est que, quand tu mets la requête :

Code: mssql

SELECT 'O'date_1,
         'O'date_2,
          d.colonne1,   
              d.colonne2,   
              d.colonne3  
             
              
FROM ma table d 
WHERE  1 = 1


Tes champs date_1 et date_2 sont considérés par PB comme étant de type alphanumérique ORACLE (et donc string en PB).
Ceci est lié à leur valeur initiale '0' (de plus, tu as oublié le "AS" nécessaire à la définition d'un alias).
En mettant TO_DATE(...), PB les considérera comme des datetime.


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#5 23-04-2008 16:37:26

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Ajout de champs à une DW

Je sais pas pourquoi il accepte la requête suivante :

Code: pb

SELECT 'O' as date_1,
            'O'as date_2,
            d.colonne1,   
            d.colonne2,   
            d.colonne3  
             
              
FROM ma table d 
WHERE  1 = 1


Par contre quand j'ajoute la fonction : TO_DATE('01/01/1900','DD/MM/YYYY'), il me dit que : table or view not found  : prosedure ' TO_DATE' not found

Hors ligne

 

#6 23-04-2008 16:42:25

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2493
Pépites: 106
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Ajout de champs à une DW

Tu es bien sous ORACLE, pour ce qui concerne ta base de données?
Quelle version as-tu?
Tu es connecté en natif ou via ODBC?


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#7 23-04-2008 16:45:58

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Ajout de champs à une DW

Oui sur ORACLE 10g, et SQLCA.DBMS = 90

Hors ligne

 

#8 23-04-2008 17:43:40

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2493
Pépites: 106
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Ajout de champs à une DW

Je viens de faire le test: chez moi, ça marche.
Tu peux faire un export de ta datawindow?


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#9 23-04-2008 18:09:52

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Ajout de champs à une DW

Voici le code que j'ai écrit et qu'il m'affiche toujours le message d'erreur :

Code: pb

  SELECT TO_DATE ('01/01/1900','DD/MM/YYYY') as date_1,
        TO_DATE('01/01/1900','DD/MM/YYYY') as date_2,
        'O' tri_1,
        'O' tri_2,
        d.entite,   
              d.titre,   
              d.compte_titre,   
              d.depositaire,   
              s.num_compte,
      
         
    FROM table1 d, table2 s 
    WHERE  1 = 1

Hors ligne

 

#10 23-04-2008 21:12:14

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2493
Pépites: 106
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Ajout de champs à une DW

Il faut enlever l'espace entre "TO_DATE" et la première parenthèse.
De plus, tu as oublié le "AS" pour les pseudo-colonnes tri_1 et tri_2, et tu as laissé une virgule après s.num_compte:

Code: mssql

SELECT TO_DATE('01/01/1900','DD/MM/YYYY') AS date_1,
        TO_DATE('01/01/1900','DD/MM/YYYY') AS date_2,
        'O' AS tri_1,
        'O' AS tri_2,
        d.entite,   
              d.titre,   
              d.compte_titre,   
              d.depositaire,   
              s.num_compte       
    FROM table1 d, table2 s 
    WHERE  1 = 1

Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#11 23-04-2008 21:33:33

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5122
Pépites: 97,200
Banque: 2,147,483,647

Re: [RESOLU] Ajout de champs à une DW

foon a écrit:

1) Il faut enlever l'espace entre "TO_DATE" et la première parenthèse.
2) De plus, tu as oublié le "AS" pour les pseudo-colonnes tri_1 et tri_2,
3) et tu as laissé une virgule après s.num_compte:

1) ça devrait marcher avec un espace
2) ça devrait marcher sans le AS
3) effectivement

il te suffirait de lancer d'abord la requête dans un outil SQL pour Oracle (SQL developper, Toad, SQLTools....) pour voir exactement où est l'erreur

NB : amha ce forum n'est pas là pour corriger les scripts SQL 


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#12 24-04-2008 12:35:29

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Ajout de champs à une DW

Je viens de vérifier la fonctions TO_DATE(...) !! pourquoi lorsque je tape cette fonction reste en noir n'est bleu ?

je pose cette question parce que normalement si elle reconnue par PowerBuilder donc ça sera en bleu non ?

Hors ligne

 

#13 24-04-2008 12:41:19

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2493
Pépites: 106
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Ajout de champs à une DW

Non, la coloration syntaxique PB ne reconnaît pas les fonctions Oracle


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#14 24-04-2008 14:24:34

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Ajout de champs à une DW

Salut,

Finalement je doit mettre ce code suivant puis juste un jeu de casting string to date : 

Code: pb

SELECT 'O' AS date_1,
            'O' AS date_2,
            'O' AS tri_1,
            'O' AS tri_2,
             d.entite,   
             d.titre,   
             d.compte_titre,   
             d.depositaire,   
             s.num_compte       
    FROM table1 d, table2 s 
    WHERE  1 = 1


mais un autre problème c'est que date_1 et date_2 ce sont des chaines de caractères ne sont pas des dates en plus que ça la taille et limité par rapport à mon besoin (char(1)). 

donc est ce que possible de rendre la taille date_1 et date_2 à 20 caractères ?   

Hors ligne

 

#15 24-04-2008 14:30:55

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2493
Pépites: 106
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Ajout de champs à une DW

Pour les avoir sur 20 caractères, il suffit de les initialiser avec 20 caractères.
Par exemple:

Code: mssql

SELECT '01/01/1900 00:00:000' AS date_1,
            '01/01/1900 00:00:000' AS date_2,
            'O' AS tri_1,
            'O' AS tri_2,
             d.entite,   
             d.titre,   
             d.compte_titre,   
             d.depositaire,   
             s.num_compte       
    FROM table1 d, table2 s 
    WHERE  1 = 1


Mais bon, pour des champs dates, c'est pô propre


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#16 24-04-2008 14:39:01

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Ajout de champs à une DW

Ah , merci beaucoup  foon pour vos réponses vraiment ça marche bien la nouvelle initialisation, je vais voir les restes

Dernière modification par mattdamon (24-04-2008 14:39:21)

Hors ligne

 

#17 24-04-2008 15:41:39

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Ajout de champs à une DW

Après avoir saisi les champs date_1 = 01/01/2008 et date_2 = 31/12/2008 dans la datawindow, à l'exécution et en mode déboggage seulement ls_date_du = 01/01/2008 mais l'autre date  est null


voici le code que j'ai écrit :

Code: pb

string ls_date_du, ls_date_au
ls_date_du = dw_selection.getitemstring( 1,"date_1")

ls_date_au = dw_selection.getitemstring( 1,"date_2")

ld_date_du = date(ls_date_du)
ld_date_au = date(ls_date_au)


Est ce qu'il y a pas des updates à faire ou ..... ?

Hors ligne

 

#18 24-04-2008 15:46:17

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5122
Pépites: 97,200
Banque: 2,147,483,647

Re: [RESOLU] Ajout de champs à une DW

foon a écrit:

Mais bon, pour des champs dates, c'est pô propre

c'est du grand n'importe quoi, tu fais date->string->date
ça te rajoute du code dans PB et des risques d'erreur...

pourquoi ne pas faire un to_date comme foon l'a suggéré ou un sysdate :

Code: sql

SELECT sysdate AS date_1,
            sysdate AS date_2,
...

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#19 24-04-2008 16:06:52

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Ajout de champs à une DW

ErAsORz,  J'ai testé la solution de foon concernant la fonction to_date () mais toujours ça marche pas tel que  après avoir taper la requête dans la datasource de la datawindow et quand je fait RETURN pour aller au painter de datawindow il m'affiche le message d'erreur :

Code: sql

table or view not found  : prosedure ' TO_DATE' not found


Même chose pour:

Code: sql

SELECT sysdate AS date_1,
            sysdate AS date_2,
...


Dans ce cas la il dit : column 'sysdate'  not found

Hors ligne

 

#20 24-04-2008 16:13:37

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2493
Pépites: 106
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Ajout de champs à une DW

Et quand tu testes la requête dans Oracle directement, il n'y a pas de problème?


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#21 24-04-2008 16:51:10

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Ajout de champs à une DW

J'ai testé la requête sur PL/SQL developer et ça fonctionne bien.

Donc je crois qu'il me faut mieux reconstruire de nouveau ma DataWindow

Hors ligne

 

#22 24-04-2008 17:46:44

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,775,808
Site web

Re: [RESOLU] Ajout de champs à une DW

J'ai une petite question. Ton PB est bien connecté à ta base (la bonne) ? As-tu vérifié dans dbprofile...


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

#23 24-04-2008 18:00:16

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Ajout de champs à une DW

Très bien Chrnico le pb a été résolu et voila le secret :

dans la phase de développement je connecte sur la base local SQL/Anywhere (base.db sur ma machine) puis je connecte sur la base oracle sur une autre machine.

donc quand j'ai crée un nouveau profile pour connecter directement sur la base oracle sans utilisé sqlAnywhere,, il fonctionne bien sans erreur

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22