Iceboone 2 Geschrieben 10. August 2020 Melden Teilen Geschrieben 10. August 2020 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 Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 10. August 2020 Melden Teilen Geschrieben 10. August 2020 Wie wäre es mit SELECT * FROM RDB$RELATIONS where RDB$RELATION_NAME like '%AMSIDNR%' ? Oder was meinst Du? Zitieren Link zu diesem Kommentar
Iceboone 2 Geschrieben 10. August 2020 Autor Melden Teilen Geschrieben 10. August 2020 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. Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 10. August 2020 Melden Teilen Geschrieben 10. August 2020 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. Zitieren Link zu diesem Kommentar
Iceboone 2 Geschrieben 10. August 2020 Autor Melden Teilen Geschrieben 10. August 2020 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 1 1 Zitieren Link zu diesem Kommentar
daabm 1.354 Geschrieben 10. August 2020 Melden Teilen Geschrieben 10. August 2020 Try/Catch sollte helfen: https://stackoverflow.com/questions/2978291/on-error-resume-next-in-javascript Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.