PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → Affecter une valeur a la combo d'une ligne dans un champ Table
Affecter une valeur a la combo d'une ligne dans un champ Table
Iniciado por Juju, 18,sep. 2018 14:49 - 5 respuestas
Miembro registrado
87 mensajes
Popularité : +4 (4 votes)
Publicado el 18,septiembre 2018 - 14:49
Bonjour à tous,

Grâce à une requête, je rempli un champ table qui contient la liste de toutes mes commandes en cours. Pour la colonne des transporteurs je veux afficher la liste de tous les transporteurs existants dans ma table transporteur. Et si ma commande a un transporteur affecté, sélectionner le transporteur en question dans cette combo.





J'ai donc affecté au contenu de ma colonne, mon champ transporteur voulu :





HExécuteRequêteSQL(sdReq,sReqFormatText)
HLitPremier(sdReq)
TableSupprimeTout(TABLE_SuiviCmd)
FEN_Suivi.TABLE_SuiviCmd..Visible = Vrai
POUR TOUT sdReq

// On recherche le code transporteur associé à la commande...
i est un entier = ListeCherche(TABLE_SuiviCmd.COL_TR_CODE_TRP,sdReq.TR_LIB_TRP)
TableAjouteLigne(TABLE_SuiviCmd,sdReq.CMD_DOCUMENT,sdReq.CMD_REF_CMD,i,sdReq.CMD_DATE,sdReq.CMD_POIDS,sdReq.CMD_NB_COLIS,sdReq.CMD_DATE_VALID,sdReq.CMD_USER_VALID,sdReq.CMD_DATE_EXPE,sdReq.ETA_LIBELLE, sdReq.CMD_VENDEUR)
FIN

// si sdReq.TR_LIB_TRP <> "" alors
// ListeSelectPlus(TABLE_SuiviCmd.COL_TR_CODE_TRP,i)
// FIN


Mais sans succès cela me sélectionne le transporteur toujours sur la première ligne de mon champ TABLE, comment lui indiquer que je veux que cela soit sur la ligne en cours ?
Ou bien dois-je utiliser un LigneSelectPlus.. j'ai essayé également mais sans succès.

Merci d'avance
Mensaje modificado, 18,septiembre 2018 - 14:55
Miembro registrado
182 mensajes
Popularité : +10 (10 votes)
Publicado el 18,septiembre 2018 - 15:41
Perso, je ferais plutôt ça (pas testé) :

i est un entier
POUR TOUT sdReq
TableAjouteLigne(TABLE_SuiviCmd,sdReq.CMD_DOCUMENT,sdReq.CMD_REF_CMD,i,sdReq.CMD_DATE,sdReq.CMD_POIDS,sdReq.CMD_NB_COLIS,sdReq.CMD_DATE_VALID,sdReq.CMD_USER_VALID,sdReq.CMD_DATE_EXPE,sdReq.ETA_LIBELLE, sdReq.CMD_VENDEUR)

// On recherche le code transporteur associé à la commande...
i = ListeCherche(COL_TR_CODE_TRP,sdReq.TR_LIB_TRP)
SI i <> -1 ALORS
ListeSelectPlus(COL_TR_CODE_TRP, i)
FIN
FIN
Miembro registrado
87 mensajes
Popularité : +4 (4 votes)
Publicado el 19,septiembre 2018 - 09:16




Bonjour,

Cela compile mais cela ne m'affiche pas le bon transporteur en face de la bonne commande ...
Miembro registrado
165 mensajes
Popularité : +12 (12 votes)
Publicado el 19,septiembre 2018 - 10:27
Bonjour;
j'ai modifié un peu le code, mais pas tester
i est un entier
POUR TOUT sdReq
TableAjouteLigne(TABLE_SuiviCmd,sdReq.CMD_DOCUMENT,sdReq.CMD_REF_CMD,i,sdReq.CMD_DATE,sdReq.CMD_POIDS,sdReq.CMD_NB_COLIS,sdReq.CMD_DATE_VALID,sdReq.CMD_USER_VALID,sdReq.CMD_DATE_EXPE,sdReq.ETA_LIBELLE, sdReq.CMD_VENDEUR)

// On recherche le code transporteur associé à la commande...
i = ListeCherche(COL_TR_CODE_TRP,sdReq.TR_LIB_TRP)
SI i < 0 ALORS
TABLE_SuiviCmd.COL_TR_CODE_TRP=1
SINON
TABLE_SuiviCmd.COL_TR_CODE_TRP= i
FIN
FIN


Bon Dev.
Mensaje modificado, 19,septiembre 2018 - 10:30
Miembro registrado
87 mensajes
Popularité : +4 (4 votes)
Publicado el 19,septiembre 2018 - 10:57




Dans toute ma liste de commande j'ai une seule commande qui a un transporteur affecté. La 1941. Et là avec ton code cela me met le transporteur de cette commande sur toutes les lignes ... sauf 1 la 1942 ... bizarre.
J'ai également tenté de sélectionner la ligne du tableau de cette façon :

POUR TOUT sdReq

// On recherche le code transporteur associé à la commande...

i = ListeCherche(TABLE_SuiviCmd.COL_TR_CODE_TRP,sdReq.TR_LIB_TRP)
TableAjouteLigne(TABLE_SuiviCmd,sdReq.CMD_DOCUMENT,sdReq.CMD_REF_CMD,i,sdReq.CMD_DATE,sdReq.CMD_POIDS,sdReq.CMD_NB_COLIS,sdReq.CMD_DATE_VALID,sdReq.CMD_USER_VALID,sdReq.CMD_DATE_EXPE,sdReq.ETA_LIBELLE, sdReq.CMD_VENDEUR)
j++
SI i <> -1 ALORS
TableSelectPlus(TABLE_SuiviCmd, j)
ListeSelectPlus(TABLE_SuiviCmd.COL_TR_CODE_TRP,i)
SINON
TableSelectPlus(TABLE_SuiviCmd, j)
ListeSelectPlus(TABLE_SuiviCmd.COL_TR_CODE_TRP,-1)
FIN


FIN


C'est mieux ma commande a bien le bon code transporteur mais toutes les autres commandes ont le premier transporteur de ma liste déroulante au lieu d'être à vide ...



Miembro registrado
87 mensajes
Popularité : +4 (4 votes)
Publicado el 19,septiembre 2018 - 11:21
Erratum, en fait mon code fonctionne :)

POUR TOUT sdReq
// TableAjouteLigne(TABLE_SuiviCmd,sdReq.CMD_DOCUMENT,sdReq.TR_CODE_TRP,sdReq.CMD_LP,sdReq.CMD_POIDS,sdReq.CMD_NB_COLIS,sdReq.CMD_DATE_VALID,sdReq.CMD_HEURE_VALID,sdReq.CMD_USER_VALID,sdReq.CMD_DATE_EXPE,sdReq.CMD_HEURE_EXPE,sdReq.CMD_USER_EXPE,sdReq.ETA_LIBELLE)
// On recherche le code transporteur associé à la commande...

SI sdReq.CMD_DOCUMENT = "1941" ALORS
sdReq.CMD_DOCUMENT = "1941"
FIN
//i = ListeCherche(TABLE_SuiviCmd.COL_TR_CODE_TRP,sdReq.TR_LIB_TRP)
TableAjouteLigne(TABLE_SuiviCmd,sdReq.CMD_DOCUMENT,sdReq.CMD_REF_CMD,i,sdReq.CMD_DATE,sdReq.CMD_POIDS,sdReq.CMD_NB_COLIS,sdReq.CMD_DATE_VALID,sdReq.CMD_USER_VALID,sdReq.CMD_DATE_EXPE,sdReq.ETA_LIBELLE, sdReq.CMD_VENDEUR)
j++
SI i <> -1 ALORS
TableSelectPlus(TABLE_SuiviCmd, j)
ListeSelectPlus(TABLE_SuiviCmd.COL_TR_CODE_TRP,i)
SINON
TableSelectPlus(TABLE_SuiviCmd, j)
TABLE_SuiviCmd.COL_TR_CODE_TRP = -1
FIN
FIN


C'est mes données en base qui n'étaient pas correctes, je leur avait affecté à toutes la valeur 0 à part pour ma commande 1941 (qui contenait l'iD transporteur) au lieu de leur affecter NULL.

L'instruction TableSelectPlus permet donc de sélectionner la ligne en cours du tableau et ensuite on sélectionne le transporteur dans la liste déroulante grâce à l'instruction ListeSelectPlus.

Merci à tous pour votre aide