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]