2016-05-04 4 views
2

Ich verwende Crystal Reports 2013 und habe Oracle ODAC 32- und 64-Bit-Versionen installiert. Wenn ich einen neuen Bericht erstelle und die Datenquelle "Oracle Server" verwende, kann ich aus allen Tabellen auswählen, auf die ich Zugriff habe. Ich finde jedoch, dass ich keine Daten von einigen, nicht allen Ansichten abrufe.Crystal Reports gibt keine Daten aus einigen Oracle-Ansichten mit Oracle-Treiber zurück

Die Abfragen funktionieren gut in SQL Plus oder SQL Developer. Die Abfragen rufen Daten in Crystal Reports mithilfe veralteter Treiber wie OLE DB und ODBC ab.

Ich kann keine Gemeinsamkeiten zwischen den Ansichten finden, die funktionieren oder nicht funktionieren. Alle Ansichten, mit denen ich getestet habe, gehören demselben Schema an. Sie enthalten alle Tabellen, die zu einem dritten Schema gehören - das heißt, ich logge mich als USER1 ein, Abfrage von einer Ansicht, die zu USER2 gehört, die Daten aus Tabellen bezieht, die zu USER2 und USER3 gehören. Um eine Sicht auf eine Tabelle zu erstellen und diese Sicht für andere verfügbar zu machen, benötigt Oracle die Berechtigung SELECT WITH GRANT OPTION, die vorhanden ist. Auch hier funktionieren die Abfragen in anderen SQL-Tools einwandfrei.

AKTUALISIERUNG: Ich habe versucht, mich als Eigentümer der Ansichten anzumelden und konnte sie nicht abfragen. Ich habe versucht, die zugrunde liegenden Tabellen als Besitzer der Ansicht (user2) und als Crystal Reports-Besitzer (user1) abzufragen. Beide Benutzer können die zugrunde liegenden Tabellen abfragen. Die Sicht selbst scheint das Problem zu sein.

Ich untersuche die Unterschiede zwischen den Ansichten, die funktionieren, und den Ansichten, die nicht funktionieren. Ich war optimistisch, als ich feststellte, dass die Ansichten, die nicht funktionieren, ORDER BY-Klauseln verwendeten, die auf die Spaltenposition referenzierten (zB ORDER BY 2, 1). Ich habe versucht, die ORDER BY zu überschreiben, um Spaltennamen zu verwenden. Hat nicht funktioniert. Versucht, die ORDER BY-Klauseln zu entfernen. Hat nicht funktioniert. Zurück zum Zeichenbrett.

+0

können Sie eine Verbindung mit dem Treiber erfolgreich herstellen? – Siva

+0

Ja, die Verbindung funktioniert einwandfrei und ruft die meiste Zeit Daten ab, aber ruft Daten mit einer Abfrage wie SELECT col1 FROM user2.viewname nicht ab. Dieselbe Abfrage funktioniert in SQL Developer und SQL Plus. – AmyT

+0

Verbindung mit welchem ​​Benutzer hergestellt? – Siva

Antwort

1

Ich stellte fest, dass das Problem darin bestand, dass die Oracle-Ansicht Oracle-spezifisches, nicht standardmäßiges SQL verwendete. Zusätzlich zu dem oben erwähnten ORDER BY 2, 1 gab es eine implizite Datumsumwandlung in dem WHERE clause, z.

WHERE date_col = '01-JAN-2016' 

Wenn ich hinzugefügt, um die TO_DATE Funktion:

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

Crystal Report der Lage war, die Ansicht abzufragen.