Valeurs distinctes en ORDA

Hello,

Le code 4D ci-dessous fonctionne impeccablement :

<code 4D>

C_COLLECTION($c_collection_comptes)

LECTURE SEULEMENT([Comptes_bancaires])

TOUT SÉLECTIONNER([Comptes_bancaires])

VALEURS DISTINCTES([Comptes_bancaires]xCC_Compte_En_i;$tabl_B)

LIBÉRER ENREGISTREMENT([Comptes_bancaires])

$c_collection_comptes:=_collection_comptes_Storage

TABLEAU VERS COLLECTION($c_collection_comptes;$tabl_B)

</code 4D>

Comment réaliser la même chose en ORDA ? Je peux écrire :

<code 4D>

C_COLLECTION($c_collection_comptes)

$c_collection_comptes:=_collection_comptes_Storage

$c_collection_comptes:=ds.Comptes_bancaires.all().distinct(“quelque.chose”)

</code 4D>

pour affecter ma collection, mais je ne sais pas quoi mettre dans les parenthèses de distinct(), et j’ai bien évidemment une erreur. Comment arriver à créer une collection avec des valeurs distinctes, en ORDA ? Je suis à bout touchant mais je ne trouve pas. Il semble qu’il manque un bout de code pour remplir les blancs. Merci de votre aide.

Product :4D - 4D Server
OS : Mac OS X

Bonjour,

je mettrais “xCC_Compte_En_i” entre guillemets

Merci, ça marche !

En mettant:

$Entity.nomDesignation:=$Selection.designation

cela devrait marcher mieux :wink:

En mettant:

$Entity.nomDesignation:=$Selection.designation

voila la réponse

[picture]34059031;

[]34059056;“Your comment here…”[/]

merci

Avez vous déclaré votre variable $Selection :?:

C_OBJET($Selection)

Erreur de ma part :oops:

$DesigUniq:=$es.distinct(“designation”)

cette ligne vous retourne une collection :!: donc le contenu c’est des simples elements TEXTE…

Donc, vous décidez de boucler sur votre collection, $Selection doit être déclaré en type TEXTE

C_TEXTE($Selection)

La phase d’affectation dans la boucle doit être:

$Entity.nomDesignation:=$Selection

Bonjour

Attention :

<code 4D>
$es:=ds.COMPTA.query(“designation # ‘’”)
$DesigUniq:=$es.distinct(“designation”)
Pour chaque ($Selection;$DesigUniq)
$Entity:=ds.DESIGNATION.new()
$Entity.nomDesignation:=$DesigUniq.designation
$Status:=$Entity.save()
Fin de chaque

</code 4D>

Attention la ligne $DesigUniq:=$es.distinct(“designation”) Réalise un distinct sur $es et extrait uniquement ‘designation’.

Je te propose ceci :

<code 4D>
c_collection($es;DesigUniq)
c_objet($Selection)

$es:=ds.COMPTA.query(“designation # ‘’”)
$DesigUniq:=$es.distinct()
Pour chaque ($Selection;$DesigUniq)
$Entity:=ds.DESIGNATION.new()
$Entity.nomDesignation:=$Selection.designation
$Status:=$Entity.save()
Fin de chaque

Patrick

</code 4D>

Merci de vous pencher sur mon problème

Avec la proposition de Manuel j’ai toujours la même erreur

Avec la proposition de Patrick j’ai l’erreur "Les arguments sont incompatibles

Dans la doc https://doc.4d.com/4Dv18/4D/18/Pour-chaqueFin-de-chaque.300-4505533.fr.html

je comprends comment faire avec les entités ou sélection d’entités

mais distinct() renvoi une collection et $es:=dsCompta une sélections d’entités

What is the question pour un amateur de 77 qui développe pour son plaisir et veux passer à Orda dans sa base

Merci de vos suggestions

Avec ce code vous avez une erreur ?

<code 4D>
C_COLLECTION ($es;DesigUniq)
C_TEXTE ($Selection)

$es:=ds.COMPTA.query(“designation # ‘’”)
$DesigUniq:=$es.distinct(“designation”)
Pour chaque($Selection;$DesigUniq)
$Entity:=ds.DESIGNATION.new()
$Entity.nomDesignation:=$Selection
$Status:=$Entity.save()
Fin de chaque

</code 4D>

je suis de l’avis de Manuel, le code qu’il vient de fournir devrait fonctionner. Ou alors, il y a un problème de ‘type’ de données entre $Entity.nomDesignation et $Selection

Malheureusement j’ai toujours l’erreur

ds.COMPTA.query renvoi un objet en non pas une collection

comment transformer un objet en collection ou vice et versa

C_COLLECTION($es;$DesigUniq)
C_TEXTE($Selection)

$es:=ds.COMPTA.query(“designation # ‘’”) //ERREUR les Arguments sont incompatibles
$DesigUniq:=$es.distinct(“designation”)
Pour chaque ($Selection;$DesigUniq)
$Entity:=ds.DESIGNATION.new()
$Entity.nomDesignation:=$Selection
$Status:=$Entity.save()
Fin de chaque

Salut.
Essayez ça.

C_COLLECTION(DesigUniq)
C_OBJECT($es)

$es:=ds.COMPTA.query(“designation # ‘’”)
$DesigUniq:=$es.distinct("designation ")

For each ($Selection;$DesigUniq)
$Entity:=ds.DESIGNATION.new()
$Entity.nomDesignation:=$Selection
$Status:=$Entity.save()
End for each

On est vraiment pas doué, ce mettre à 4 pour une simple creation d’enregistrements à partir d’une collection… :oops::roll:

Nouvelle langue. Nous devons pratiquer et apprendre :roll:

Un grand merci Alfonso

Gracias todo funciona :smiley:

Trés cordialement

Bernard

Merci à vous trois pour votre aide je vais pouvoir avancer grâce à vous
:kissing_heart::kissing_heart::kissing_heart:

Bonsoir Bernard,

super que ce soit solutionné (je viens d’attérir)
Cependant, la doc donnait le bon résultat dans son exemple 1 :wink:

<code 4D>
C_OBJECT($entitySelectionTemp)
$entitySelectionTemp:=dataClass.query(“lastName = :1”;“M@”)

</code 4D>

Patrick