Inhalte eines anderen Script abrufen per getScriptbyName()

Community help and discussion for RapidRep Designer Application

Inhalte eines anderen Script abrufen per getScriptbyName()

Postby anja.hennig » 05 Apr 2017, 13:37

Ich möchte in meinen aktuellen Script die Inhalte eines anderen selektieren.

Dies mache ich so:

select * FROM (SELECT * FROM $CurrentReport.getScriptByName("Cashflows_CONCAT"))

Im Tab Reihenfolge ist auch Cashflows_CONCAT aufgelistet, somit dieses Script zuerst läuft.
Wenn ich dies nun ausführe bekomme ich die Fehlermeldung "[Zeile #1]: ORA-00942: Tabelle oder View nicht vorhanden"

Wenn ich nun Cashflows_CONCAT direkt ausführe bekomme ich folgende Fehlermeldung "[Zeile #1]: ORA-00942: Tabelle oder View nicht vorhanden" obwohl das Script vorher funktioniert hat und ich nichts hier verändert habe.

Wie muss ich hier vorgehen, dass alles wieder funktioniert?
anja.hennig
 
Posts: 14
Joined: 18 Jan 2017, 11:59

Re: Inhalte eines anderen Script abrufen per getScriptbyName

Postby KaiBaechle » 05 Apr 2017, 14:19

Die Oracle-Fehlermeldung deutet auf zwei mögliche Ursachen hin

a) Das SQL wird gegen eine Oracle-Datenbank ausgeführt, ggf. wurde die Connection "verstellt" und die gewünschte Tabelle ist in der Oracle-Datenbank nicht zu finden
b) Eine Tabelle/ein View (oder ein genutztes Synonym) in der FROM-Clause des SQL existiert wirklich nicht, d. h.
- das Objekt kann gelöscht worden sein
- es fehlt die Berechtigung auf das Objekt (, welches damit "unsichtbar" ist)
- die Anmeldung an die DB erfolgte mit einem anderen User, der nicht die notwendigen Berechtigungen hat
- die Anmeldung an die DB erfolgte mit einem anderen User, so dass das Objekt in dessen Schema gesucht wird, obwohl es im Schema eines anderen Users liegt


Zum Rausfinden, um welches Objekt es sich handelt, ist das Skript zu evaluieren und einzeln von jedem enthalten Objekt (Tabelle, View, Synonym) der FROM-clause zu selektieren
SELECT * FROM objectname WHERE 1=2
dann sollte klarwerden, welches Objekt schuld ist.

Ich hoffe ich konnte helfen

Kai Bächle
KaiBaechle
 
Posts: 33
Joined: 24 May 2013, 21:20

Re: Inhalte eines anderen Script abrufen per getScriptbyName

Postby anja.hennig » 06 Apr 2017, 08:48

Hallo,

ich denke, irgendwas stimmt nicht mit meiner DB-Verbindung.
Wenn ich ein ganz simples Query ausführe (select * from table) auf die selbe DB auf die das Script zugreift bekomme ich den selben Fehler "[Zeile #1]: SQL-Anweisung zur Ausführung darf nicht leer oder null sein".
Ich habe meine DB-Verbindung getestet und diese war ok.
Wie muss ich hier vorgehen um den Fehler zu finden?
Beim ersten Ausführen meines Orginal-Scripts habe ich keine Fehler erhalten.
anja.hennig
 
Posts: 14
Joined: 18 Jan 2017, 11:59

Re: Inhalte eines anderen Script abrufen per getScriptbyName

Postby KaiBaechle » 06 Apr 2017, 10:42

Um den ursprünglichen Fehler ORA-00942 handelt es sich anscheinend nicht mehr. Vielmehr scheint es kein SQL zu geben, wo eines erwartet wird. Das kann sich auf das gesamte Evaluierungsergebnis des Skriptes oder auf einen RapidRep-API-Call, wie beispielsweise $RR.getResultSet(...) beziehen.

Wie sieht der Inhalt (unevaluiert) und evaluiertes Ergebnis des fehlerhaften Skriptes aus?
Was ist die vollständige Fehlermeldung mit Call-Stack des Logs?

Grundsätzliches Vorgehen
Um Hinweise zu erhalten, können Ausgaben von Variablen/Funktionsaufrufen oder #if-Verzweigungen in Kommentarblöcken (/* ... */) in das SQL eingefügt werden. So kann das Ergebnis besser erklärt werden. Wenn es ein komplexerer Body ist, kann auch ein #break eingefügt werden und eine Teilevaluierung bis zum #break zu erreichen.

Ausgaben im Log mit Variablenwerten können z. B. mit $CurrentReport.logger().warn(object) erfolgen.

Der Debug-Modus mit erweiterten Ausgaben im Log kann über "Werkzeuge" => "Optionen ...", Tab "Benutzereinstellungen", "Logging" für den Designer mit „Alle Meldungen detailliert“ eingestellt werden. Diese Änderung gilt auch für alle späteren Designer-Sessions des Benutzers, der unten links im Dialog genannt ist.
KaiBaechle
 
Posts: 33
Joined: 24 May 2013, 21:20

Re: Inhalte eines anderen Script abrufen per getScriptbyName

Postby anja.hennig » 06 Apr 2017, 11:28

Im Script das den Fehler wirft ist ein simples SQL. es enthalt nur "select * from myTable"
Ich habe die Loggindetail geändert. Hier sind alle Fehlermeldungen, die nach der Ausführung erscheinen:
Eingabe/Ausgabe: "java.io.IOException: Stream Closed"; "C:/appls/RapidRep 5.7.2 (10904)/${FINARIS_APPDATA}${FS}temp/InternalDB_3728/H2.h2.db"
IO Exception: "java.io.IOException: Stream Closed"; "C:/appls/RapidRep 5.7.2 (10904)/${FINARIS_APPDATA}${FS}temp/InternalDB_3728/H2.h2.db"; SQL statement:
SET CACHE_SIZE 16384 [90031-176] [SQL-State = 90031]
Eingabe/Ausgabe: "java.io.IOException: Stream Closed"; "C:/appls/RapidRep 5.7.2 (10904)/${FINARIS_APPDATA}${FS}temp/InternalDB_3728/H2.h2.db"
IO Exception: "java.io.IOException: Stream Closed"; "C:/appls/RapidRep 5.7.2 (10904)/${FINARIS_APPDATA}${FS}temp/InternalDB_3728/H2.h2.db"; SQL statement:
SET CACHE_SIZE 16384 [90031-176]
Skript Cashflows_CONCAT_2 konnte nicht berechnet werden.
Eingabe/Ausgabe: "java.io.IOException: Stream Closed"; "C:/appls/RapidRep 5.7.2 (10904)/${FINARIS_APPDATA}${FS}temp/InternalDB_3728/H2.h2.db"
IO Exception: "java.io.IOException: Stream Closed"; "C:/appls/RapidRep 5.7.2 (10904)/${FINARIS_APPDATA}${FS}temp/InternalDB_3728/H2.h2.db"; SQL statement:
SET CACHE_SIZE 16384 [90031-176]
Skript Cashflows_CONCAT_2 konnte nicht berechnet werden.
Eingabe/Ausgabe: "java.io.IOException: Stream Closed"; "C:/appls/RapidRep 5.7.2 (10904)/${FINARIS_APPDATA}${FS}temp/InternalDB_3728/H2.h2.db"
IO Exception: "java.io.IOException: Stream Closed"; "C:/appls/RapidRep 5.7.2 (10904)/${FINARIS_APPDATA}${FS}temp/InternalDB_3728/H2.h2.db"; SQL statement:
SET CACHE_SIZE 16384 [90031-176]

Ich hatte an der DB-Verbindung nichts geändert und beim ersten Ausführung ging es auch. Die Fehler kommen erst seit ich es einmal von einem anderen Script per getScriptbyName() ausgeführt habe.
An was könnte dieser Fehler liegen?
anja.hennig
 
Posts: 14
Joined: 18 Jan 2017, 11:59

Re: Inhalte eines anderen Script abrufen per getScriptbyName

Postby KaiBaechle » 06 Apr 2017, 12:39

zu "Ich hatte an der DB-Verbindung nichts geändert und beim ersten Ausführung ging es auch. Die Fehler kommen erst seit ich es einmal von einem anderen Script per getScriptbyName() ausgeführt habe.
An was könnte dieser Fehler liegen?
":

Wenn man mit $CurrentReport.getScriptByName("anderesScript") zugreift, wird das andereScript in die Liste der Vorgänger (Tab "Reihenfolge" des Skriptes) aufgenommen. Das führt dazu, dass das andereScript immer vorher ausgeführt wird. Entfernt man den Aufruf (.getScriptByName) im Body wieder, so bleibt das andereScript noch in der Liste der Vorgänger. Hier ist es zu entfernen.

Bzgl. der "java.io.IOException: Stream Closed" benötige ich noch den Call-Stack, der erscheint, wenn die Fehlermeldung doppelt-geklickt wird. Es kann aber sein, dass es sich hier auch um einen Folgefehler handelt
KaiBaechle
 
Posts: 33
Joined: 24 May 2013, 21:20

Re: Inhalte eines anderen Script abrufen per getScriptbyName

Postby anja.hennig » 06 Apr 2017, 13:03

ich führe jetzt nicht mehr das script mit getScriptbyName() aus sondern das wo normal aufgerufen werden soll, direkt.
hier bekomme ich diese fehler mit
Eingabe/Ausgabe: "java.io.IOException: Stream Closed"; "C:/appls/RapidRep 5.7.2 (10904)/${FINARIS_APPDATA}${FS}temp/InternalDB_3728/H2.h2.db"
IO Exception: "java.io.IOException: Stream Closed"; "C:/appls/RapidRep 5.7.2 (10904)/${FINARIS_APPDATA}${FS}temp/InternalDB_3728/H2.h2.db"; SQL statement:
SET CACHE_SIZE 16384 [90031-176] [SQL-State = 90031]
Eingabe/Ausgabe: "java.io.IOException: Stream Closed"; "C:/appls/RapidRep 5.7.2 (10904)/${FINARIS_APPDATA}${FS}temp/InternalDB_3728/H2.h2.db"
IO Exception: "java.io.IOException: Stream Closed"; "C:/appls/RapidRep 5.7.2 (10904)/${FINARIS_APPDATA}${FS}temp/InternalDB_3728/H2.h2.db"; SQL statement:
SET CACHE_SIZE 16384 [90031-176]
Skript Cashflows_CONCAT_2 konnte nicht berechnet werden.
Eingabe/Ausgabe: "java.io.IOException: Stream Closed"; "C:/appls/RapidRep 5.7.2 (10904)/${FINARIS_APPDATA}${FS}temp/InternalDB_3728/H2.h2.db"
IO Exception: "java.io.IOException: Stream Closed"; "C:/appls/RapidRep 5.7.2 (10904)/${FINARIS_APPDATA}${FS}temp/InternalDB_3728/H2.h2.db"; SQL statement:
SET CACHE_SIZE 16384 [90031-176]
Skript Cashflows_CONCAT_2 konnte nicht berechnet werden.
Eingabe/Ausgabe: "java.io.IOException: Stream Closed"; "C:/appls/RapidRep 5.7.2 (10904)/${FINARIS_APPDATA}${FS}temp/InternalDB_3728/H2.h2.db"
IO Exception: "java.io.IOException: Stream Closed"; "C:/appls/RapidRep 5.7.2 (10904)/${FINARIS_APPDATA}${FS}temp/InternalDB_3728/H2.h2.db"; SQL statement:
SET CACHE_SIZE 16384 [90031-176]

Was kann ich hier machen?
anja.hennig
 
Posts: 14
Joined: 18 Jan 2017, 11:59

Re: Inhalte eines anderen Script abrufen per getScriptbyName

Postby KaiBaechle » 06 Apr 2017, 13:09

Ich benötige den Call-Stack (Dbl-Click auf die Fehlermeldung im Log, dann unter "Fehlermeldung"). Der sieht beispielsweise so aus
java.net.UnknownHostException: http://www.rapidrep.com
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
:
:



Was ist denn der Inhalt des Scriptes evaluiert und unevaluiert?
KaiBaechle
 
Posts: 33
Joined: 24 May 2013, 21:20

Re: Inhalte eines anderen Script abrufen per getScriptbyName

Postby anja.hennig » 07 Apr 2017, 15:18

Hallo,

haben den Fehler gefunden.
In der Datei RapidRep.ini habe ich den AppDataDir-Pfad angepasst unter [Application Data] sodass, der Pfad meinen tatsächlichen Verzeichnis entspricht.
Z. B. :
[Application Data]
AppDataDir = C:\appls\workspace\RapidRep 5.7
anja.hennig
 
Posts: 14
Joined: 18 Jan 2017, 11:59


Return to RapidRep Designer



Who is online

Users browsing this forum: No registered users and 2 guests

cron