QueryPredicate - équivalent du INNER JOIN

SUGGESTED

Bonjour Thierry,

Tu nous a montré il y a quelques semaines les prédicats sur les OM.

Je cherche à afficher des lignes de demandes d'achats, mais uniquement celles dont l'info libre en entête "DA_ARCHIVE"=0

J'ai crée un predicate "AND", sur lequel j'ajoute mon premier filtre sur le DO_Type
predDOTYPE.Key = "DO_Type";
predDOTYPE.Values.Add("10");

Mais qd je mets le filtre sur le DA_ARCHIVE (je dois donc remonter sur l'entête), je ne vois quelle syntaxe mettre, celle-ci ne fonctionne pas

var predDAARCHIVE = (IPredicateComparison)andPredicate.Predicates.AddNew(ePredicateType.PredicateTypeComparison);
predDAARCHIVE.PredicateTypeComparison = ePredicateTypeComparison.PredicateTypeComparisonEqual;
predDAARCHIVE.Key = "Document.DA_ARCHIVE";
predDAARCHIVE.Values.Add(0);

Merci pour ton aide

  • SUGGESTED

    Bonjour M Poupard,

    Les prédicats traduisent le code en requêtes SQL,

    Veuillez préciser le nom de la table SQL F_DOCENTETE au lieu de l'objet Document,

    Voici un exemple pour afficher les lignes de documents où l'info libre Divers (dans l'en-tête) est égale à TestOM :

    var om_PredicateBuilder = (IPredicateBuilder)om_CIAL;
    
    var om_PredicateAND = (IPredicateCompound)om_PredicateBuilder.Create(ePredicateType.PredicateTypeCompound);
    om_PredicateAND.PredicateTypeCompound = ePredicateTypeCompound.PredicateTypeCompoundAnd;
    
    var om_PredicateInfoLibreEntete = (IPredicateComparison)om_PredicateAND.Predicates.AddNew(ePredicateType.PredicateTypeComparison);
    om_PredicateInfoLibreEntete.Key = "F_DOCENTETE.Divers";
    om_PredicateInfoLibreEntete.PredicateTypeComparison = ePredicateTypeComparison.PredicateTypeComparisonEqual;
    om_PredicateInfoLibreEntete.Values.Add("TestOM");
    
    IBICollection om_LignesDocuments = om_CIAL.FactoryDocumentLigne.QueryPredicate(om_PredicateAND, "DL_No");
    foreach (IBODocumentLigne3 om_DocumentVenteLigne in om_LignesDocuments)
    {
        Console.WriteLine(
            $"{om_DocumentVenteLigne.DO_Date:dd/MM/yy}\t" +
            $"{om_DocumentVenteLigne.DO_Type}\t" +
            $"{om_DocumentVenteLigne.Document.DO_Piece}\t" +
            $"{om_DocumentVenteLigne.Article.AR_Ref}\t" +
            $"{om_DocumentVenteLigne.DL_Qte:0.00}");
    }

    Faites nous savoir si cette réponse  à été utile en le marquant comme vérifiée.

    Pour cela, au niveau de la réponse apportée, cliquer sur l'option "Vérifier la réponse".

    Merci d'avoir utilisé la communauté.


    Cordialement.