Combos et Zones répétées
g_remy

 

Pour ceux qui ont du mal à manipuler les combos (en écriture et en lecture) dans les zones répétéés, une p'tite démo :

Pour initialiser une combo dans la ZR en affichage, voici un bout de code qui permet de le faire facilement :

// remplissage de la combo Ccamion qui se trouve dans
// chaque répétition de la ZR

SI PAS HExécuteRequête(Rcamion, vconnexion, hRequêteSansCorrection) ALORS
Erreur("Erreur d’initialisation de la requête" + RC
+ HErreurInfo())
RETOUR
FIN
HLitPremier(Rcamion)
SI PAS HEnDehors(Rcamion) ALORS
ListeSupprimeTout(Ccamion)
ListeAjoute(Ccamion, "<Aucun>" + gLien(""))
FichierVersListeMémoire(Ccamion, Rcamion,...
Rcamion.nom_transpor, Rcamion.nom_transpor,...
Rcamion.cod_transpor)
FIN

La combo est remplie de la même manière dans toutes les répétitions de la ZR. Maintenant pour sélectionner une valeur dans la combo qui est dans la ZR, c'est comme suit :

// dans l'ex, la combo est configurée dans la ZR en tant que
// Zcamion et en valeur

// création de la requête

vrequete = "SELECT pub.ENTBL.COD_ETACDE, pub.ENTBL.cod_transpor FROM pub.entbl"


SI PAS HExécuteRequêteSQL(vresultatSQL, vconnexion,...
hRequêteSansCorrection, vrequete) ALORS
Erreur("Erreur d&#8217;initialisation de la
requête"+RC+HErreurInfo())
RETOUR
FIN
HLitPremier(vresultatSQL)
TANTQUE PAS HEnDehors(vresultatSQL)
// remplissage de la zone répétée
ZoneRépétéeAjouteLigne(ZRportefeuille)
ZRportefeuille = ZoneRépétéeOccurrence(ZRportefeuille)
ZRportefeuille.Zorigine = vresultatSQL.cod_etacde
**************************************************
ZRportefeuille.Zcamion = ListeCherche(Ccamion,...
vresultatSQL.cod_transpor)
// les cod_transport correspondent aux valeurs mémorisées de
// la combo
**************************************************
HLitSuivant(vresultatSQL)
FIN

Voilà, vous savez (je l'espère) initialiser une combo dans une ZR mais le must serait de pouvoir faire ses
modifs direct dans la ZR, c'est facile...regarder la suite :

// dans le code d'un bouton "enregistrer"

POUR vcpt = 1 A ZRportefeuille..Occurrence
*******************************************************
SI ZRportefeuille.Zmodif_bl[vcpt] = "modif" ALORS

// c'est un flag qui me permet de savoir si cette ligne a
// été modifiée, dans le code "a chaque modif et sortie" de
// la combo vous mettez "Zmodif_bl = 'modif'", Zmotif est
// un attibut (champ de saisie, si vous voulez que çà
// marche) de la ZR en valeur
********************************************************
// création de la requête de modification
vrequete = "UPDATE pub.entbl SET dat_livreel = '" + DateVersChaine(ZRportefeuille.Zdat_liv[vcpt],"AAAA-MM-JJ")
+ "',
******************************************************
cod_transpor = '" + Ccamion[ZRportefeuille.Zcamion[vcpt]]+ "'
on récupère la valeur saisie de la combo
******************************************************
WHERE num_bl = '" + VBL_select + "' AND cod_etacde = '" + vetacde_select
+ "' "

SI PAS HExécuteRequêteSQL(vresultatSQL, vconnexion,
hRequêteSansCorrection, vrequete) ALORS
Erreur("Erreur d&#8217;initialisation de la
requête"+RC+HErreurInfo())
RETOUR
FIN
HFerme(vresultatSQL)
HAnnuleDéclaration(vresultatSQL)
FIN

Maintenant vous pouvez gérer les zones répétées pour faire de la saisie sans pb...je vois déjà des sourires sur certains visages