2012-04-10 2 views
1

나는 이것에 대한 해결책을 찾지 못하는 것 같습니다. 보고서에서 Fetch 메서드를 수정하여 queryRun이 변경되고 새 ID가 반입되면 while 루프가 다시 시작되고 새 페이지가 나타나고 2 개의 요소가 실행됩니다. 이 부분은 잘 작동하지만 다음 부분은 그렇지 않습니다. 각 ID에는 Element.Execute()를 사용하는 여러 레코드가 있습니다. 및 element.Send(); 과정. 첫 번째 ID가 선택되고 보고서의 요소 (본문)가 실행되고 요소가 예상대로 전송되지만 while 루프는 다음 ID로 이동하지 않습니다.X ++ 가져 오기 방법에서 QueryRun 나가기

다음은 코드입니다.

public boolean fetch() 
{ 
    APMPriorityId   oldVanId, newVanId; 
    LogisticsControlTable lLogisticsControlTable; 
    int64     cnt, counter; 
    ; 

    queryRun = new QueryRun(this); 

    if (!queryRun.prompt() || !element.prompt()) 
    { 
     return false; 
    } 

    while (queryRun.next()) 
    { 
     if (queryRun.changed(tableNum(LogisticsControlTable))) 
     { 
      lLogisticsControlTable = queryRun.get(tableNum(LogisticsControlTable)); 
      if (lLogisticsControlTable) 
      { 
       info(lLogisticsControlTable.APMPriorityId); 
       cnt  = 0; 
       oldVanId = newVanId; 
       newVanId = lLogisticsControlTable.APMPriorityId; 

       if(newVanId) 
       { 
        element.newPage(); 
        element.execute(1); 
        element.execute(2); 
       } 
      } 

      if (lLogisticsControlTable.APMPriorityId) 

      select count(recId) from lLogisticsControlTable where lLogisticsControlTable.APMPriorityId == newVanId; 
      counter = lLogisticsControlTable.RecId; 

      while select lLogisticsControlTable where lLogisticsControlTable.APMPriorityId == newVanId 
      { 
       cnt++; 

       if(lLogisticsControlTable.APMPriorityId == newVanId && cnt <= counter) 
       { 
        element.execute(3); 
        element.send(lLogisticsControlTable); 
       } 
      } 
     } 
    } 
    return true; 
} 

답변

0

당신은 queryRun.get()while select 모두의 대상으로 lLogisticsControlTable을 사용하고 있습니다. 그러나이 두 가지 용도는 간섭합니다. 제어 할 두 개의 SQL 커서가 있습니다.

두 개의 다른 레코드 변수를 사용하십시오.

+0

1 월, 많은 것에 대해 감사드립니다. 두 번째 변수를 추가하고 문제가 해결되었습니다. – will