2012-03-01 11 views
8

Sto tentando di aggiornare un record tramite l'API Salesforce (Enterprise WSDL).Aggiornamento non funzionante nell'API Salesforce

Il codice riportato di seguito viene eseguito correttamente e il parametro SaveResult restituito indica che l'operazione è andata a buon fine.

Eppure, quando guardo in SalesForce, il record non è stato aggiornato. L'unica cosa che posso pensare è che sto usando l'Id errato - Ma ho controllato quintuplo e l'ho controllato di nuovo e poi ricontrollato.

Qualcuno ha mai incontrato qualcosa del genere? In alternativa, sarò così contento se qualcuno può indicare la stupido errore che ho fatto, probabilmente da qualche parte :-)

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

si dovrebbe dare la risposta qui sotto e accettare la propria risposta per evitare di lasciare aperta questa domanda. – mmix

risposta

18

Quando si utilizza Net per chiamare il metodo Update sulle API, è necessario impostare la * fieldname__cSpecified * campo esplicitamente. Per esempio.

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

Sebbene questo sia solo il caso per alcuni tipi, booleans/numero/date, non si applica alle stringhe. – superfell

+0

Vorrei votare di nuovo se potessi, mi sono tolto i capelli – Miles

+2

abbiamo passato ore a cercare di rintracciare il motivo per cui il nostro client soap non poteva impostare CaseComment.isPublished su true. Grazie a @RobD. Il documento per questo risiede nella parte inferiore della pagina "Considerazioni sull'implementazione" nella Guida per gli sviluppatori dell'API Soap SFDC http://www.salesforce.com/us/developer/docs/api/index_Left.htm#StartTopic=Content/implementation_considerations. htm? SearchType = Stem – cropredy