Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

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 13-07-2010 20:51:10

maze312  
Nouveau membre
Date d'inscription: 13-07-2010
Messages: 1
Pépites: 10
Banque: 0

Erreur sur modification du WHERE d'un select

Bonjour,
Je travaille actuellement sur powerbuilder7 et je rencontre un problème lors de la modification du where d'un select d'une datawindows. }

--------------------------------------------------------------------------------
1-Voici le select original de ma data window:

SELECT ~"AVI_PAYT_OPERATION~".~"PAYT_OPER_ID~",   
         ~"AVI_PAYT_OPERATION~".~"ACCOUNT_NUM~",   
         ~"AVI_PAYT_OPERATION~".~"DAT_OPER~",   
         ~"AVI_PAYT_OPERATION~".~"PAYTYP_ID~",   
         ~"AVI_PAYT_OPERATION~".~"AMOUNT~",   
         ~"AVI_PAYT_OPERATION~".~"OPERATION_TYPE_ID~",   
         ~"AVI_PAYT_OPERATION~".~"PAYMENT_CENTER_ID~",   
         ~"AVI_PAYT_OPERATION~".~"INVOICE_NUMBER~",   
         ~"AVI_PAYT_OPERATION~".~"INVOICE_DATE~",   
         ~"AVI_ACCOUNT~".~"OWNER_NAME~",   
         ~"AVI_PAYT_TYPE~".~"PAYTYP_STR~",   
         ~"AVI_OPERATION_TYPE~".~"OPERATION_STR~",   
         ~"AVI_PAYMENT_CENTER~".~"PAYMENT_CENTER~" 
    FROM ~"AVI_PAYT_OPERATION~",   
         ~"AVI_ACCOUNT~",   
         ~"AVI_PAYT_TYPE~",   
         ~"AVI_OPERATION_TYPE~",   
         ~"AVI_PAYMENT_CENTER~" 
   WHERE ( ~"AVI_PAYT_TYPE~".~"PAYTYP_ID~"(+) = ~"AVI_PAYT_OPERATION~".~"PAYTYP_ID~" )   and 
         ( ~"AVI_ACCOUNT~".~"ACCOUNT_NUM~"(+) = ~"AVI_PAYT_OPERATION~".~"ACCOUNT_NUM~" ) and 
         ( ~"AVI_OPERATION_TYPE~".~"OPERATION_TYPE_ID~"(+) = ~"AVI_PAYT_OPERATION~".~"OPERATION_TYPE_ID~" ) and 
         ( ~"AVI_PAYMENT_CENTER~".~"PAYMENT_CENTER_ID~"(+) = ~"AVI_PAYT_OPERATION~".~"PAYMENT_CENTER_ID~" ) and
     ( ~"AVI_PAYT_OPERATION~".~"ACCOUNT_NUM~" = ~"AVI_ACCOUNT~".~"ACCOUNT_NUM~" )

--------------------------------------------------------------------------------
2- Voici le code me permettant de générer la condition where:

ls_SelectStr = "AND (~~~"AVI_PAYT_OPERATION~~~".~~~"DAT_OPER~~~" > TO_DATE(~~~'" + ls_Date + "~~~', ~~~'DD/MM/YY~~~'))"

IF ls_OwnerName1 <> '#' THEN
    ls_SelectStr = ls_SelectStr + " AND (UPPER(~~~"AVI_ACCOUNT~~~".~~~"Owner_Name~~~") like ('%" + UPPER(ls_OwnerName1) + "%'))"
END IF

IF li_account <> 0 THEN
    ls_SelectStr = ls_SelectStr + " AND (~~~"AVI_ACCOUNT~~~".~~~"Account_Num~~~" = " + string(li_account) + ")"
END IF

IF li_ComunaId <> 0 THEN
    ls_SelectStr = ls_SelectStr + " AND (~~~"AVI_ACCOUNT~~~".~~~"Comuna_ID~~~" = " + String(li_ComunaId) + ")"
END IF

--------------------------------------------------------------------------------
3- Voici le code de la mise a jour du where:
//Get original Select
ls_OriginalSelect = dw_new_invoice_list.Describe("DataWindow.Table.Select")
ls_NewSelect = "DataWindow.Table.Select='" + ls_OriginalSelect + ls_WhereClause + "'"

// For debug only
//MessageBox("Controle", ls_OriginalSelect )
//MessageBox("Controle", ls_WhereClause )
//MessageBox("Controle", ls_NewSelect )

// Update Select Query
ls_Return = dw_new_invoice_list.Modify(ls_NewSelect)

IF ls_Return <> "" THEN
    dw_new_invoice_list.Retrieve( )
ELSE
        MessageBox("Status", "Modification of w_sheet_report_new_invoice / dw_new_invoice_list Failed" + ls_Return)
END IF


--------------------------------------------------------------------------------
4- Résultat de test :

Message d'erreur 1 : Select error : ORA-00936: missing expression (lorsque je rentre un champ de type ls_OwnerName1 (j'ai du faire une erreur a la con... mais ce n'est pas le problème principal)

Message d'erreur 2 : Modification of w_sheet_report_new_invoice / dw_new_invoice_list Failed indiquant que le mise a jour ne s'est pas déroulé correctement.

J'avoue que la je bloque. Surtout que l'erreur 2 ne précise rien, et je ne vois pas l'erreur dans le code.
Lorsque j'exécute mon select avec SQL Plus, cela fonctionne. Donc pourquoi une erreur avec PowerBuilder !!!

Je vous remercie d'avance pour votre aide.

Cordialement

Hors ligne

 

#2 16-07-2010 08:03:13

vince.janssens  
Membre Geek
Date d'inscription: 02-06-2008
Messages: 69
Pépites: 189
Banque: 0

Re: Erreur sur modification du WHERE d'un select

Je ne sais pas pourquoi tu nous met le tilde (~) en triple exemplaire. Un seul exemplaire du tilde(~) est nécessaire devant chaque double quote.

Perso j'utilise les fonction getsqlselect et setsqlselect mais je ne pense pas que l'utilisation du modify soit la cause de ton problème. Tu peux malgré tout essayer avec ces deux fonctions, on ne sait jamais...

A+

Vincent

Hors ligne

 

#3 16-07-2010 08:39:42

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

Re: Erreur sur modification du WHERE d'un select

Bonjour et , pense à utiliser la balise de code PB.


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

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22