You need to sign in to do that
Don't have an account?
Renato Moran
Problem returning record id. It comes as null.
In the code below a Visualforce was created to attach documents and photos in Salesforce in a customized way. However, when making the attachment, it is not returning the record id. Does anyone know why?
Visualforce Page in Case Object
Controller in Case Object
Does anyone know how to solve the problem?
Visualforce Page in Case Object
<apex:page standardController="Case" tabStyle="Case" extensions="UploadAttachmentController"> <apex:sectionHeader title="{!Case.CaseNumber}" subtitle="Attach File"/> <apex:form id="form_Upload"> <apex:pageBlock > <apex:pageBlockButtons > <apex:commandButton action="{!back}" value="Back to {!Case.CaseNumber}"/> <apex:commandButton action="{!back}" value="Cancel"/> </apex:pageBlockButtons> <apex:pageMessages /> <apex:pageBlockSection columns="1"> <apex:pageBlockSectionItem > <apex:outputLabel value="File" for="file_File"/> <apex:inputFile id="file_File" value="{!fileBody}" filename="{!fileName}"/> </apex:pageBlockSectionItem> <apex:pageBlockSectionItem > <apex:outputLabel value="Type" for="type"/> <apex:selectList value="{!selectedType}" size="1" id="type"> <apex:selectOption itemValue="Normal" itemLabel="Normal"/> <apex:selectOption itemValue="Jurídico" itemLabel="Jurídico"/> </apex:selectList> </apex:pageBlockSectionItem> <apex:pageBlockSectionItem > <apex:outputLabel value="Description" for="description"/> <apex:inputTextarea id="description" value="{!description}" rows="4" cols="50"/> </apex:pageBlockSectionItem> <apex:pageBlockSectionItem > <apex:outputLabel value="" for="uploadBtn"/> <apex:commandButton id="uploadBtn" value="Attach File" action="{!processUpload}" /> </apex:pageBlockSectionItem> </apex:pageBlockSection> </apex:pageBlock> </apex:form> </apex:page>
Controller in Case Object
public class UploadAttachmentController { public String selectedType {get;set;} public Boolean selectedAwesomeness {get;set;} public String description {get;set;} public Case caso{get;set;} public String fileName {get;set;} public Blob fileBody {get;set;} public UploadAttachmentController(ApexPages.StandardController controller) { this.caso = (Case)controller.getRecord(); System.debug(this.caso); } // creates a new Custom_Attachments__c record private Database.SaveResult saveCustomAttachment() { Custom_Attachments__c obj = new Custom_Attachments__c(); obj.Case__c = caso.Id; obj.description__c = description; obj.type__c = selectedType; // fill out cust obj fields return Database.insert(obj); } // create an actual Attachment record with the Contact_Attachment__c as parent private Database.SaveResult saveStandardAttachment(Id parentId) { Database.SaveResult result; Attachment attachment = new Attachment(); attachment.body = this.fileBody; attachment.name = this.fileName; attachment.parentId = parentId; // inser the attahcment result = Database.insert(attachment); // reset the file for the view state fileBody = Blob.valueOf(' '); return result; } /** * Upload process is: * 1. Insert new Custom_Attachments__c record * 2. Insert new Attachment with the new Contact_Attachment__c record as parent * 3. Update the Custom_Attachments__c record with the ID of the new Attachment **/ public PageReference processUpload() { try { Database.SaveResult customAttachmentResult = saveCustomAttachment(); if (customAttachmentResult == null || !customAttachmentResult.isSuccess()) { ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Could not save attachment.')); return null; } Database.SaveResult attachmentResult = saveStandardAttachment(customAttachmentResult.getId()); if (attachmentResult == null || !attachmentResult.isSuccess()) { ApexPages.AddMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Could not save attachment.')); return null; } else { // update the custom attachment record with some attachment info Custom_Attachments__c customAttachment = [select id from Custom_Attachments__c where id = :customAttachmentResult.getId()]; customAttachment.name = this.fileName; customAttachment.Attachment__c = attachmentResult.getId(); update customAttachment; } } catch (Exception e) { ApexPages.AddMessages(e); return null; } return new PageReference('/'+caso.id); } public PageReference back() { return new PageReference('/'+caso.id); } }
Does anyone know how to solve the problem?
Dhanik L Sahni
Hello Renoto, I don't see any issue in code. While testing are you passing case id on url like /apex/FileUploadTest?id=5002v00002qbQxWAAU