SOQL offset must be a non-negative value
2022年08月14日
文章浏览:180

在写分页功能的TestClass的时候,遇到了如下错误

SOQL offset must be a non-negative value


很明显,发生这个错误的原因,就是因为SOQL语句的OFFSET的值被设置成了负数。

leadViewQuery = leadViewQuery + ' And Id in :getLeadIds  LIMIT :LimitSize OFFSET :OffsetSize' ;

下面是错误的代码

        Test.startTest();
        ctr.adCondition = '含む';
        ctr.scAddress = '東京都';
        ctr.search();
        
        ctr.FirstPage();        ctr.previous();  <---- 根本原因就是在前面调用FirstPage的时候,FirstPage方法已经把OffsetSize的值,设置为0,那么再调用previous的时候,肯定OffsetSize的值被设置成了负数。
        ctr.next();
        
       
        Test.stopTest();


Test.startTest();
        ctr.adCondition = '含む';
        ctr.scAddress = '東京都';
        ctr.search();
        
        ctr.FirstPage();
        ctr.next();  //最简单的方法,就是把Next方法移到前面来,就能够解决这个【SOQL offset must be a non-negative value】的错误
        ctr.previous();
        
        Test.stopTest();


public void FirstPage()
    {
        OffsetSize = 0;
        searchWithPagnationOrNot(true);
    }
    
    public void previous()
    {
        OffsetSize = OffsetSize - LimitSize;
        searchWithPagnationOrNot(true);
        currentPage--;
    }
    
    public void next()
    {
        OffsetSize = OffsetSize + LimitSize;
        searchWithPagnationOrNot(true);
        currentPage++;
    }


关注 收藏