none
service.Retrieve unvollständiges Ergebnis RRS feed

  • Frage

  • Hallo,

    ich verwende die Methode service.Retrieve um zu einer Opportunity die transactionCurrencyID zu erhalten.

    Die Methode rufe ich wie folgt auf:

            public static IOpportunity GetOpportunityById(ICrmService service, Guid id, ColumnSet cols)
            {
               IOpportunity opportunity = new DynamicOpportunity((DynamicEntity)response.BusinessEntity);

                opportunity op = (opportunity)service.Retrieve(EntityName.opportunity.ToString(), id, cols);
                Logger.WriteVerbose("OpportunityID " + op.opportunityid.Value);
                Logger.WriteVerbose("TransactionID " + op.transactioncurrencyid.Value);

                retrun opportunity;

             }

    Als ColumsSet verwende ich den Entitätsname (habe auch schon einzelne Spalten versucht)

    Die Zeile Logger.WriteVerbose("OpportunityID " + op.opportunityid.Value); wird wie gewünscht ausgeführt und der gefordetre Wert angezeigt.

    Die Zeile Logger.WriteVerbose("TransactionID " + op.opportunityid.Value); erzeugt hingegen den folgenden Fehler:

    "Error! Object reference not set to an instance of an object.", obschon in der Datenbanik ein gültiger Wert steht. Mit anderen Attributen habe ich das gleich Problem. Was mache ich falsch?

    Gruß, Eckart

    Mittwoch, 30. März 2011 06:58

Antworten

  • Hallo Eckart,

    bei dem Währungsfeld handelt es sich um ein Lookup, das du entsprechend auslesen musst (ungetestet):

    Lookup lookupId = (Lookup op.opportunityid.Properties["TransactionID"];
    Logger.WriteVerbose("TransactionID " + lookupId.Value;


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website
    • Als Antwort markiert Michael Sulz Mittwoch, 30. März 2011 13:45
    Mittwoch, 30. März 2011 09:00
  • Hallo,

    der Hinweis mit dem Lookup war doch richtig, zudem brauchte ich aber die Spaltennamen wie in der Datenbank. Das Interface hatte fehlerhafte Namen (Groß-/Kleinschreibung), dies führte zum Fehler.

    Gruß, Eckart

    • Als Antwort markiert Eegi Mittwoch, 30. März 2011 13:38
    Mittwoch, 30. März 2011 13:38

Alle Antworten

  • Hallo Eckart,

    bei dem Währungsfeld handelt es sich um ein Lookup, das du entsprechend auslesen musst (ungetestet):

    Lookup lookupId = (Lookup op.opportunityid.Properties["TransactionID"];
    Logger.WriteVerbose("TransactionID " + lookupId.Value;


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website
    • Als Antwort markiert Michael Sulz Mittwoch, 30. März 2011 13:45
    Mittwoch, 30. März 2011 09:00
  • Hallo Michael,

    ich habe wie folgt programmiert:

                Lookup lookupId = (Lookup) op.transactioncurrencyid;
                Logger.WriteVerbose("TransactionID " + lookupId.Value);

    Die Fehlermeldung ist die gleiche.

    Gruß, Eckart

    Mittwoch, 30. März 2011 09:21
  • Hallo,

    der Hinweis mit dem Lookup war doch richtig, zudem brauchte ich aber die Spaltennamen wie in der Datenbank. Das Interface hatte fehlerhafte Namen (Groß-/Kleinschreibung), dies führte zum Fehler.

    Gruß, Eckart

    • Als Antwort markiert Eegi Mittwoch, 30. März 2011 13:38
    Mittwoch, 30. März 2011 13:38