2

Jaspersoft Studio (JSS) で SQL サーバー プロシージャを実行していますが、クエリ ダイアログに 1 つのフィールドしか表示されません。

JSS での表示:

Jasper Studio での手順 - 1 つのフィールドのみを表示します。

SQL SERVER Management Studio では、正しく機能します。プロシージャは 10 個を超えるフィールドを返します...

SQL SERVER Management Studio での手順

似たようなケースを見た人はいますか?何が起こっているのでしょうか?

チェックするJavaコードを作成し、jdbc Javaアプリケーションによって、すべてのフィールドを正常に表示します。

 Connection conn = VAGASConnectionFactory.getNewConnectionSQLDRIVER(VAGASConnectionFactory.AMBIENTE.DESENV);
    CallableStatement cs = conn.prepareCall("{call pr_cria_tabela_relatorio_parametrizado(90918)}");
    ResultSet rs = cs.executeQuery();
    while(rs.next()) {
        System.out.println(rs.getString(1) + "," + rs.getString(2) + "," + rs.getString(3) + "," + rs.getString(4));
    }

このコードの結果は正しく実行されます。

ジェシカ アルバ、1981 年 4 月 28 日、35 日、コンダード

ジム・キャリー、1962 年 1 月 17 日、54 日、ゴイアナ

しかし、Jasper Studio では、1 つのフィールドしか表示されません.... :-/

「フィールドの読み取り」をクリックしたときの Jasper Studio ログ:

Start ClassPath Mapping
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/55/1/.cp/lib/jasperreports-6.1.1.jar
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/55/1/.cp/lib/jasperreports-chart-themes-6.1.1.jar
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/55/1/.cp/lib/jasperreports-fonts-6.1.1.jar
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/55/1/.cp/lib/jasperreports-functions-6.1.1.jar
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/40/1/.cp/lib/js-common.jar
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/40/1/.cp/lib/js-extra-classes.jar
End ClassPath Mapping

Jasper Studio 6.1.1 を使用しています。Jasper Studio 6.3.0 を使用してみましたが、成功しませんでした。

4

1 に答える 1

0

多くの試みの後、私が発見したのは、(私のような) 複雑なストアド プロシージャがある場合、クエリ エディターがフィールドの読み取りに制限されていることです。私のプロシージャはカーソルを使用し、SQL クエリを文字列で動的に作成するため、クエリ エディタによってプロシージャ スキームの読み取りが妨げられます。

私は次のことを行うことにしました: クエリ SQL をプロシージャ出力(print @sql)に出力します。次に、クエリ エディター ウィンドウで (プロシージャの出力で) 実行されるクエリを切り取って貼り付けます(プロシージャ呼び出しの代わりに、"exec procedure ....")。したがって、クエリ エディターはクエリのフィールドを読み取ることができます。クエリ エディターがフィールドを読み取った後、クエリ SQL を削除し、プロシージャ コール "exec procedure ...." を再度挿入します

今はうまくいきました:-)

于 2016-08-25T17:33:03.590 に答える