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!

Recommended Posts

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 to comment

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 to comment
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 to comment
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...