Bonjour,
en préambule, bonne année à tout le monde ...
j'ai une interrogation sur l'utilisation des requetes (WDR).
Soit la requete suivante fait avec le générateur de requetes
SELECT
PIECE.IDPIECE AS IDPIECE,
PIECE.RefPiece AS RefPiece,
PIECE.DescriptifPiece AS DescriptifPiece,
PIECE.DateEmission AS DateEmission,
PIECE.ClassifDevis AS ClassifDevis,
PIECE.HostPiece AS HostPiece,
PIECE.MontantHT AS MontantHT,
PIECE.MontantTVA AS MontantTVA,
PIECE.Montant_TTC AS Montant_TTC,
PIECE.MiseenAlerte AS MiseenAlerte,
CLIENT.NomClient AS NomClient,
DOSSIER.NomDossier AS NomDossier,
PIECE.TypePiece AS TypePiece,
CLIENT.IDCLIENT AS IDCLIENT,
DOSSIER.IDDOSSIER AS IDDOSSIER
FROM
CLIENT,
DOSSIER,
PIECE
WHERE
DOSSIER.IDCLIENT = CLIENT.IDCLIENT
AND PIECE.IDDOSSIER = DOSSIER.IDDOSSIER
AND
(
PIECE.DateEmission BETWEEN {pDateDeb} AND {pDateFin}
AND PIECE.TypePiece = 1
AND CLIENT.IDCLIENT = {pIdClient}
AND DOSSIER.IDDOSSIER = {pIddossier}
)
Mes paramètres sont optionnels et cela fn comme attendu. J'ai une Zone
répétée basée sur cette requête qui se charge bien.
Mais je voudrais rajouter une recherche texte qui ferait cela (je le
pseudo-code)
si R_RECHALPHA<>"" alors
// rajouter critere
wLike="LIKE '%"+R_RECHALPHA+"%'"
critplus=" AND (CLIENT.NOMClient "+wlike+" OR DOSSIER.NomDossier
"+wlike+" OR PIECE.DescriptifPiece "+wlike+")"
fin
bref en clair, si je fais une rech texte je vais voir ds 2 ou 3 zones si
je ne retrouve pas ce texte.
Comment ajouter ces critères supplémentaires (et oprionnels) à une
requete ?
faut-il passer par un HexecuterequeteSql et charger ma ZR manuellement ?
Merci de vos réponses.
Bonjour,
en préambule, bonne année à tout le monde ...
j'ai une interrogation sur l'utilisation des requetes (WDR).
Soit la requete suivante fait avec le générateur de requetes
SELECT
PIECE.IDPIECE AS IDPIECE,
PIECE.RefPiece AS RefPiece,
PIECE.DescriptifPiece AS DescriptifPiece,
PIECE.DateEmission AS DateEmission,
PIECE.ClassifDevis AS ClassifDevis,
PIECE.HostPiece AS HostPiece,
PIECE.MontantHT AS MontantHT,
PIECE.MontantTVA AS MontantTVA,
PIECE.Montant_TTC AS Montant_TTC,
PIECE.MiseenAlerte AS MiseenAlerte,
CLIENT.NomClient AS NomClient,
DOSSIER.NomDossier AS NomDossier,
PIECE.TypePiece AS TypePiece,
CLIENT.IDCLIENT AS IDCLIENT,
DOSSIER.IDDOSSIER AS IDDOSSIER
FROM
CLIENT,
DOSSIER,
PIECE
WHERE
DOSSIER.IDCLIENT = CLIENT.IDCLIENT
AND PIECE.IDDOSSIER = DOSSIER.IDDOSSIER
AND
(
PIECE.DateEmission BETWEEN {pDateDeb} AND {pDateFin}
AND PIECE.TypePiece = 1
AND CLIENT.IDCLIENT = {pIdClient}
AND DOSSIER.IDDOSSIER = {pIddossier}
)
Mes paramètres sont optionnels et cela fn comme attendu. J'ai une Zone
répétée basée sur cette requête qui se charge bien.
Mais je voudrais rajouter une recherche texte qui ferait cela (je le
pseudo-code)
si R_RECHALPHA<>"" alors
// rajouter critere
wLike="LIKE '%"+R_RECHALPHA+"%'"
critplus=" AND (CLIENT.NOMClient "+wlike+" OR DOSSIER.NomDossier
"+wlike+" OR PIECE.DescriptifPiece "+wlike+")"
fin
bref en clair, si je fais une rech texte je vais voir ds 2 ou 3 zones si
je ne retrouve pas ce texte.
Comment ajouter ces critères supplémentaires (et oprionnels) à une
requete ?
faut-il passer par un HexecuterequeteSql et charger ma ZR manuellement ?
Merci de vos réponses.
Bonjour,
en préambule, bonne année à tout le monde ...
j'ai une interrogation sur l'utilisation des requetes (WDR).
Soit la requete suivante fait avec le générateur de requetes
SELECT
PIECE.IDPIECE AS IDPIECE,
PIECE.RefPiece AS RefPiece,
PIECE.DescriptifPiece AS DescriptifPiece,
PIECE.DateEmission AS DateEmission,
PIECE.ClassifDevis AS ClassifDevis,
PIECE.HostPiece AS HostPiece,
PIECE.MontantHT AS MontantHT,
PIECE.MontantTVA AS MontantTVA,
PIECE.Montant_TTC AS Montant_TTC,
PIECE.MiseenAlerte AS MiseenAlerte,
CLIENT.NomClient AS NomClient,
DOSSIER.NomDossier AS NomDossier,
PIECE.TypePiece AS TypePiece,
CLIENT.IDCLIENT AS IDCLIENT,
DOSSIER.IDDOSSIER AS IDDOSSIER
FROM
CLIENT,
DOSSIER,
PIECE
WHERE
DOSSIER.IDCLIENT = CLIENT.IDCLIENT
AND PIECE.IDDOSSIER = DOSSIER.IDDOSSIER
AND
(
PIECE.DateEmission BETWEEN {pDateDeb} AND {pDateFin}
AND PIECE.TypePiece = 1
AND CLIENT.IDCLIENT = {pIdClient}
AND DOSSIER.IDDOSSIER = {pIddossier}
)
Mes paramètres sont optionnels et cela fn comme attendu. J'ai une Zone
répétée basée sur cette requête qui se charge bien.
Mais je voudrais rajouter une recherche texte qui ferait cela (je le
pseudo-code)
si R_RECHALPHA<>"" alors
// rajouter critere
wLike="LIKE '%"+R_RECHALPHA+"%'"
critplus=" AND (CLIENT.NOMClient "+wlike+" OR DOSSIER.NomDossier
"+wlike+" OR PIECE.DescriptifPiece "+wlike+")"
fin
bref en clair, si je fais une rech texte je vais voir ds 2 ou 3 zones si
je ne retrouve pas ce texte.
Comment ajouter ces critères supplémentaires (et oprionnels) à une
requete ?
faut-il passer par un HexecuterequeteSql et charger ma ZR manuellement ?
Merci de vos réponses.
Bonjour,
en préambule, bonne année à tout le monde ...
j'ai une interrogation sur l'utilisation des requetes (WDR).
Soit la requete suivante fait avec le générateur de requetes
SELECT
PIECE.IDPIECE AS IDPIECE,
PIECE.RefPiece AS RefPiece,
PIECE.DescriptifPiece AS DescriptifPiece,
PIECE.DateEmission AS DateEmission,
PIECE.ClassifDevis AS ClassifDevis,
PIECE.HostPiece AS HostPiece,
PIECE.MontantHT AS MontantHT,
PIECE.MontantTVA AS MontantTVA,
PIECE.Montant_TTC AS Montant_TTC,
PIECE.MiseenAlerte AS MiseenAlerte,
CLIENT.NomClient AS NomClient,
DOSSIER.NomDossier AS NomDossier,
PIECE.TypePiece AS TypePiece,
CLIENT.IDCLIENT AS IDCLIENT,
DOSSIER.IDDOSSIER AS IDDOSSIER
FROM
CLIENT,
DOSSIER,
PIECE
WHERE
DOSSIER.IDCLIENT = CLIENT.IDCLIENT
AND PIECE.IDDOSSIER = DOSSIER.IDDOSSIER
AND
(
PIECE.DateEmission BETWEEN {pDateDeb} AND {pDateFin}
AND PIECE.TypePiece = 1
AND CLIENT.IDCLIENT = {pIdClient}
AND DOSSIER.IDDOSSIER = {pIddossier}
)
Mes paramètres sont optionnels et cela fn comme attendu. J'ai une Zone
répétée basée sur cette requête qui se charge bien.
Mais je voudrais rajouter une recherche texte qui ferait cela (je le
pseudo-code)
si R_RECHALPHA<>"" alors
// rajouter critere
wLike="LIKE '%"+R_RECHALPHA+"%'"
critplus=" AND (CLIENT.NOMClient "+wlike+" OR DOSSIER.NomDossier "+wlike+" OR
PIECE.DescriptifPiece "+wlike+")"
fin
bref en clair, si je fais une rech texte je vais voir ds 2 ou 3 zones si je
ne retrouve pas ce texte.
Comment ajouter ces critères supplémentaires (et oprionnels) à une requete ?
faut-il passer par un HexecuterequeteSql et charger ma ZR manuellement ?
Merci de vos réponses.
Bonjour,
en préambule, bonne année à tout le monde ...
j'ai une interrogation sur l'utilisation des requetes (WDR).
Soit la requete suivante fait avec le générateur de requetes
SELECT
PIECE.IDPIECE AS IDPIECE,
PIECE.RefPiece AS RefPiece,
PIECE.DescriptifPiece AS DescriptifPiece,
PIECE.DateEmission AS DateEmission,
PIECE.ClassifDevis AS ClassifDevis,
PIECE.HostPiece AS HostPiece,
PIECE.MontantHT AS MontantHT,
PIECE.MontantTVA AS MontantTVA,
PIECE.Montant_TTC AS Montant_TTC,
PIECE.MiseenAlerte AS MiseenAlerte,
CLIENT.NomClient AS NomClient,
DOSSIER.NomDossier AS NomDossier,
PIECE.TypePiece AS TypePiece,
CLIENT.IDCLIENT AS IDCLIENT,
DOSSIER.IDDOSSIER AS IDDOSSIER
FROM
CLIENT,
DOSSIER,
PIECE
WHERE
DOSSIER.IDCLIENT = CLIENT.IDCLIENT
AND PIECE.IDDOSSIER = DOSSIER.IDDOSSIER
AND
(
PIECE.DateEmission BETWEEN {pDateDeb} AND {pDateFin}
AND PIECE.TypePiece = 1
AND CLIENT.IDCLIENT = {pIdClient}
AND DOSSIER.IDDOSSIER = {pIddossier}
)
Mes paramètres sont optionnels et cela fn comme attendu. J'ai une Zone
répétée basée sur cette requête qui se charge bien.
Mais je voudrais rajouter une recherche texte qui ferait cela (je le
pseudo-code)
si R_RECHALPHA<>"" alors
// rajouter critere
wLike="LIKE '%"+R_RECHALPHA+"%'"
critplus=" AND (CLIENT.NOMClient "+wlike+" OR DOSSIER.NomDossier "+wlike+" OR
PIECE.DescriptifPiece "+wlike+")"
fin
bref en clair, si je fais une rech texte je vais voir ds 2 ou 3 zones si je
ne retrouve pas ce texte.
Comment ajouter ces critères supplémentaires (et oprionnels) à une requete ?
faut-il passer par un HexecuterequeteSql et charger ma ZR manuellement ?
Merci de vos réponses.
Bonjour,
en préambule, bonne année à tout le monde ...
j'ai une interrogation sur l'utilisation des requetes (WDR).
Soit la requete suivante fait avec le générateur de requetes
SELECT
PIECE.IDPIECE AS IDPIECE,
PIECE.RefPiece AS RefPiece,
PIECE.DescriptifPiece AS DescriptifPiece,
PIECE.DateEmission AS DateEmission,
PIECE.ClassifDevis AS ClassifDevis,
PIECE.HostPiece AS HostPiece,
PIECE.MontantHT AS MontantHT,
PIECE.MontantTVA AS MontantTVA,
PIECE.Montant_TTC AS Montant_TTC,
PIECE.MiseenAlerte AS MiseenAlerte,
CLIENT.NomClient AS NomClient,
DOSSIER.NomDossier AS NomDossier,
PIECE.TypePiece AS TypePiece,
CLIENT.IDCLIENT AS IDCLIENT,
DOSSIER.IDDOSSIER AS IDDOSSIER
FROM
CLIENT,
DOSSIER,
PIECE
WHERE
DOSSIER.IDCLIENT = CLIENT.IDCLIENT
AND PIECE.IDDOSSIER = DOSSIER.IDDOSSIER
AND
(
PIECE.DateEmission BETWEEN {pDateDeb} AND {pDateFin}
AND PIECE.TypePiece = 1
AND CLIENT.IDCLIENT = {pIdClient}
AND DOSSIER.IDDOSSIER = {pIddossier}
)
Mes paramètres sont optionnels et cela fn comme attendu. J'ai une Zone
répétée basée sur cette requête qui se charge bien.
Mais je voudrais rajouter une recherche texte qui ferait cela (je le
pseudo-code)
si R_RECHALPHA<>"" alors
// rajouter critere
wLike="LIKE '%"+R_RECHALPHA+"%'"
critplus=" AND (CLIENT.NOMClient "+wlike+" OR DOSSIER.NomDossier "+wlike+" OR
PIECE.DescriptifPiece "+wlike+")"
fin
bref en clair, si je fais une rech texte je vais voir ds 2 ou 3 zones si je
ne retrouve pas ce texte.
Comment ajouter ces critères supplémentaires (et oprionnels) à une requete ?
faut-il passer par un HexecuterequeteSql et charger ma ZR manuellement ?
Merci de vos réponses.
Bonjour,
Merci et meilleurs voeux également pour 2009
Personnellement je n'utilise que HexecuterequeteSql ce qui permet la
construction
dynamique du code de la requête
De cette façon je ne reprends dans le code de la requete que les
parametres nécessaires
ce qui je pense est de nature a optimiser le temps de réponse et évite
également
les problèmes éventuels avec les parametres a NULL
Cette méthode permet également de rendre le code plus clair par
l"utilisation de la fonction
ChaîneConstruit()
Exemple de code qui ne pose aucun problème
FONCTION sConstruitRequêteSQL()
LOCAL
sRubqRecherche, sCodeSQL, sCondition sont des chaînes
b_And est un booléen = Faux
// [< Conditions >]
sCodeSQL = "SELECT * FROM LigneMvt WHERE "
// [< Exercices >]
SI Taille(SAI_Exercice) = 4 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[Exercice] = '%1'", SAI_Exercice)
b_And = Vrai
FIN
// [< Journal >]
SI Taille(SAI_Jnl) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDJnl] = '%1'", SAI_Jnl)
b_And = Vrai
FIN
// [< Rubrique >]
SI Taille(SAI_Compte) = 2 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] LIKE '%1%'", SAI_Compte)
b_And = Vrai
FIN
// [< Compte >]
SI Taille(SAI_Compte) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] = '%1'", SAI_Compte)
b_And = Vrai
FIN
// [< Commentaire >]
SI Taille(SAI_Note) > 0 ALORS
gsOpérateurSQL = "LIKE12"
sRubqRecherche = "LigneMvt.Commentaire"
sCondition = sConstruitConditionSQL(sRubqRecherche, SAI_Note, EOT )
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Dates >]
SI SAI_Date <> "" ALORS
SAI_Exercice = ""
sRubqRecherche = "LigneMvt.DateMvt"
setOpérateurSQL("ComboRechAvancéeTexte")
SI ChampExiste(gsNomChampDate2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur,...
{gsNomChampDate2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Montants >]
SI SAI_Montant > 0 ALORS
sRubqRecherche = ( SélectMvts = 1 ? "LigneMvt.MvtDébit" SINON
"LigneMvt.MvtCrédit" )
setOpérateurSQL("ComboRechAvancéeNumérique")
SI ChampExiste(gsNomChampMontant2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur,...
{gsNomChampMontant2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
FIN
// [< Tri sur date Mouvts >]
sCodeSQL += " ORDER BY [DateMvt] ASC"
RENVOYER sCodeSQL
Bien cordialement
Albert
Bonjour,
Merci et meilleurs voeux également pour 2009
Personnellement je n'utilise que HexecuterequeteSql ce qui permet la
construction
dynamique du code de la requête
De cette façon je ne reprends dans le code de la requete que les
parametres nécessaires
ce qui je pense est de nature a optimiser le temps de réponse et évite
également
les problèmes éventuels avec les parametres a NULL
Cette méthode permet également de rendre le code plus clair par
l"utilisation de la fonction
ChaîneConstruit()
Exemple de code qui ne pose aucun problème
FONCTION sConstruitRequêteSQL()
LOCAL
sRubqRecherche, sCodeSQL, sCondition sont des chaînes
b_And est un booléen = Faux
// [< Conditions >]
sCodeSQL = "SELECT * FROM LigneMvt WHERE "
// [< Exercices >]
SI Taille(SAI_Exercice) = 4 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[Exercice] = '%1'", SAI_Exercice)
b_And = Vrai
FIN
// [< Journal >]
SI Taille(SAI_Jnl) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDJnl] = '%1'", SAI_Jnl)
b_And = Vrai
FIN
// [< Rubrique >]
SI Taille(SAI_Compte) = 2 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] LIKE '%1%'", SAI_Compte)
b_And = Vrai
FIN
// [< Compte >]
SI Taille(SAI_Compte) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] = '%1'", SAI_Compte)
b_And = Vrai
FIN
// [< Commentaire >]
SI Taille(SAI_Note) > 0 ALORS
gsOpérateurSQL = "LIKE12"
sRubqRecherche = "LigneMvt.Commentaire"
sCondition = sConstruitConditionSQL(sRubqRecherche, SAI_Note, EOT )
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Dates >]
SI SAI_Date <> "" ALORS
SAI_Exercice = ""
sRubqRecherche = "LigneMvt.DateMvt"
setOpérateurSQL("ComboRechAvancéeTexte")
SI ChampExiste(gsNomChampDate2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur,...
{gsNomChampDate2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Montants >]
SI SAI_Montant > 0 ALORS
sRubqRecherche = ( SélectMvts = 1 ? "LigneMvt.MvtDébit" SINON
"LigneMvt.MvtCrédit" )
setOpérateurSQL("ComboRechAvancéeNumérique")
SI ChampExiste(gsNomChampMontant2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur,...
{gsNomChampMontant2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
FIN
// [< Tri sur date Mouvts >]
sCodeSQL += " ORDER BY [DateMvt] ASC"
RENVOYER sCodeSQL
Bien cordialement
Albert
Bonjour,
Merci et meilleurs voeux également pour 2009
Personnellement je n'utilise que HexecuterequeteSql ce qui permet la
construction
dynamique du code de la requête
De cette façon je ne reprends dans le code de la requete que les
parametres nécessaires
ce qui je pense est de nature a optimiser le temps de réponse et évite
également
les problèmes éventuels avec les parametres a NULL
Cette méthode permet également de rendre le code plus clair par
l"utilisation de la fonction
ChaîneConstruit()
Exemple de code qui ne pose aucun problème
FONCTION sConstruitRequêteSQL()
LOCAL
sRubqRecherche, sCodeSQL, sCondition sont des chaînes
b_And est un booléen = Faux
// [< Conditions >]
sCodeSQL = "SELECT * FROM LigneMvt WHERE "
// [< Exercices >]
SI Taille(SAI_Exercice) = 4 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[Exercice] = '%1'", SAI_Exercice)
b_And = Vrai
FIN
// [< Journal >]
SI Taille(SAI_Jnl) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDJnl] = '%1'", SAI_Jnl)
b_And = Vrai
FIN
// [< Rubrique >]
SI Taille(SAI_Compte) = 2 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] LIKE '%1%'", SAI_Compte)
b_And = Vrai
FIN
// [< Compte >]
SI Taille(SAI_Compte) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] = '%1'", SAI_Compte)
b_And = Vrai
FIN
// [< Commentaire >]
SI Taille(SAI_Note) > 0 ALORS
gsOpérateurSQL = "LIKE12"
sRubqRecherche = "LigneMvt.Commentaire"
sCondition = sConstruitConditionSQL(sRubqRecherche, SAI_Note, EOT )
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Dates >]
SI SAI_Date <> "" ALORS
SAI_Exercice = ""
sRubqRecherche = "LigneMvt.DateMvt"
setOpérateurSQL("ComboRechAvancéeTexte")
SI ChampExiste(gsNomChampDate2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur,...
{gsNomChampDate2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Montants >]
SI SAI_Montant > 0 ALORS
sRubqRecherche = ( SélectMvts = 1 ? "LigneMvt.MvtDébit" SINON
"LigneMvt.MvtCrédit" )
setOpérateurSQL("ComboRechAvancéeNumérique")
SI ChampExiste(gsNomChampMontant2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur,...
{gsNomChampMontant2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
FIN
// [< Tri sur date Mouvts >]
sCodeSQL += " ORDER BY [DateMvt] ASC"
RENVOYER sCodeSQL
Bien cordialement
Albert
Bonjour
Une petite question bête :
Le mot LOCAL avant la déclaration des variables permet d'indiquer que les
variables sont locales à la procédure. Mais si on ne précise pas LOCAL, les
variables sont-elles locales ou globales ? (Personnellement je ne précise
jamais LOCAL)
Merci
Bonjour
Une petite question bête :
Le mot LOCAL avant la déclaration des variables permet d'indiquer que les
variables sont locales à la procédure. Mais si on ne précise pas LOCAL, les
variables sont-elles locales ou globales ? (Personnellement je ne précise
jamais LOCAL)
Merci
Bonjour
Une petite question bête :
Le mot LOCAL avant la déclaration des variables permet d'indiquer que les
variables sont locales à la procédure. Mais si on ne précise pas LOCAL, les
variables sont-elles locales ou globales ? (Personnellement je ne précise
jamais LOCAL)
Merci
Bonjour (et bonne année) Eric
Je ne vois pas de problème à ta demande : Il s'agit, ni plus, ni moins, d'un
paramètre supplémentaire à ta requête.
Dans l'éditeur de requête, tu ajoutes les nouvelles conditions de sélection.
Il faut juste que, pour tes 2/3 champs, tu utilises le même nom de paramètre
(soit, par exemple, Param_RechAlpha)
Lors de l'init de ta requête, si R_RECHALPHA<>"", alors tu renseignes
Param_RechAlpha, sinon, tu lui colles Null
Yannick
Bonjour (et bonne année) Eric
Je ne vois pas de problème à ta demande : Il s'agit, ni plus, ni moins, d'un
paramètre supplémentaire à ta requête.
Dans l'éditeur de requête, tu ajoutes les nouvelles conditions de sélection.
Il faut juste que, pour tes 2/3 champs, tu utilises le même nom de paramètre
(soit, par exemple, Param_RechAlpha)
Lors de l'init de ta requête, si R_RECHALPHA<>"", alors tu renseignes
Param_RechAlpha, sinon, tu lui colles Null
Yannick
Bonjour (et bonne année) Eric
Je ne vois pas de problème à ta demande : Il s'agit, ni plus, ni moins, d'un
paramètre supplémentaire à ta requête.
Dans l'éditeur de requête, tu ajoutes les nouvelles conditions de sélection.
Il faut juste que, pour tes 2/3 champs, tu utilises le même nom de paramètre
(soit, par exemple, Param_RechAlpha)
Lors de l'init de ta requête, si R_RECHALPHA<>"", alors tu renseignes
Param_RechAlpha, sinon, tu lui colles Null
Yannick
Moua a écrit :
Bonjour
Une petite question bête :
Le mot LOCAL avant la déclaration des variables permet d'indiquer que les
variables sont locales à la procédure. Mais si on ne précise pas LOCAL, les
variables sont-elles locales ou globales ? (Personnellement je ne précise
jamais LOCAL)
Merci
dans une proc les var déclarées dans la proc sont toujours en local
Moua a écrit :
Bonjour
Une petite question bête :
Le mot LOCAL avant la déclaration des variables permet d'indiquer que les
variables sont locales à la procédure. Mais si on ne précise pas LOCAL, les
variables sont-elles locales ou globales ? (Personnellement je ne précise
jamais LOCAL)
Merci
dans une proc les var déclarées dans la proc sont toujours en local
Moua a écrit :
Bonjour
Une petite question bête :
Le mot LOCAL avant la déclaration des variables permet d'indiquer que les
variables sont locales à la procédure. Mais si on ne précise pas LOCAL, les
variables sont-elles locales ou globales ? (Personnellement je ne précise
jamais LOCAL)
Merci
dans une proc les var déclarées dans la proc sont toujours en local
Bonjour,
Merci et meilleurs voeux également pour 2009
Personnellement je n'utilise que HexecuterequeteSql ce qui permet la
construction
dynamique du code de la requête
De cette façon je ne reprends dans le code de la requete que les
parametres nécessaires
ce qui je pense est de nature a optimiser le temps de réponse et évite
également
les problèmes éventuels avec les parametres a NULL
Cette méthode permet également de rendre le code plus clair par
l"utilisation de la fonction
ChaîneConstruit()
Exemple de code qui ne pose aucun problème
FONCTION sConstruitRequêteSQL()
LOCAL
sRubqRecherche, sCodeSQL, sCondition sont des chaînes
b_And est un booléen = Faux
// [< Conditions >]
sCodeSQL = "SELECT * FROM LigneMvt WHERE "
// [< Exercices >]
SI Taille(SAI_Exercice) = 4 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[Exercice] = '%1'", SAI_Exercice)
b_And = Vrai
FIN
// [< Journal >]
SI Taille(SAI_Jnl) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDJnl] = '%1'", SAI_Jnl)
b_And = Vrai
FIN
// [< Rubrique >]
SI Taille(SAI_Compte) = 2 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] LIKE '%1%'", SAI_Compte)
b_And = Vrai
FIN
// [< Compte >]
SI Taille(SAI_Compte) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] = '%1'", SAI_Compte)
b_And = Vrai
FIN
// [< Commentaire >]
SI Taille(SAI_Note) > 0 ALORS
gsOpérateurSQL = "LIKE12"
sRubqRecherche = "LigneMvt.Commentaire"
sCondition = sConstruitConditionSQL(sRubqRecherche, SAI_Note, EOT )
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Dates >]
SI SAI_Date <> "" ALORS
SAI_Exercice = ""
sRubqRecherche = "LigneMvt.DateMvt"
setOpérateurSQL("ComboRechAvancéeTexte")
SI ChampExiste(gsNomChampDate2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur,...
{gsNomChampDate2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Montants >]
SI SAI_Montant > 0 ALORS
sRubqRecherche = ( SélectMvts = 1 ? "LigneMvt.MvtDébit" SINON
"LigneMvt.MvtCrédit" )
setOpérateurSQL("ComboRechAvancéeNumérique")
SI ChampExiste(gsNomChampMontant2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur,...
{gsNomChampMontant2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
FIN
// [< Tri sur date Mouvts >]
sCodeSQL += " ORDER BY [DateMvt] ASC"
RENVOYER sCodeSQL
Bien cordialement
Albert
Bonjour,
Merci et meilleurs voeux également pour 2009
Personnellement je n'utilise que HexecuterequeteSql ce qui permet la
construction
dynamique du code de la requête
De cette façon je ne reprends dans le code de la requete que les
parametres nécessaires
ce qui je pense est de nature a optimiser le temps de réponse et évite
également
les problèmes éventuels avec les parametres a NULL
Cette méthode permet également de rendre le code plus clair par
l"utilisation de la fonction
ChaîneConstruit()
Exemple de code qui ne pose aucun problème
FONCTION sConstruitRequêteSQL()
LOCAL
sRubqRecherche, sCodeSQL, sCondition sont des chaînes
b_And est un booléen = Faux
// [< Conditions >]
sCodeSQL = "SELECT * FROM LigneMvt WHERE "
// [< Exercices >]
SI Taille(SAI_Exercice) = 4 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[Exercice] = '%1'", SAI_Exercice)
b_And = Vrai
FIN
// [< Journal >]
SI Taille(SAI_Jnl) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDJnl] = '%1'", SAI_Jnl)
b_And = Vrai
FIN
// [< Rubrique >]
SI Taille(SAI_Compte) = 2 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] LIKE '%1%'", SAI_Compte)
b_And = Vrai
FIN
// [< Compte >]
SI Taille(SAI_Compte) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] = '%1'", SAI_Compte)
b_And = Vrai
FIN
// [< Commentaire >]
SI Taille(SAI_Note) > 0 ALORS
gsOpérateurSQL = "LIKE12"
sRubqRecherche = "LigneMvt.Commentaire"
sCondition = sConstruitConditionSQL(sRubqRecherche, SAI_Note, EOT )
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Dates >]
SI SAI_Date <> "" ALORS
SAI_Exercice = ""
sRubqRecherche = "LigneMvt.DateMvt"
setOpérateurSQL("ComboRechAvancéeTexte")
SI ChampExiste(gsNomChampDate2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur,...
{gsNomChampDate2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Montants >]
SI SAI_Montant > 0 ALORS
sRubqRecherche = ( SélectMvts = 1 ? "LigneMvt.MvtDébit" SINON
"LigneMvt.MvtCrédit" )
setOpérateurSQL("ComboRechAvancéeNumérique")
SI ChampExiste(gsNomChampMontant2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur,...
{gsNomChampMontant2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
FIN
// [< Tri sur date Mouvts >]
sCodeSQL += " ORDER BY [DateMvt] ASC"
RENVOYER sCodeSQL
Bien cordialement
Albert
Bonjour,
Merci et meilleurs voeux également pour 2009
Personnellement je n'utilise que HexecuterequeteSql ce qui permet la
construction
dynamique du code de la requête
De cette façon je ne reprends dans le code de la requete que les
parametres nécessaires
ce qui je pense est de nature a optimiser le temps de réponse et évite
également
les problèmes éventuels avec les parametres a NULL
Cette méthode permet également de rendre le code plus clair par
l"utilisation de la fonction
ChaîneConstruit()
Exemple de code qui ne pose aucun problème
FONCTION sConstruitRequêteSQL()
LOCAL
sRubqRecherche, sCodeSQL, sCondition sont des chaînes
b_And est un booléen = Faux
// [< Conditions >]
sCodeSQL = "SELECT * FROM LigneMvt WHERE "
// [< Exercices >]
SI Taille(SAI_Exercice) = 4 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[Exercice] = '%1'", SAI_Exercice)
b_And = Vrai
FIN
// [< Journal >]
SI Taille(SAI_Jnl) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDJnl] = '%1'", SAI_Jnl)
b_And = Vrai
FIN
// [< Rubrique >]
SI Taille(SAI_Compte) = 2 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] LIKE '%1%'", SAI_Compte)
b_And = Vrai
FIN
// [< Compte >]
SI Taille(SAI_Compte) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] = '%1'", SAI_Compte)
b_And = Vrai
FIN
// [< Commentaire >]
SI Taille(SAI_Note) > 0 ALORS
gsOpérateurSQL = "LIKE12"
sRubqRecherche = "LigneMvt.Commentaire"
sCondition = sConstruitConditionSQL(sRubqRecherche, SAI_Note, EOT )
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Dates >]
SI SAI_Date <> "" ALORS
SAI_Exercice = ""
sRubqRecherche = "LigneMvt.DateMvt"
setOpérateurSQL("ComboRechAvancéeTexte")
SI ChampExiste(gsNomChampDate2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur,...
{gsNomChampDate2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Montants >]
SI SAI_Montant > 0 ALORS
sRubqRecherche = ( SélectMvts = 1 ? "LigneMvt.MvtDébit" SINON
"LigneMvt.MvtCrédit" )
setOpérateurSQL("ComboRechAvancéeNumérique")
SI ChampExiste(gsNomChampMontant2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur,...
{gsNomChampMontant2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
FIN
// [< Tri sur date Mouvts >]
sCodeSQL += " ORDER BY [DateMvt] ASC"
RENVOYER sCodeSQL
Bien cordialement
Albert
Albert vient de nous annoncer :Bonjour,
Merci et meilleurs voeux également pour 2009
Personnellement je n'utilise que HexecuterequeteSql ce qui permet la
construction
dynamique du code de la requête
De cette façon je ne reprends dans le code de la requete que les
parametres nécessaires
ce qui je pense est de nature a optimiser le temps de réponse et évite
également
les problèmes éventuels avec les parametres a NULL
Cette méthode permet également de rendre le code plus clair par
l"utilisation de la fonction
ChaîneConstruit()
Exemple de code qui ne pose aucun problème
FONCTION sConstruitRequêteSQL()
LOCAL
sRubqRecherche, sCodeSQL, sCondition sont des chaînes
b_And est un booléen = Faux
// [< Conditions >]
sCodeSQL = "SELECT * FROM LigneMvt WHERE "
// [< Exercices >]
SI Taille(SAI_Exercice) = 4 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[Exercice] = '%1'", SAI_Exercice)
b_And = Vrai
FIN
// [< Journal >]
SI Taille(SAI_Jnl) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDJnl] = '%1'", SAI_Jnl)
b_And = Vrai
FIN
// [< Rubrique >]
SI Taille(SAI_Compte) = 2 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] LIKE '%1%'", SAI_Compte)
b_And = Vrai
FIN
// [< Compte >]
SI Taille(SAI_Compte) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] = '%1'", SAI_Compte)
b_And = Vrai
FIN
// [< Commentaire >]
SI Taille(SAI_Note) > 0 ALORS
gsOpérateurSQL = "LIKE12"
sRubqRecherche = "LigneMvt.Commentaire"
sCondition = sConstruitConditionSQL(sRubqRecherche, SAI_Note, EOT )
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Dates >]
SI SAI_Date <> "" ALORS
SAI_Exercice = ""
sRubqRecherche = "LigneMvt.DateMvt"
setOpérateurSQL("ComboRechAvancéeTexte")
SI ChampExiste(gsNomChampDate2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur,...
{gsNomChampDate2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Montants >]
SI SAI_Montant > 0 ALORS
sRubqRecherche = ( SélectMvts = 1 ? "LigneMvt.MvtDébit" SINON
"LigneMvt.MvtCrédit" )
setOpérateurSQL("ComboRechAvancéeNumérique")
SI ChampExiste(gsNomChampMontant2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur,...
{gsNomChampMontant2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
FIN
// [< Tri sur date Mouvts >]
sCodeSQL += " ORDER BY [DateMvt] ASC"
RENVOYER sCodeSQL
Bien cordialement
Albert
plus clair ?????
juste pour toi alors ... :-)))
Albert vient de nous annoncer :
Bonjour,
Merci et meilleurs voeux également pour 2009
Personnellement je n'utilise que HexecuterequeteSql ce qui permet la
construction
dynamique du code de la requête
De cette façon je ne reprends dans le code de la requete que les
parametres nécessaires
ce qui je pense est de nature a optimiser le temps de réponse et évite
également
les problèmes éventuels avec les parametres a NULL
Cette méthode permet également de rendre le code plus clair par
l"utilisation de la fonction
ChaîneConstruit()
Exemple de code qui ne pose aucun problème
FONCTION sConstruitRequêteSQL()
LOCAL
sRubqRecherche, sCodeSQL, sCondition sont des chaînes
b_And est un booléen = Faux
// [< Conditions >]
sCodeSQL = "SELECT * FROM LigneMvt WHERE "
// [< Exercices >]
SI Taille(SAI_Exercice) = 4 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[Exercice] = '%1'", SAI_Exercice)
b_And = Vrai
FIN
// [< Journal >]
SI Taille(SAI_Jnl) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDJnl] = '%1'", SAI_Jnl)
b_And = Vrai
FIN
// [< Rubrique >]
SI Taille(SAI_Compte) = 2 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] LIKE '%1%'", SAI_Compte)
b_And = Vrai
FIN
// [< Compte >]
SI Taille(SAI_Compte) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] = '%1'", SAI_Compte)
b_And = Vrai
FIN
// [< Commentaire >]
SI Taille(SAI_Note) > 0 ALORS
gsOpérateurSQL = "LIKE12"
sRubqRecherche = "LigneMvt.Commentaire"
sCondition = sConstruitConditionSQL(sRubqRecherche, SAI_Note, EOT )
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Dates >]
SI SAI_Date <> "" ALORS
SAI_Exercice = ""
sRubqRecherche = "LigneMvt.DateMvt"
setOpérateurSQL("ComboRechAvancéeTexte")
SI ChampExiste(gsNomChampDate2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur,...
{gsNomChampDate2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Montants >]
SI SAI_Montant > 0 ALORS
sRubqRecherche = ( SélectMvts = 1 ? "LigneMvt.MvtDébit" SINON
"LigneMvt.MvtCrédit" )
setOpérateurSQL("ComboRechAvancéeNumérique")
SI ChampExiste(gsNomChampMontant2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur,...
{gsNomChampMontant2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
FIN
// [< Tri sur date Mouvts >]
sCodeSQL += " ORDER BY [DateMvt] ASC"
RENVOYER sCodeSQL
Bien cordialement
Albert
plus clair ?????
juste pour toi alors ... :-)))
Albert vient de nous annoncer :Bonjour,
Merci et meilleurs voeux également pour 2009
Personnellement je n'utilise que HexecuterequeteSql ce qui permet la
construction
dynamique du code de la requête
De cette façon je ne reprends dans le code de la requete que les
parametres nécessaires
ce qui je pense est de nature a optimiser le temps de réponse et évite
également
les problèmes éventuels avec les parametres a NULL
Cette méthode permet également de rendre le code plus clair par
l"utilisation de la fonction
ChaîneConstruit()
Exemple de code qui ne pose aucun problème
FONCTION sConstruitRequêteSQL()
LOCAL
sRubqRecherche, sCodeSQL, sCondition sont des chaînes
b_And est un booléen = Faux
// [< Conditions >]
sCodeSQL = "SELECT * FROM LigneMvt WHERE "
// [< Exercices >]
SI Taille(SAI_Exercice) = 4 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[Exercice] = '%1'", SAI_Exercice)
b_And = Vrai
FIN
// [< Journal >]
SI Taille(SAI_Jnl) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDJnl] = '%1'", SAI_Jnl)
b_And = Vrai
FIN
// [< Rubrique >]
SI Taille(SAI_Compte) = 2 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] LIKE '%1%'", SAI_Compte)
b_And = Vrai
FIN
// [< Compte >]
SI Taille(SAI_Compte) = 3 ALORS
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + ChaîneConstruit
("[IDCompte] = '%1'", SAI_Compte)
b_And = Vrai
FIN
// [< Commentaire >]
SI Taille(SAI_Note) > 0 ALORS
gsOpérateurSQL = "LIKE12"
sRubqRecherche = "LigneMvt.Commentaire"
sCondition = sConstruitConditionSQL(sRubqRecherche, SAI_Note, EOT )
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Dates >]
SI SAI_Date <> "" ALORS
SAI_Exercice = ""
sRubqRecherche = "LigneMvt.DateMvt"
setOpérateurSQL("ComboRechAvancéeTexte")
SI ChampExiste(gsNomChampDate2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur,...
{gsNomChampDate2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampDate,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
b_And = Vrai
FIN
// [< Montants >]
SI SAI_Montant > 0 ALORS
sRubqRecherche = ( SélectMvts = 1 ? "LigneMvt.MvtDébit" SINON
"LigneMvt.MvtCrédit" )
setOpérateurSQL("ComboRechAvancéeNumérique")
SI ChampExiste(gsNomChampMontant2) ALORS
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur,...
{gsNomChampMontant2,indChamp}..Valeur)
SINON
sCondition = sConstruitConditionSQL(sRubqRecherche,
{gsNomChampMontant,indChamp}..Valeur, EOT )
FIN
sCodeSQL += (b_And = Faux ? "" SINON " AND ") + sCondition
FIN
// [< Tri sur date Mouvts >]
sCodeSQL += " ORDER BY [DateMvt] ASC"
RENVOYER sCodeSQL
Bien cordialement
Albert
plus clair ?????
juste pour toi alors ... :-)))