You need to sign in to do that
Don't have an account?
JosephJ
Search by OwnerId for Task object???
I tried each and every possibility to know where i'm going wrong but still no luck. My issue is my search (i.e. filter) is working on Subject,Status and Date field for Task object .
Now i want to search for one more column which is "OwnerId" . I know it can be done using if condition something like below but what should be "IF condition " to get to the goal ?
if (logical condition to filter by owner) {
qStr + ' and OwnerId in :ownerIds';
I'm really paralyzed and need help.
public class PagingTasksController1{
public List<Task> Tasks;
public Task del;
public Task taskDel;
public Integer CountTotalRecords{get;set;}
public String QueryString {get;set;}
public Integer OffsetSize = 0;
private Integer QueryLimit =3 ;
public List<Task> lstTasks {get;set;}
public String searchText {get;set;}
public String rowIndex {get;set;}
// public List<Task> attendeeList {get;set;}
public Date mydate;
public Integer totalCount {get;set;}
public string sortField = 'Subject'; // default sort column
private string sApplySOQL = '';
public List<Task> delattendeeList {get;set;}
public List<Task> delAttendees {get; set;}
public PagingTasksController1(ApexPages.StandardController controller) {
taskDel= (Task)controller.getRecord();
Tasks = [Select id,Subject,Status,ActivityDate from Task where OwnerId =: taskDel.Id];
// this.Tasks=Tasks[0];
totalCount = Tasks.size();
delattendeeList = new List<Task>();
delattendees = new List<Task>();
}
// the current sort direction. defaults to ascending
public String sortDir {
get { if (sortDir == null) { sortDir = 'asc'; } return sortDir; }
set;
}
// the current field to sort by. defaults to role name
public String getsortField() {
return sortField;
}
// the current field to sort by.
public void setsortField(string value) {
sortField = value;
}
// toggles the sorting of query from asc<-->desc
public void toggleSort() {
// simply toggle the direction
sortDir = sortDir.equals('asc') ? 'desc' : 'asc';
integer iIndex = sApplySOQL.indexOf('Order By');
if (iIndex > -1){
sApplySOQL = sApplySOQL.substringBefore('Order By');
sApplySOQL = sApplySOQL + ' Order By ' + sortField + ' ' + sortDir + ' limit ' + QueryLimit + ' offset ' + OffsetSize;
}
tasks = Database.query(sApplySOQL );
}
public PagingTasksController1 (){
//CountTotalRecords= [select count() from Task];
//String qStr2= '7/23/2014';
}
public List<Task> getTasks(){
if(tasks == null){
tasks = new List<Task>();
}
return tasks;
}
public void findTasks(){
String qStr2 = 'Select count() from Task where Subject like \'%'+searchText+'%\' OR Status like \'%'+searchText+'%\'';
CountTotalRecords = Database.countQuery(qStr2);
queryTasks();
}
public void queryTasks(){
String qStr2= searchText;
String strnormal = '';
try{
mydate = date.parse(qStr2);
}catch(Exception e)
{ }
String strDate = '';
if(mydate != null) {
// strnormal = String.valueOf(mydate );
String[] qstr3 = String.valueOf(mydate).split(' ',2);
strDate = ' ActivityDate = '+ qstr3[0] + ' ';
}else{
strDate = 'Subject like \'%'+searchText +'%\' OR Status like \'%' +searchText+ '%\' Order By ' + sortField;
}
String qStr = 'Select OwnerId,Subject,Status,ActivityDate from Task where ' + strDate ;
System.debug(qStr );
// String qStr = 'Select OwnerId,Subject,Status,Priority from Task where Subject like \'%'+searchText+'%\' OR Status like \'%'+searchText+ '%\' Order By ' + sortField;
sApplySOQL = qStr;
tasks = Database.query(sApplySOQL );
//tasks.sort();
}
public Boolean getDisablePrevious(){
if(OffsetSize>0){
return false;
}
else return true;
}
public Boolean getDisableNext() {
if (OffsetSize + QueryLimit < countTotalRecords){
return false;
}
else return true;
}
public PageReference Next() {
OffsetSize += QueryLimit;
queryTasks();
return null;
}
public PageReference Previous() {
OffsetSize -= QueryLimit;
queryTasks();
return null;
}
public PageReference save() {
update tasks;
return ApexPages.CurrentPage();
}
public void deleteRow(){
rowIndex = String.valueOf(ApexPages.currentPage().getParameters().get('rowIndex'));
System.debug('rowIndex ------------'+rowIndex );
if(rowIndex!=null)
{
Task check=[Select id from Task where id=: rowIndex];
System.debug('row to be deleted ' + check);
delete check;
Tasks=[Select Subject,Status,ActivityDate,OwnerId from Task ];
update Tasks;
}
}
}
Now i want to search for one more column which is "OwnerId" . I know it can be done using if condition something like below but what should be "IF condition " to get to the goal ?
if (logical condition to filter by owner) {
qStr + ' and OwnerId in :ownerIds';
I'm really paralyzed and need help.
public class PagingTasksController1{
public List<Task> Tasks;
public Task del;
public Task taskDel;
public Integer CountTotalRecords{get;set;}
public String QueryString {get;set;}
public Integer OffsetSize = 0;
private Integer QueryLimit =3 ;
public List<Task> lstTasks {get;set;}
public String searchText {get;set;}
public String rowIndex {get;set;}
// public List<Task> attendeeList {get;set;}
public Date mydate;
public Integer totalCount {get;set;}
public string sortField = 'Subject'; // default sort column
private string sApplySOQL = '';
public List<Task> delattendeeList {get;set;}
public List<Task> delAttendees {get; set;}
public PagingTasksController1(ApexPages.StandardController controller) {
taskDel= (Task)controller.getRecord();
Tasks = [Select id,Subject,Status,ActivityDate from Task where OwnerId =: taskDel.Id];
// this.Tasks=Tasks[0];
totalCount = Tasks.size();
delattendeeList = new List<Task>();
delattendees = new List<Task>();
}
// the current sort direction. defaults to ascending
public String sortDir {
get { if (sortDir == null) { sortDir = 'asc'; } return sortDir; }
set;
}
// the current field to sort by. defaults to role name
public String getsortField() {
return sortField;
}
// the current field to sort by.
public void setsortField(string value) {
sortField = value;
}
// toggles the sorting of query from asc<-->desc
public void toggleSort() {
// simply toggle the direction
sortDir = sortDir.equals('asc') ? 'desc' : 'asc';
integer iIndex = sApplySOQL.indexOf('Order By');
if (iIndex > -1){
sApplySOQL = sApplySOQL.substringBefore('Order By');
sApplySOQL = sApplySOQL + ' Order By ' + sortField + ' ' + sortDir + ' limit ' + QueryLimit + ' offset ' + OffsetSize;
}
tasks = Database.query(sApplySOQL );
}
public PagingTasksController1 (){
//CountTotalRecords= [select count() from Task];
//String qStr2= '7/23/2014';
}
public List<Task> getTasks(){
if(tasks == null){
tasks = new List<Task>();
}
return tasks;
}
public void findTasks(){
String qStr2 = 'Select count() from Task where Subject like \'%'+searchText+'%\' OR Status like \'%'+searchText+'%\'';
CountTotalRecords = Database.countQuery(qStr2);
queryTasks();
}
public void queryTasks(){
String qStr2= searchText;
String strnormal = '';
try{
mydate = date.parse(qStr2);
}catch(Exception e)
{ }
String strDate = '';
if(mydate != null) {
// strnormal = String.valueOf(mydate );
String[] qstr3 = String.valueOf(mydate).split(' ',2);
strDate = ' ActivityDate = '+ qstr3[0] + ' ';
}else{
strDate = 'Subject like \'%'+searchText +'%\' OR Status like \'%' +searchText+ '%\' Order By ' + sortField;
}
String qStr = 'Select OwnerId,Subject,Status,ActivityDate from Task where ' + strDate ;
System.debug(qStr );
// String qStr = 'Select OwnerId,Subject,Status,Priority from Task where Subject like \'%'+searchText+'%\' OR Status like \'%'+searchText+ '%\' Order By ' + sortField;
sApplySOQL = qStr;
tasks = Database.query(sApplySOQL );
//tasks.sort();
}
public Boolean getDisablePrevious(){
if(OffsetSize>0){
return false;
}
else return true;
}
public Boolean getDisableNext() {
if (OffsetSize + QueryLimit < countTotalRecords){
return false;
}
else return true;
}
public PageReference Next() {
OffsetSize += QueryLimit;
queryTasks();
return null;
}
public PageReference Previous() {
OffsetSize -= QueryLimit;
queryTasks();
return null;
}
public PageReference save() {
update tasks;
return ApexPages.CurrentPage();
}
public void deleteRow(){
rowIndex = String.valueOf(ApexPages.currentPage().getParameters().get('rowIndex'));
System.debug('rowIndex ------------'+rowIndex );
if(rowIndex!=null)
{
Task check=[Select id from Task where id=: rowIndex];
System.debug('row to be deleted ' + check);
delete check;
Tasks=[Select Subject,Status,ActivityDate,OwnerId from Task ];
update Tasks;
}
}
}
What exactly happens? No results? Error?
Have you played with or tested your logic in an exec anonymous block in isolation to validate your approach?
I know that this will come ,but would be the code for the below ? It would be helpful
if (logical condition to filter by owner) {
qStr + ' and OwnerId in :ownerIds';
Under what circumstances do you want to have your query include this part of the WHERE clause?
Under what circumstances do you want it to not include this part of the WHERE clause?
I know nothing about what you are trying to accomplish, and why, and frankly don't have time to read through your code to try to understand it, but if you would explain to me, show me your UI, give me some background, I might be able to help. You haven't even shown in your code where ownerIds is coming from, how it is constructed, or a data type (list or set). So it is difficult to come up with an if condition without some more information.
For instance, one possible solution could be the following:
"ownerIds is a set. I need to include this part of the where clause when the ownerIds set has any members"
In that instance I would do the following:
But even this is a shot in the dark without more background from you.
Thanks.
OK..I have implemented Pagination,Search,arror sorting,inline edit on Task object. For the Search ,It is currently working on Subject ,Status and ActivityDate. Now there is one more requirement to filter by OwnerId this is where i'm stucked .
I've not implemented it still in controller becasue there is a confusion. queryTask() is where the whole search is there .below is the code for VF page.Also snapshot shown below.
Hope i'm clear.
<apex:page controller="PagingTasksController1" docType="html-5.0">
<apex:form >
<apex:variable var="rowNumber" value="{!0}"/>
<apex:pageBlock title="Tasks" id="pgBlock" >
<apex:pageBlockButtons >
<apex:commandButton action="{!save}" id="saveButton" value="Save"/>
<apex:commandButton onclick="resetInlineEdit()" id="cancelButton" value="Cancel"/>
</apex:pageBlockButtons>
<apex:inlineEditSupport showOnEdit="saveButton, cancelButton"
hideOnEdit="editButton" event="ondblclick"
changedStyleClass="myBoldClass" resetFunction="resetInlineEdit"/>
<apex:inputText id="searchBox" value="{!searchText}"/>
<apex:commandButton value="Search" reRender="pgTable,pgBlock" action="{!findTasks}"/>
<apex:pageBlockTable value="{!Tasks}" var="tsk" id="pgTable">
<apex:column headerValue="Action" >
<apex:commandButton value="Delete" action="{!deleteRow}" reRender="pgTable">
<apex:param name="rowIndex" value="{!tsk.id}"/>
</apex:commandButton>
</apex:column>
<!-- <apex:column headerValue="Action" >
<apex:outputLink value="{!URLFOR($Action.Task.Delete, .id,['retURL'='/apex/New_Test_task_Assignment'])}"> Delete</apex:outputLink>
</apex:column> -->
<apex:column headerValue="Subject">
<apex:facet name="header">
<apex:commandLink value="Subject" action="{!toggleSort}" rerender="pgTable" >
<apex:param name="sortField" value="Subject" assignTo="{!sortField}"/>
<apex:outputPanel rendered="{!BEGINS(sortField,'Subject')}">
<apex:image value="{!IF(sortDir = 'desc','/img/arrowDown.gif','/img/arrowUp.gif')}"/>
</apex:outputPanel>
</apex:commandLink>
</apex:facet>
<apex:outputField value="{!tsk.Subject}"/>
</apex:column>
<apex:column headerValue="Status">
<apex:facet name="header">
<apex:commandLink value="Status" action="{!toggleSort}" rerender="pgTable" >
<apex:param name="sortField" value="Status" assignTo="{!sortField}"/>
<apex:outputPanel rendered="{!BEGINS(sortField,'Status')}">
<apex:image value="{!IF(sortDir = 'desc','/img/arrowDown.gif','/img/arrowUp.gif')}"/>
</apex:outputPanel>
</apex:commandLink>
</apex:facet>
<apex:outputField value="{!tsk.Status}"/>
</apex:column>
<apex:column headerValue="OwnerId">
<apex:outputField value="{!tsk.OwnerId}"/>
</apex:column>
<apex:column headerValue="date">
<apex:outputField value="{!tsk.ActivityDate}"/>
</apex:column>
</apex:pageBlockTable>
<apex:pageBlockButtons >
<apex:commandButton value="Previous" action="{!Previous}" rerender="pgTable,pgBlock"
status="status" disabled="{!DisablePrevious}" />
<apex:commandButton value="Next" action="{!Next}" reRender="pgTable,pgBlock"
status="status" disabled="{!DisableNext}" />
<apex:actionStatus id="status" startText="Please Wait..."/>
</apex:pageBlockButtons>
</apex:pageBlock>
</apex:form>
<apex:enhancedlist type="Activity" height="800" rowsPerPage="50" customizable="False"/>
</apex:page>
public void queryTasks(){
String qStr2= searchText;
Set<Id> ownerIds = new Set<Id>();
String strnormal = '';
try{
mydate = date.parse(qStr2);
}catch(Exception e)
{ }
String strDate = '';
if(mydate != null) {
// strnormal = String.valueOf(mydate );
String[] qstr3 = String.valueOf(mydate).split(' ',2);
strDate = ' ActivityDate = '+ qstr3[0] + ' ';
}else{
strDate = 'Subject like \'%'+searchText +'%\' OR Status like \'%' +searchText+ '%\' Order By ' + sortField;
}
if (ownerIds != null && ownerIds.size() > 0){
String qStr = 'Select OwnerId,Subject,Status,ActivityDate from Task where '+strDate+' limit ' + QueryLimit + ' offset ' + OffsetSize' and OwnerId in :ownerIds';
}
//String qStr ='Select OwnerId,Subject,Status,ActivityDate from Task where \''+strDate +'\' limit ' + QueryLimit + ' offset ' + OffsetSize;
// String qStr = 'Select OwnerId,Subject,Status,ActivityDate from Task where '+strDate+' limit ' + QueryLimit + ' offset ' + OffsetSize;
System.debug(qStr);
// String qStr = 'Select OwnerId,Subject,Status,Priority from Task where Subject like \'%'+searchText+'%\' OR Status like \'%'+searchText+ '%\' Order By ' + sortField;
tasks = Database.query(qStr);
//tasks.sort();
}
You need the + between "OffsetSize" and the single quote that follows to tell Apex to append.
Even when you fix this, you will get a malformed query in its current form. You're appending in the wrong place.
The fragment of your where clause needs to go into the where clause part of your SOQL query. Here:
Forum Usage Suggestion
Another suggestion for using these forums: there is a control in the editor that looks like this:
If you click on that you can add code to your question that is formatted, color-coded, and line numbered. This will make it easier to read. Instead of this:
String strDate = '';
if(mydate != null) {
// strnormal = String.valueOf(mydate );
String[] qstr3 = String.valueOf(mydate).split(' ',2);
strDate = ' ActivityDate = '+ qstr3[0] + ' ';
It will display like this:
The fragment of your where clause needs to go into the where clause part of your SOQL query. Here:
I've written SOQL in iF condition .Now the situation is by search box is not working after writing IF condition and mentioning the query .Could you please make me move forward ??