Chercher dans une collection d'objets

J’ai un “code_route” qui correpond à un nom dans une table des Routes.

J’ai développé cette méthode afin de retourner le nom du prestataire à partir de son code_route.

Peut on faire mieux et plus compact ?

<code 4D>
C_COLLECTION($C_Filter)
$C_Filter:=New collection
$C_Filter.push(“Prestataire_T”)
$C_Filter.push(“Route_code_I”)

C_COLLECTION($C_Route)
$C_Route:=ds.ROUTE.all().toCollection($C_Filter)

C_OBJECT($O)
For each ($O;$C_Route) Until ($O.Route_code_I=Storage_local .routecourante)

End for each

$0:=$O.Prestataire_T

// EOM
</code 4D>

<code 4D>
$c:=$C_Route.query(“Route_code_I = :1”;Storage_local.routecourante)
if($c.length=1)
$0:=$c[0]
end if
</code 4D>

: Vincent DE LACHAUX

<code 4D>
$c:=$C_Route.query(“Route_code_I = :1”;Storage_local.routecourante)
if($c.length=1)
$0:=$c[0]
end if
</code 4D>

Evidemment :mrgreen:

Je remets tout pour les archives:

<code 4D>
C_TEXT($0)

C_COLLECTION($C_Filter)
$C_Filter:=New collection
$C_Filter.push(“Prestataire_T”)
$C_Filter.push(“Route_code_I”)

C_COLLECTION($C_Route)
$C_Route:=ds.ROUTE.query(“Route_code_I = :1”;Storage_local .routecourante).toCollection($C_Filter)

If ($C_Route.length=1)
$0:=$C_Route[0].Prestataire_T
End if

// EOM
</code 4D>

Petite question subsidiaire :
Est-ce pénalisant de ne pas mettre de filtre pour la collection ?

Bonjour,

Je ne comprends pas pourquoi vous faites un toCollection() au lieu de quelque chose comme ceci:

$C_Route:=ds.ROUTE.query(“Route_code_I = :1”;Storage_local.routecourante)

If($C_Route.length>=1)
$0:=$C_Route.first().Prestataire_T
End if

?

: Marie-Sophie LANDRIEU

Je ne comprends pas pourquoi

Comme ça j’aurai découvert le .first() :sunglasses:

<code 4D>
C_TEXT($0)
$0:=“Unknown route code”

C_OBJECT($O_Route)
$O_Route:=ds.ROUTE.query(“Route_code_I = :1”;Storage_local .routecourante)

If ($O_Route.length=1)
$0:=$O_Route.first().Prestataire_T
End if

// EOM
</code 4D>