PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → [Ultra Urgent ++] : pb de mise à jour REQ/FORM
[Ultra Urgent ++] : pb de mise à jour REQ/FORM
Iniciado por vbenner, set., 29 2005 4:16 PM - 1 resposta
Publicado em setembro, 29 2005 - 4:16 PM
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
Publicado em setembro, 30 2005 - 10:46 AM
Bonjour,

Indépendamment de votre problème, vous devriez dans la construction du code de la requête, pensez a utiliser une chaine multiligne avec les [] ce qui a mon avis donne plus de lisibilité au code

ReqSQL = "UPDATE T_TICKETS " + ...
"SET ENCAISSE = 1, DATE_ENCAISSE = '" + ztDATE_JOUR + "', NUM_RECETTE = " + LeMax + " " + ...
"WHERE DATE_TICKET = '" + LaDate + "' " + ...
"AND SERVICE = " + LeService + " " + ...
"AND AGENT = '" + LeChauffeur + "' "

deviendrait :

sCodeSQL est une chaine

sCodeSQL = [
UPDATE T_TICKETS
SET ENCAISSE = 1
DATE_ENCAISSE ='%1'
NUM_RECETTE = %2
WHERE DATE_TICKET = '%3'
AND SERVICE = %4
AND AGENT = '%5'
]

sCodeSQL = chaineconstruit(sCodeSQL,ztDATE_JOUR,LeMax,LaDate,LeService,LeChauffeur)

Cordialement

Albert