PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → help ! disfonctionnement d'une procédure
help ! disfonctionnement d'une procédure
Débuté par herve, 05 oct. 2005 17:40 - 3 réponses
Posté le 05 octobre 2005 - 17:40
bonjour ,

dans l'application il y a une procédure qui permet de créer le numero de la demande effectuer en recherchant le dernier existant +1 dans la base des devis.

de temps a autres( 1 fois sur 100), l'execution de la requete ne retourne aucun enregistrement (le parametre est toujours bien renseigné) se qui provoque le msg :

Info("Aucune donnée ne correspond pour la création du N° GEDEON, voir le Service Informatique "+ code_etab)

Comme la procédure n'est pas bloquée, le numéro créé correspond au 1er n° de la base. donc création d'un doublon.

la re validation de la demande génère toujours la même erreur, sauf si l'application est redémarrée.

le probleme peut il etre un bug de l'execution de la requete ?
Sinon koi ?
Qui peut m'aider ?

Merci à vous tous
RV


code :


PROCEDURE GenereNum()
LOCAL
i est entier=0
Suf_Devis est un chaîne // Date de la demande en cours de création (4 premiers car.)
Numero_Devis est un entier // Numéro de la demande en cours de création (5
derniers car.)
code_etab est une chaine //correspond a l'établissement
clepass est une chaîne
borne_min est chaîne
borne_max est chaîne

// recupere toutes les demandes correspondant à l'etablissement
SI PAS HExécuteRequête(Req_Num_Demande_Code,code_etab) ALORS
Info("Impossible de lire le fichier 'Devis' , pour la
création du N° GEDEON , voir le Service Informatique" ...
+code_etab)
Suf_Devis = ""
ELSE
// Parcours de la requete numdev plus élevé en 1er
HLitPremier
(Req_Num_Demande_Code,Req_Num_Demande_Code.NUM_DEV)
// aucun enreg trouvé
SI HEnDehors(Req_Num_Demande_Code)=Vrai ALORS
// Le fichier DEVIS n'a pas de demande encours
Numero_Devis = 0
Info("Aucune donnée ne correspond pour la création du
N° GEDEON, voir le Service Informatique "+ code_etab)
SINON
// Si changement d'année nouvelle année
SI Gauche(DateSys(),4) >
Req_Num_Demande_Code.NUM_DEV[[4 sur 4]] ALORS
// RAZ du compteur
Numero_Devis = 0
SINON
// Faire + 1 création du nouveau numero
Numero_Devis = Val(Droite
(Req_Num_Demande_Code.NUM_DEV,5)) + 1
FIN
FIN
// complete le numero avec les 0 dans la chaine
Suf_Devis=Droite("00000"+NumériqueVersChaine(Numero_Devis),5)
FIN
// initialisation
HAnnuleDéclaration(Req_Num_Demande_Code)
Numero_Devis=0

// affiche le numero
fen_demande.TXT_NUM..Value = CLIENT.CODE_ETABGEST+"-"+Gauche(DateSys(),4) + "-" + Suf_Devis

// init
Suf_Devis=""

// fin


exemple de numero : HAB200500000
HAB200545687
AEC200534567
Posté le 05 octobre 2005 - 20:55
j'ai le même genre de problème avec des requêtes qui ne renvoient pas la bonne info de temps en temps.

j'ai donc pris l'option de verifier le resultat avant de continuer le traitement et si besoin j'effectue une boucle qui effectue 10 fois la recherche, cette solution à ce jour fonctionne.
Posté le 06 octobre 2005 - 07:43
A mon avis, la chose à faire est de tout simplement, aprés ta requête vérifier si ce code existe ?, Si oui, ajoute 1 a ta variable et ainsi de suiste jusqu'à trouver un numéro vierge !!!


Sinon pourquoi ne pas écrire ton numéro dans un fichier Ini, c'est ce que je fais pour mon appli et c'est trés performant au niveau des accés et vitesse de traitement, plus qu'une requête !!!
Posté le 07 octobre 2005 - 15:43
Merci à vous , je génère un compteur en fonction de l'établissement et de l'année dans des fichiers ini, et cela fonctionne trés bien.

hervé