我正在尝试使用变量对象执行动态soql查询。 在我的visualforce页面中,我有两个顶点:selectlist,第一个包含一个对象列表,当我从这个列表中选择一个对象时,我刷新第二个列表以显示所选对象的字段。 apex:inputText包含要在所选字段中搜索的文本。
<apex:selectList id="listObjects" value="{!selectedObject}" size="1">
<apex:selectOptions value="{!allObjetcs}"></apex:selectOptions>
</apex:SelectList>
<apex:selectList id="listFields" value="{!selectedField}" size="1">
<apex:selectOptions value="{!allFields}"></apex:selectOptions>
</apex:SelectList>
<label>Text to search : </label><apex:inputText id="textResearch" value="{!textResearch}" />
<button id="searchButton" type="button">{!$Label.SEARCH}</button>
public void search() {
result = new List<SearchWrapper>();
System.debug('>>>>>> ALK - in search ');
String query = 'Select Id, ' + selectedField + ' from ' + selectedObject + ' where ' + selectedField + ' like \'%' + textResearch + '\'%';
System.debug('>>>>>> ALK - Query : ' + query);
List<sObject> = (sObject) Database.query(query);
}
请问我如何投射Database.query(查询)以及如何执行此动态查询。
谢谢大家。
答案 0 :(得分:0)
如果您在查询中使用局部变量,则必须在此之前加上“:”。像这样:
String value = 'test';
List<something> result = [select id from something where name = :value];
答案 1 :(得分:0)
尝试以下代码。如果是多列选择字段列表,则可能必须遍历selectedField变量并形成由逗号分隔的字段名称字符串。
String query = 'select '+String.valueOf(selectedField)+' From '+selectedObject+' WHERE Name = \'' + textResearch+'\'';
List<sObject> recordList = Database.query(query);
答案 2 :(得分:0)
public void search() {
result = new List<SearchWrapper>();
String query = 'Select ' + selectedField + ' from ' + selectedObject + ' where ' + selectedField + ' like \'%' + textResearch + '%\'';
System.debug('>>>>>> Query : ' + query);
List<sObject> l = Database.query(query);
}