A Monday, August 22, 2005 8:34 PM [GMT+1=CET],
Alex Thurgood <[EMAIL PROTECTED]> a écrit :

Le lundi 22 août 2005 à 17:45 +0200, chris draux a écrit :

Bonjour,

Bonsoir Alex,

Tu postes sur la mauvaise liste, la 2.0 n'est pas officiellement sortie,
donc il vaut mieux poster sur dev si tu veux une réponse.

la partie : IIf([typCpte]=3,-[solde],[solde]) AS affSolde ne passe avec le
SQL standard de base.
Existe t-il une solution pour remplacer cette fonctionnalité ?

As-tu essayé le mode SQL natif, c-à-d sans passer par le parseur OOo ?

C'est à dire Outils / SQL... ?
Non mais je pense que cela ne change rien à l'affaire, IIf est une fonction propriétaire dans Access qui à ma connaissance n'existe pas en SQL. Mais je viens de trouver la solution avec une fonction SQL standard : CASEWHEN, ce qui donne : SELECT "compte"."NumCpte", "compte"."IntCpte", "compte"."TypCpte", SUM( "mouvement"."debit" ) AS "totDebit", SUM( "mouvement"."credit" ) AS "totCredit", SUM( "mouvement"."debit" ) - SUM( "mouvement"."credit" ) AS "Solde", CASEWHEN( "TypCpte" = 1, SUM( "mouvement"."debit" ) - SUM( "mouvement"."credit" ), - ( SUM( "mouvement"."debit" ) - SUM( "mouvement"."credit" ) ) ) AS "Solde1" FROM "compte" "compte", "mouvement" "mouvement" WHERE ( "compte"."NumCpte" = "mouvement"."Compte" ) GROUP BY "compte"."NumCpte", "compte"."IntCpte", "compte"."TypCpte" HAVING ( ( "compte"."TypCpte" = 1 ) OR ( "compte"."TypCpte" = 2 ) ) ORDER BY "compte"."NumCpte" ASC, "compte"."TypCpte" ASC;

Remarque : même si l'on saisit l'ordre sans les guillemets :
SELECT compte.NumCpte, compte.IntCpte, compte.TypCpte, SUM( mouvement.debit ) AS totDebit, SUM( mouvement.credit ) AS totCredit, SUM( mouvement.debit ) - SUM( mouvement.credit ) AS Solde, CASEWHEN( TypCpte = 1, SUM( mouvement.debit ) - SUM( mouvement.credit ), - ( SUM( mouvement.debit ) - SUM( mouvement.credit ) ) ) AS Solde1 FROM compte, mouvement WHERE ( compte.NumCpte = mouvement.Compte ) GROUP BY compte.NumCpte, compte.IntCpte, compte.TypCpte HAVING ( ( compte.TypCpte = 1 ) OR ( compte.TypCpte = 2 ) ) ORDER BY compte.NumCpte ASC, compte.TypCpte ASC;


Base double le nom des tables employées après la clause FROM.
J'arrive aussi après galère à créer des ordres INSERT mais uniquement dans Outils / SQL... Dommage car ces requêtes là ne sont pas enregistrées.



Il faut également savoir que certaines requêtes élaborées nécessitent,
selon le type du champ interrogé ou les données à récupérer, que l'on
utilise l'expression le mode Escape Processing OFF. Andrew Jensen sur la
liste users@dba.openoffice.org vient d'en faire un rapport.


Je viens de retrouver l'article, j'ai lu, mais j'ai pas tout compris. Comment active t-on le mode Escape Processing dans Base ?
Merci encore pour ces informations

Alex


@+
Christian

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à