Frage

Ich habe SOQL unten und ich bekomme das Ergebnis, das SObject der ID enthält. Meine Vermutung war die Abfrage als auch die Bereiche SObject zurück. Zum Beispiel meiner Abfrage versuchen „startDay__c“ (das Datum), die wie Feld ShigotoShousai SObject ist zu bekommen. Aber Ergebnis der Abfrage ist nur ID der SObject Instanz.

( Eltern : ShigotoShousai Kind : ShigotoAssign)

sObject[] result = [
  SELECT
  ShigotoShousai__r.id, 
  ShigotoShousai__r.startDay__c
  FROM ShigotoAssign__c
];

system.debug (Ergebnis) Ausgang

shigotoAssign_ c: {Id = a06500000067aNjAAI, ShigotoShousai _c = a055000000DlHnOAAV}, shigotoAssign_ c: {Id = a06500000067aNoAAI, ShigotoShousai _c = a055000000DlHnTAAV})

habe ich ID von ShigotoShousai__c SObject statt dessen Eigenschaft "startDay__c". Ich dachte, Ausgang wäre so etwas wie:

shigotoAssign__c:{ShigotoShousai__c=a055000000DlHnOAAV, startDay__c=2010-10-10}, 
shigotoAssign__c:{ShigotoShousai__c=a055000000DlHnTAAV, startDay__c=2010-10-13})

Aber Abfrageergebnis zurückgegeben mich gerade ID von ShigotoShousai__c SObject: (

Jetzt weiß ich, ID-Wert von ShigotoShousai__c haben und wollen ihre Feld zuzugreifen, so habe ich folgende.

ShigotoShousai__c foo = (ShigotoShousai__c)result[0].get('ShigotoShousai__c');
//now I assume I can access to some fields like below
system.debug(foo.workDate);

Und das gibt mir eine Fehlermeldung:

System.TypeException: Invalid conversion from runtime 
type Id to SOBJECT:shigotoShousai__c

Dann dachte ich, dass ID kann nicht auf SObject (das heißt ShigotoShousai__c) beziehen verwendet werden.

Aber ich seine ID haben .. Wie kann ich, sagen startDay__c? Gibt es eine Möglichkeit, diese ID zu benutzen?

War es hilfreich?

Lösung

Das Problem ist, dass Sie das SOQL Abfrageergebnis zu dem generischen SObject zuweisen [], die keine konkreten haben Felder der eigenen, mit Ausnahme von Id. Solange Sie nicht so etwas zu tun, etwas Phantasie mit dynamischen SOQL, versuchen Sie versuchen:

ShigotoAssign__c[] result = [
  SELECT
  ShigotoShousai__r.id, 
  ShigotoShousai__r.startDay__c
  FROM ShigotoAssign__c
];

for(ShigotoAssign__c s : result) {
  System.debug(s.ShigotoShousai__r.startDay__c);
}

Andere Tipps

Auch will nur meine Informationen zu teilen, da es auf die Frage bezogen ist. Hoffentlich jemand findet diese Informationen hilfreich.

Unter Abfrage beinhaltet Eltern, Kinder, Enkel und ich Spitze jeweils Werte zu erreichen. Nun kann ich diesen Wert auf Visual Seite angezeigt werden:)

    //WORK
    public String workName { get; set; }
    public String workContent { get; set; }
    public String workCategory { get; set; }
    public String workSponsor { get; set; }
    //WORK DETAIL
    public String workDetailStartDay { get; set; }
    public String workDetailStartHour { get; set; }
    public String workDetailStartMin { get; set; }
    public String workDetailEndDay { get; set; }
    public String workDetailEndHour { get; set; }
    public String workDetailEndMin { get; set; }
    public String workDetailCategory { get; set; }
    public String workDetailDivision { get; set; }
    //WORK ASSIGN

ShigotoAssign__c[] result = [
            SELECT
            ShigotoShousai__r.Shigoto__r.name,
            ShigotoShousai__r.Shigoto__r.workContent__c,
            ShigotoShousai__r.Shigoto__r.category__c,
            ShigotoShousai__r.Shigoto__r.sponsor__c,
            ShigotoShousai__r.id, ShigotoShousai__r.startDay__c, ShigotoShousai__r.startHour__c,
            ShigotoShousai__r.startMin__c,
            ShigotoShousai__r.endDay__c, ShigotoShousai__r.endHour__c, ShigotoShousai__r.endMin__c,
            ShigotoShousai__r.workCategory__c, ShigotoShousai__r.workDivision__c,
            ShigotoShousai__r.address__c,
            id, contactStat__c
            FROM ShigotoAssign__c
            WHERE id = :workAssigned.id
        ];

    //get WORK info to show on email template page
    workName = result[0].ShigotoShousai__r.Shigoto__r.name;
    workContent = result[0].ShigotoShousai__r.Shigoto__r.workContent__c;
    workSponsor = result[0].ShigotoShousai__r.Shigoto__r.sponsor__c;
    //get WORK DETAIL info to show on email template page
    workDetailStartDay = String.valueOf(result[0].ShigotoShousai__r.startDay__c);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top