2015-08-25 1 views
3

Я использую BIRT Report Designer 4.4.0, и я постоянно получаю сообщение об ошибкеBIRT Report Designer пустой DataSet сценариев

org.eclipse.birt.report.engine.api.EngineException: Не удается получить следующую информацию ряд. org.eclipse.birt.report.data.oda.jdbc.JDBCException: не может перейти к следующей строке в результирующем наборе. Ошибка SQL # 1: набор результатов закрыт; org.firebirdsql.jdbc.FBSQLException: результирующий набор закрыт

когда BIRT попытался извлечь строку из набора данных, который я знал, был пуст. Я обнаружил, что это обычная проблема с BIRT и пыталась предотвратить пустой набор данных с использованием сценария beforeOpen в наборе данных, в котором я, вероятно, ошибся, потому что он не работает. Я создал vars ["item"] и хотел подсчитать, как часто вызывается OnFetch.

BeforeOpen:

vars["item"] = 0; 

OnFetch:

vars["item"]++; 

BeforeClose:

if (vars["item"] == 0) 
{ 
    row[0] = "0"; 
} 

, который не работает, потому что нет строки [0] я думаю.

Когда я редактировал queryText набора данных просто

SELECT "0" from kontrolle 

, который, безусловно, должен производить набор данных, я до сих пор получил тот же «не удалось получить следующую строку данных» Ошибка!

Конструкция выглядит примерно так:

<table> 
    <table> 
     <table> here is the dataset in question 
     </table> 
    </table> 
</table> 

Вторая таблица связана с первой таблицей только одним параметром, однако, третья таблица имеет два параметра привязки ко второй.

Надеюсь, что объяснение было достаточно хорошим, и кто-то может предоставить решение.

+0

Какую версию Jaybird вы используете? –

+0

Я использую Jaybird 2.2.7 – jera

+0

Что произойдет, если вы добавите 'defaultResultSetHoldable = true' к свойствам соединения (например, в URL-адрес JDBC)? –

ответ

2

Как указано ранее, добавьте defaultResultSetHoldable=true к свойствам соединения (например, в URL-адрес JDBC). Это указывает Jaybird создавать соединения с устойчивыми наборами результатов по умолчанию (эквивалент вызова connection.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT) в коде).

Я не знаю BIRT, так что это не более чем догадка делу:

  1. Он мог ожидать holdable наборы результатов без явно задавать или проверить их, и совершает после открытия (в Jaybird по умолчанию результирующие наборы закрыты по фиксации)
  2. BIRT может использовать autoCommit=true (по умолчанию), но не ожидает закрытия наборов результатов при выполнении другого оператора в том же соединении (это вызывает закрытие таких ресурсов, как результирующие наборы, и фиксация, как указано в стандарте JDBC, в некоторых аспектах это специализация точки 1).
+0

Большое вам спасибо! – jera

 Смежные вопросы

  • Нет связанных вопросов^_^