function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
ab dab d 

Can you Please Help me am getting Query Exception as colon(:) un Excepted token

Public Class DynamicController {


 @AuraEnabled
   Public static List<Sobject> getDynamicValues (String recId , Sobject  SobjctNme){
     // String recorId = recId ;
      String SobjectNme = String.valueOf(SobjctNme) ;
     // Public  List<String> accessibleFields = getFieldsList(SobjctNme) ;
       
       if(!SobjectNme.endsWith('__c')){
            SobjectNme += 'Share' ;
       }
       else {
          SobjectNme = SobjectNme.removeEnd('__c') +'__Share' ; 
       } 
       
      
   
       String theQuery = 'SELECT ' + joinList(getFieldsList(SobjctNme) , ', ') + 
                          ' FROM ' +  SobjectNme + 
                          ' WHERE Id = :recId';
   
   
          return(Database.query(theQuery)); 
   }
    
    Private static List<String> getFieldsList(Sobject SobjectNme){
      Map<String, Schema.SobjectField> fields = SobjectNme.getSObjectType().getDescribe().fields.getMap();
           List<String > accessibleFields = new List<String>() ;
        for (String s : fields.keySet()) {
            if ( (fields.get(s).getDescribe().isAccessible())) {
                accessibleFields.add(s); 
            }
        }
         return accessibleFields ;
       }

    // Join an Apex List of fields into a SELECT fields list string
    private static String joinList(List<String> theList, String separator) {

        if (theList == null)   { return null; }
        if (separator == null) { separator = ''; }

        String joined = '';
        Boolean firstItem = true;
        for (String item : theList) {
            if(null != item) {
                if(firstItem){ firstItem = false; }
                else { joined += separator; }
                joined += item;
            }
        }
        return joined;
    }
   


Please Help Me...
Raj VakatiRaj Vakati
Change SOQL query as below 
 
String theQuery = 'SELECT ' + joinList(getFieldsList(SobjctNme) , ', ') + 
					  ' FROM ' +  SobjectNme + 
					  ' WHERE Id = \''+recId+'\'';
 
Public Class DynamicController {


@AuraEnabled
Public static List<Sobject> getDynamicValues (String recId , Sobject  SobjctNme){
 // String recorId = recId ;
  String SobjectNme = String.valueOf(SobjctNme) ;
 // Public  List<String> accessibleFields = getFieldsList(SobjctNme) ;
   
   if(!SobjectNme.endsWith('__c')){
		SobjectNme += 'Share' ;
   }
   else {
	  SobjectNme = SobjectNme.removeEnd('__c') +'__Share' ; 
   } 
   
  

   String theQuery = 'SELECT ' + joinList(getFieldsList(SobjctNme) , ', ') + 
					  ' FROM ' +  SobjectNme + 
					  ' WHERE Id = \''+recId+'\'';


	  return(Database.query(theQuery)); 
}

Private static List<String> getFieldsList(Sobject SobjectNme){
  Map<String, Schema.SobjectField> fields = SobjectNme.getSObjectType().getDescribe().fields.getMap();
	   List<String > accessibleFields = new List<String>() ;
	for (String s : fields.keySet()) {
		if ( (fields.get(s).getDescribe().isAccessible())) {
			accessibleFields.add(s); 
		}
	}
	 return accessibleFields ;
   }

// Join an Apex List of fields into a SELECT fields list string
private static String joinList(List<String> theList, String separator) {

	if (theList == null)   { return null; }
	if (separator == null) { separator = ''; }

	String joined = '';
	Boolean firstItem = true;
	for (String item : theList) {
		if(null != item) {
			if(firstItem){ firstItem = false; }
			else { joined += separator; }
			joined += item;
		}
	}
	return joined;
}

} Public Class DynamicController {


@AuraEnabled
Public static List<Sobject> getDynamicValues (String recId , Sobject  SobjctNme){
 // String recorId = recId ;
  String SobjectNme = String.valueOf(SobjctNme) ;
 // Public  List<String> accessibleFields = getFieldsList(SobjctNme) ;
   
   if(!SobjectNme.endsWith('__c')){
		SobjectNme += 'Share' ;
   }
   else {
	  SobjectNme = SobjectNme.removeEnd('__c') +'__Share' ; 
   } 
   
  
 String theQuery = 'SELECT ' + joinList(getFieldsList(SobjctNme) , ', ') + 
					  ' FROM ' +  SobjectNme + 
					  ' WHERE Id = \''+recId+'\'';



	  return(Database.query(theQuery)); 
}

Private static List<String> getFieldsList(Sobject SobjectNme){
  Map<String, Schema.SobjectField> fields = SobjectNme.getSObjectType().getDescribe().fields.getMap();
	   List<String > accessibleFields = new List<String>() ;
	for (String s : fields.keySet()) {
		if ( (fields.get(s).getDescribe().isAccessible())) {
			accessibleFields.add(s); 
		}
	}
	 return accessibleFields ;
   }

// Join an Apex List of fields into a SELECT fields list string
private static String joinList(List<String> theList, String separator) {

	if (theList == null)   { return null; }
	if (separator == null) { separator = ''; }

	String joined = '';
	Boolean firstItem = true;
	for (String item : theList) {
		if(null != item) {
			if(firstItem){ firstItem = false; }
			else { joined += separator; }
			joined += item;
		}
	}
	return joined;
}

}

 
ab dab d
Thanks but I want to replace the Id with object Id,
Example: if account is SobjectNme present Id is accountshare id ,
but I want to replace with account Id field in query dynamically based on the object Name coming from component.
Sohan Raj GuptaSohan Raj Gupta
If you are writing SOQL query in string then you can not use colon (:) for fields values. So, you need to change SOQL query as below:

String theQuery = 'SELECT ' + joinList(getFieldsList(SobjctNme) , ', ') + 
                          ' FROM ' +  SobjectNme + 
                          ' WHERE Id = ' + recId;