2012-03-01 20 views
8

Próbuję zaktualizować rekord za pośrednictwem interfejsu API SalesForce (Enterprise WSDL).Aktualizacja nie działa w interfejsie API SalesForce

Poniższy kod wykonuje polecenie dokładne, a komunikat saveResult zwraca informację, że operacja zakończyła się pomyślnie.

Jednak, gdy patrzę w SalesForce - rekord nie został zaktualizowany. Jedyne, co mogę wymyślić to to, że używam niewłaściwego identyfikatora - ale mam pięciokrotne sprawdzanie tego i sprawdziłem to ponownie, a następnie ponownie sprawdziłem.

Czy ktoś wcześniej napotkał coś takiego? Alternatywnie, będę bardzo zadowolony, jeśli ktoś może wskazać ten głupi błąd, że mam zapewne gdzieś :-)

sforce.Participant__c updateParticipant = new sforce.Participant__c(); 

     updateParticipant.Id = participant.Id.Length == 15? participant.Id : participant.Id.Substring(0, 15); 

     if (updateType == "pre") 
     { 
      updateParticipant.Manual_Download_Date__c = DateTime.Now; 
      updateParticipant.Manual_Download__c = true; 
     } 
     else if (updateType == "post") 
     { 
      updateParticipant.Post_Class_Manual_Download__c = true; 
      updateParticipant.Post_Class_Manual_Downloaded_Date__c = DateTime.Now; 
     } 

     sforce.SaveResult[] result = SFLib.sfdc.update(new sforce.sObject[] { updateParticipant }); 
     if (result == null || result.Length <= 0) 
      return false; 
     else 
     { 
      if (result[0].success == true) 
       return true; 
      else 
       throw new Exception("Update participant failed", new Exception(result[0].errors[0].message)); 
     } 
+0

powinieneś podać odpowiedź poniżej i zaakceptować własną odpowiedź, aby uniknąć pozostawienia tego pytania otwarte. – mmix

Odpowiedz

18

Przy użyciu .NET wywołać metodę Update w API, trzeba ustawić * fieldname__cSpecified * pole jawnie. Na przykład.

updateParticipant.aDateField_StartDate__c = DateTime.Now; 
updateParticipant.aDateField_StartDate__cSpecified = true; 
+2

Mimo że dotyczy to tylko niektórych typów, wartości logicznych/liczb/dat, nie ma zastosowania do łańcuchów. – superfell

+0

Chciałbym zagłosować na to jeszcze raz, gdybym mógł, wyciągnąłem moje włosy – Miles

+2

spędziliśmy godziny próbując prześledzić, dlaczego nasz klient nie mógł ustawić CaseComment.isPublished na prawdziwy. Dzięki @RobD. Dokument znajduje się na dole strony "Wskazówki dotyczące implementacji" w Przewodniku dla programistów interfejsu API mydła SFDC http://www.salesforce.com/us/developer/docs/api/index_Left.htm#StartTopic=Content/implementation_considerations. htm? SearchType = Pytanie – cropredy

Powiązane problemy