+ Start a Discussion

using queryMore?

Hi, I just realized that my queries are only returning 200 records at a time. I'm trying to get all records (the specific user I'm working with has 411 records), but I'm not sure how to use queryMore.

I have my soql statement that's returning 200 records and then after that I have:

if (taskSql.done == "false"){

but it's not working. I've also tried it with false not in quotes.

Anyway, if someone could give me a quick how-to for using the queryMore function in javascript, that would be grand.

Gareth DaviesGareth Davies
This will do it for you.

QueryResult qr = binding.query(YOUR QUERY)

while (notfinished)
if (qr.size > 0 )
if (qr.done)
notfinished= false;
qr = binding.queryMore(qr.queryLocator);
Good luck
Thanks for the help... I've pasted my code below. taskSql is 412 records total & after I added the while loop it totally locks up the browser. Is this normal or am I still doing something wrong?

var notfinished;

var taskSql = new Array();
taskSql = sforceClient.query("Select SOAR_Tracking__c, Call_Duration__c, Purpose__c, Scheduled_First_Appointment__c, ActivityDate, Type from Task where ownerid = '"+globalUserId+"' and (type = 'Outbound Call' or type = 'Foot Canvas') and (activitydate "+lastFridayArraySearch[12]+")");


while (notfinished){
if (taskSql.size > 0 ){
if (taskSql.done){
notfinished = false;
} else {
taskSql = sforceClient.queryMore(taskSql.queryLocator);


Message Edited by zach on 02-06-2006 12:27 PM

Gareth DaviesGareth Davies
no Doesn't sound right!

Sorry we are a C# shop so I may be missing something subtle - but what you've done looks fine.

The only reason it would hang up is if it gets caught in the while loop. This can only happen in two conditions:

1. If setting notfinished=flase does not exit the loop. This may be an issue since it's not c# and there may be a subtle difference - you can try changing the loop to be "while (notfinished==true)" I'd check that in a dummy loop of your own.

2. If the test on taskSQl.done is not returning true [which is almost the logical opposite of 1]

What I'd do is run it through the debugger and see what values you are getting for taskSQL.done and taskSQL.size. If you have a batch size of 200 and 412 records you should see taskSQL.size return the sequence 200,200, 12 and taskSQLdone = false,false,true

You may just want to pop up a message box and have a look at that.

If you are constantly returning 200,200,200,200 and false,false,false,false then It points to something wrong in the querylocator, and I am not sure I know how to start debugging that, but I am sure that you'd not be the first to notice if it were a bug there.

The code I posted is tested and working (against API v6)


Use while (notfinished == true) { ... }

From quirksmode:

Checking a variable

Above we have seen that we can use Boolean logic in a statement like

if (x==4 && (!(y==1) || z==0)
 do something

A second way to use Boolean logic is to see if something exists or not. For instance

if (!x)
 do something

In this example the code is executed if x does NOT exist (x=false).
x is false

  • if x is zero (x=0). So if the output of some calculation is that x is zero, x is false and the code is executed.
  • if x is an empty string (x=''). So if x is a string but has been made empty by some calculation, x is false and the code is executed.
  • if you made x false (x=false). Now x is a boolean variable and since it it false the code is executed.

In all other cases x is true and the code is not executed. Note that you must define the variable x somewhere or the browser will complain.

Here is a good place to learn about javascript. http://www.quirksmode.org/js/boolean.html