Jump to content

SQL - Fehler ignorieren, um Skriptabbruch zu verhindern (Microsoft JScript)


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

ich habe vor einigen Monaten schonmal nach Hilfe gesucht. Super Hilfe, daher versuche ich es nochmal ;)

 

Die Skripte werden in Microsoft JScript geschrieben.

 

Leider finde ich nicht wo beschrieben wird, was an Funktionen in Ergänzung zu Javascript hinzukommt, aber wir wachsen ja mit den Aufgaben ;)

 

Ich möchte eine Suche durchführen. Es gibt in meinem System eine eindeutige GUI namens AMSIDNR. Diese Nummer ist wie gewünscht im gesamten System einmalig. Die Datenbank besteht aus 290 Tabellen.

 

Jetzt führe ich im System eine Veränderung durch. Ich erkenne an dieser Nummer, dass er 3 AMSIDNR erzeugt. zwei habe ich gefunden. Eine nicht.

 

Also habe ich begonnen folgendes zu schreiben:

 




var Dataset = Runtime.provideDataSet();
var Dataset_tablesearch = Runtime.provideDataSet();
var amsidnr ='';


Dataset.commandtext = "SELECT RDB$RELATION_NAME FROM RDB$RELATIONS";
Dataset.active =true;

while (!Dataset.Eof)
{
	Dataset_tablesearch.commandtext = "SELECT * FROM "+ Dataset.FindField("RDB$RELATION_NAME").AsString +"";
	Dataset_tablesearch.active = true;
	
	amsidnr = Dataset_tablesearch.FindField("AMSIDNR").AsString;
	
	Dataset.Next;
}

Dataset.active=false;


Runtime.MsgBox("Fertig");

 

Antwort vom System:

 

Zitat

Javascript Error:
Text: Zugriffsverletzung bei Adresse 0394F498 in Modul 'rtl230.bpl'. Lesen von Adresse 00000000
Source: TAutoObjectDispatch
Line: 18
Col: 1.

 

Das Skript bricht also ab. So finde ich aber die Tabellen in denen die AMSIDNR existiert nicht.

 

Ich bin schon soweit, dass er den Fehler ausspuckt, sobald die AMSIDNR NICHT in der Tabelle vorkommt.

 

Aber wie kann ich jetzt sagen, ignoriere den Fehler und gehe zur nächsten Tabelle.

 

Ziel ist es in allen 290 Tabellen danach zu suchen wo diese gesuchte AMSIDNR im Feld KEY oder AMSIDNR steht.

 

Außerdem würde ich gerne einen Weg finden, in denen ich beobachte welche Felder in der Datenbank verändert wurden. Gibt es ein SQL-Programm wo ich sozusagen eine Beobachtung loggen kann und dann einfach im Programm einen Arbeitsschritt durchführe, um danach zu sehen was getan wurde?

 

Könnt Ihr mir da Tipps geben?

 

Gruß Volker

Link zu diesem Kommentar

Im Feld RDB$RELATION_NAME der Tabelle RDB$RELATIONS steht der Name der Datenbanktabelle. Diese Tabelle hat also exakt 290 Namen (entspricht der Anzahl an Tabellen).

 

Jetzt soll er in jeder dieser Tabellen nachschauen, ob es eine Spalte AMSIDNR gibt und, ob die gesuchte darin existiert.

 

Wenn die Spalte jedoch nicht existiert, da AMSIDNR in den meisten Systemtabellen ja gar nicht geführt wird, bricht das Skript aufgrund eines Fehlers ab.

Link zu diesem Kommentar
vor 4 Stunden schrieb zahni:

OK, das ist eine Firebird-Datenbank. Hättest Du dazu schreiben können. Die kenne ich nicht und auch nicht deren Systemtabellen

Ich bin mir aber sicher, dass man das auch ohne JScript leicht abfragen kann.

 

 

JA das ist eine Firebird-Datenbank. Sorry, ich dachte ich hätte es geschrieben. Muss aber eingestehen, dass bei nochmaligem lesen ich die Stelle auch nicht finde, wo ich es geschrieben haben will :D

  • Like 1
  • Haha 1
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...