2016-05-04 3 views
2

Crystal Reports 2013を使用しており、Oracle ODAC 32および64ビット版がインストールされています。新しいレポートを作成して「Oracle Server」データソースを使用すると、私がアクセスできる任意のテーブルから選択できます。しかし、私はすべてのビューからではなく、一部のビューからデータを取得していません。Crystal ReportsがOracleドライバを使用して一部のOracleビューからデータを返さない

クエリはSQL PlusまたはSQL Developerで正常に動作します。クエリは、OLE DBやODBCなどの古いドライバを使用してCrystal Reportsのデータを取得します。

私は、動作しているかどうかを確認できません。私がテストしたすべてのビューは同じスキーマに属します。それらはすべて第3のスキーマに属しているテーブルに関連しています。つまり、私はUSER1としてログインし、USER2に属するビューからクエリを実行し、USER2とUSER3に属するテーブルからデータを取得します。表に対するビューを作成し、そのビューを他のユーザーが使用できるようにするには、SELECT WITH GRANT OPTION権限が必要です。ここでも、クエリは他のSQLツールで正常に動作します。

更新:ビューの所有者としてログインしようとしましたが、クエリを実行できませんでした。私はビューの所有者(user2)とCrystal Reportsの所有者(user1)として基礎となるテーブルを照会しようとしました。両方のユーザーは、基礎となる表を照会できます。ビュー自体は問題のようです。

私は、動作するビューと動作しないビューの違いについて検討しています。 ORDER BY節を使用しているビューがすべて列の位置を参照していることがわかりました(例:ORDER BY 2,1)。 ORDER BYを列名を使用して書き直そうとしました。うまくいきませんでした。 ORDER BY句を削除しようとしました。うまくいきませんでした。ふりだしに戻る。

+0

ドライバを使用して正常に接続できますか? – Siva

+0

はい、接続は正常に動作し、ほとんどの場合データを取得しますが、SELECT col1 FROM user2.viewnameのようなクエリではデータを取得しません。 SQL DeveloperとSQL Plusで同じクエリが機能します。 – AmyT

+0

どのユーザーとの接続ですか? – Siva

答えて

1

問題は、OracleビューがOracle固有の非標準SQLを使用していることがわかりました。上記のORDER BY 2, 1に加えて、WHERE clauseに暗黙の日付変換がありました。

WHERE date_col = '01-JAN-2016' 

私はTO_DATE機能を追加しました:

WHERE date_col = TO_DATE ('01-JAN-2016', 'dd-MON-yyyy') 

Crystalレポートは、ビューを照会することができましたし。

関連する問題