Bonjour,
J'ai un formulaire contenant une requête affichée dans une table et plusieurs listes déroulantes permettant de servir de paramètre à cette requête.
J'ai un bouton qui me permet d'activer le fitre et mettre à jour la requête en fonction de ce que l'utilisateur a choisi.
L'utilisateur marque ensuite un certain nombre de lignes et appuie sur un bouton VALIDER qui marque un certain nombre de données dans la base.
J'ai un problème, la requête n'affiche pas toujours les mêmes choses surtout après le bouton VALIDER où la plupart des infos ne figurent pas dans la requête , même si on effectue les mêmes sélections dans les combos :
VOICI LE BOUTON FILTRE :
liste_T_TICKETS..Visible = Vrai QUAND EXCEPTION DANS HDésactiveFiltre(reqREGROUPE_LIGNE_JOUR_VENDEUR) FAIRE FIN
//----------------------------------------------------------------------------------// // EN PREMIER LIEU, ON REGARDE LE NOMBRE DE SEQUENCES //----------------------------------------------------------------------------------// SI PAS HExécuteRequête(reqREGROUPE_LIGNE_JOUR_VENDEUR, hRequêteDéfaut) ALORS TitreSuivant("ETAPE 1") Info("ERREUR hExécuteRequête") RETOUR FIN ztTOTAL_SEQUENCES = HNbEnr(reqREGROUPE_LIGNE_JOUR_VENDEUR)
//----------------------------------------------------------------------------------// // PARAMETRES DES DATE //----------------------------------------------------------------------------------/ SI ztDATE_DU..Valeur <> "" ALORS reqREGROUPE_LIGNE_JOUR_VENDEUR.paramDATE_DEB = ztDATE_DU FIN
SI ztDATE_AU..Valeur <> "" ALORS reqREGROUPE_LIGNE_JOUR_VENDEUR.paramDATE_FIN =ztDATE_AU FIN
//----------------------------------------------------------------------------------// // ON REMET TOUS LES SELECTED A FAUX ! //----------------------------------------------------------------------------------// MaREQ est une Source de Données ReqSQL est une chaîne ReqSQL = "UPDATE T_TICKETS " +... "SET SELECTED = 0 " + ... "WHERE SELECTED <> 0" SI PAS HExécuteRequêteSQL(MaREQ, hModifieFichier, ReqSQL) ALORS Info ("PROBLEME DE MISE A JOUR" + RC + "DES DONNEES !") RETOUR FIN
//----------------------------------------------------------------------------------// // PARAMETRE LIGNE / AGENT //----------------------------------------------------------------------------------// SI ztVENDEUR <> "" ALORS reqREGROUPE_LIGNE_JOUR_VENDEUR.paramAGENT = ztVENDEUR FIN
SI ztLIGNE <> "" ALORS reqREGROUPE_LIGNE_JOUR_VENDEUR.paramLIGNE = ztLIGNE FIN
//----------------------------------------------------------------------------------// // EN FONCTION DU FILTRE //----------------------------------------------------------------------------------// HExécuteRequête(reqREGROUPE_LIGNE_JOUR_VENDEUR, hModifieFichier+hAvecFiltre) TableAffiche(liste_T_TICKETS) ztNB_SEQ_NE= TableOccurrence(liste_T_TICKETS)
//----------------------------------------------------------------------------------// // DETAIL DES TICKETS OUI / NON ? //----------------------------------------------------------------------------------// SI TableOccurrence(liste_T_TICKETS) =0 ALORS RETOUR FIN
SI ccDETAIL ALORS MAJ_DETAIL(1, Vrai) listeDETAIL_TICKET..Visible = Vrai SINON listeDETAIL_TICKET..Visible = Faux FIN
//----------------------------------------------------------------------------------// // ON CALCULE LE NOMBRE DE TICKETS NON ENCAISSES //----------------------------------------------------------------------------------// Res est un entier ReqSQL = "SELECT COUNT(*) AS LeCount " +... "FROM T_TICKETS " +... "WHERE ENCAISSE = 0 "
SI ztDATE_DU..Valeur <> "" ALORS ReqSQL = ReqSQL + "AND DATE_TICKET >= '" + ztDATE_DU + "' " FIN SI ztDATE_AU..Valeur <> "" ALORS ReqSQL = ReqSQL + "AND DATE_TICKET <= '" + ztDATE_AU + "' " FIN SI ztVENDEUR <> "" ALORS ReqSQL = ReqSQL + "AND AGENT = '" + ztVENDEUR + "' " FIN
SI ztLIGNE <> "" ALORS ReqSQL = ReqSQL + "AND SERVICE = " + ztLIGNE + " " FIN
SI PAS HExécuteRequêteSQL(MaREQ, hRequêteDéfaut, ReqSQL) ALORS Erreur(HErreurInfo()) RETOUR FIN
Res = HLitPremier(MaREQ) ztTOTAL_TICKETS = MaREQ.LeCount
Jusque là, c'est censé fonctionner parfaitement lors de la 1ere fois. J'ai bien l'ensemble des valeurs issues du filtre.
//----------------------------------------------------------------------------------// // TOTAUX DIFFERENTS... //----------------------------------------------------------------------------------// SI ztTOTAL_CAISSE <> ztTOTAL_SELECT ALORS TitreSuivant("ERREUR DE SAISIE") Erreur("LE TOTAL DES ENCAISSEMENTS" + RC + "NE CORRESPOND PAS AU TOTAL" + RC + "DES RECETTES !") RETOUR FIN
//----------------------------------------------------------------------------------// // AUCUNE LIGNE //----------------------------------------------------------------------------------// SI liste_T_TICKETS..Occurrence = 0 ALORS TitreSuivant("ERREUR DE MANIPULATION") Erreur("IL N'Y A PAS DE RECETTE A" + RC + "ENREGISTRER...") RETOUR FIN
//----------------------------------------------------------------------------------// // AUCUNE LIGNE //----------------------------------------------------------------------------------// NbSelected est un entier I est un entier POUR I = 1 TO liste_T_TICKETS..Occurrence SI liste_T_TICKETS.CHOIX[I] = Vrai ALORS NbSelected++ FIN FIN SI NbSelected = 0 ALORS TitreSuivant("ERREUR DE MANIPULATION") Erreur("AUCUNE RECETTE N'A ETE" + RC + "SELECTIONNEE...") RETOUR FIN
//----------------------------------------------------------------------------------// // DEMANDE DE CONFIRMATION OBLIGATOIRE //----------------------------------------------------------------------------------// Réponse est un entier TitreSuivant("DEMANDE DE CONFIRMATION...") Réponse = OuiNon(0, "ATTENTION, IL NE SERA PAS POSSIBLE" + RC + "D'ANNULER. VOULEZ-VOUS VRAIMENT" + RC + "VALIDER LA CAISSE ?") SI Réponse <> Oui ALORS RETOUR FIN
//----------------------------------------------------------------------------------// // ON ENREGISTRE LA RECETTE //----------------------------------------------------------------------------------// LeMax est un entier LeMax = hMAX("ID_AUTO", "T_RECETTES") + 1 T_RECETTES.ID_AUTO = LeMax T_RECETTES.DATE_REC = ztDATE_JOUR T_RECETTES.TOT_CB = ztTOT_CB T_RECETTES.TOT_ESP = ztTOT_ESP T_RECETTES.TOT_CHQ = ztTOT_CHQ T_RECETTES.TOT_NUL = ztTOT_NUL T_RECETTES.DEPENSES = ztTOT_DEPENSES T_RECETTES.RAISON = ztRAISON HAjoute(T_RECETTES)
//----------------------------------------------------------------------------------// // POUR TOUTES LES LIGNES MARQUEES, ON MET A JOUR // CLE = DATE + SERVICE + CHAUFFEUR //----------------------------------------------------------------------------------// LaDate est une Date LeService est une chaîne LeChauffeur est une chaîne ReqSQL est une chaîne MaREQ est une Source de Données
POUR I = 1 TO liste_T_TICKETS SI liste_T_TICKETS.CHOIX[I] = Vrai ALORS
LaDate = liste_T_TICKETS.DATE_RECETTE[I] LeService = liste_T_TICKETS.LIGNE[I] LeChauffeur = liste_T_TICKETS.VENDEUR[I] ReqSQL = "UPDATE T_TICKETS " + ... "SET ENCAISSE = 1, DATE_ENCAISSE = '" + ztDATE_JOUR + "', NUM_RECETTE = " + LeMax + " " + ... "WHERE DATE_TICKET = '" + LaDate + "' " + ... "AND SERVICE = " + LeService + " " + ... "AND AGENT = '" + LeChauffeur + "' "
SI PAS HExécuteRequêteSQL(MaREQ, hModifieFichier, ReqSQL) ALORS Info("UNE ERREUR A EU LIEU" + RC + "DURANT LA MISE A JOUR") RETOUR FIN FIN FIN
//InitFenêtre() ztDATE_AU = "" ztDATE_DU = "" ztLIGNE = "" ztVENDEUR = "" ztTOT_CB = 0 ztTOT_CHQ = 0 ztTOT_DEPENSES = 0 ztTOT_DIFF = 0 ztTOT_ESP = 0 ztTOT_NUL = 0 ztTOTAL_CAISSE = 0 ztTOTAL_SELECT = 0 ztTOTAL_SEQUENCES = 0 ztTOTAL_TICKETS = 0 ztRAISON = ""
QUAND EXCEPTION DANS HDésactiveFiltre(reqREGROUPE_LIGNE_JOUR_VENDEUR) FAIRE FIN
//----------------------------------------------------------------------------------// // EN PREMIER LIEU, ON REGARDE LE NOMBRE DE SEQUENCES //----------------------------------------------------------------------------------// SI PAS HExécuteRequête(reqREGROUPE_LIGNE_JOUR_VENDEUR, hRequêteDéfaut) ALORS FIN liste_T_TICKETS..Visible = Faux
Et là, si je rechoisis des valeurs dans le combo pour le filtre, il me manque des données : J'ai essayé le InitFenêtre() mais ça ne marche pas. Alors que si je ferme la fenêtre et la réouvre, ça marche !!!!
Je n'ai pas de code sur l'init de la fenêtre et le code de fermerture est Ferme()
Merci de votre aide.
Contact / mail possible pour accélerer les choses.
Vincent BENNER vbenner@pageup.fr |