La bonne syntaxe?

Bonjour,

Je cherche à réaliser une requête en utilisant des pointeurs sur champ, mais à la compilation ça refuse de passer. COmment dois-je écrire cette requête pour qu’elle passe ?
<code 4D>
$o_enrg:=New object(
“table”;->[Documents];
“type”;->[Documents]type;
“converti”;->[Documents]ok;
“image”;->[Documents]image;
“obj”;->[Documents]infos
)
READ WRITE(($o_enrg.table)->)
QUERY(($o_enrg.table)->;($o_enrg.converti)->=False;*)
QUERY(($o_enrg.table)->;($o_enrg.type)->=$t_Contenu)
</code 4D>

A la compilation j’ai des messages d’erreur sur les deux dernières lignes pour des opérateurs incompatibles. J’ai essayé de “surparenthèser”, mais sans succès.

Merci par avance pour votre aide !!

Salut, si tu réécris sans passer par un objet et des propriétés, ça plante ?

A quoi sert-il de passer par un objet ?

QUERY(($o_enrg.table)->;($o_enrg.converti)->=False;*)
QUERY(($o_enrg.table)->; & ;($o_enrg.type)->=$t_Contenu)

Bonjour Bertrand,

Actuellement je passe les champs directement et ça passe très bien.

En fait mon code est très résumé. La structure sur laquelle je travaille possède plusieurs tables avec des champs similaires.
Je crée donc un objet contenant des pointeurs sur les champs de la table concernée puis le passe en paramètre d’une méthode qui réalise le travail à faire.

Pour le " &;" il est optionnel. Je me souviens d’un stage avec Olivier Deschanel qui avait omis de le mettre en nous écrivant une requête au tableau. On l’a tous repris, et lui nous a appris alors que par défaut 4D le comprenais comme un “&”. On avait tous l’air bête, le Maître Deschanel nous avait apporté la lumière une fois de plus :mrgreen:

Tu peux contourner en passant par des variables intermédiaires :
<code 4D>
$table_p:=$o_enrg.table
$converti_p:=$o_enrg.converti
$type_p:=$o_enrg.type
QUERY($table_p->;$converti_p->=False;*)
QUERY($table_p->;$type_p->=$t_Contenu)
</code 4D>

De ce que j’ai pu voir, les commandes 4D qui prennent des paramètres entrée/sortie (comme LIRE INFORMATIONS SERIALISATION, par exemple) n’acceptent pas les “morceaux d’objet”, je suppose que ça viendra. Mais avec QUERY, je ne vois pas en quoi cette commande modifierait le paramètre, ce doit être autre chose.

Je ne sais pas si c’est sage, mais je n’aime pas trop mettre des pointeurs de tables ou de champs dans un objet, je préfère utiliser leurs numéros. Ça me semble plus “conservable”, par exemple si je veux le conserver en fichier json.