Javascript (und SQL) in gesonderter Programmierumgebung, soll ein neues Recordset-Objekt bekommen.

flo0702

Neues Mitglied
Moin, ich hoffe es kann jemand helfen, da ich einen recht ungewöhnlichen Fall für Javascript habe. Ich habe folgendes Problem. Ich habe ein Datenverwaltungsprogramm, welches mir eine offene Verbindung zur Datenbank herstellt. Ich kann meine Scripte so schreiben, dass ich, durch einen SQL-Query, eine bereits vorselektierte Datenmenge an mein Script übergeben bekomme. Anschließend wird diese Datenmenge verarbeitet durch eigene Funktionen, über die ich vom Entwickler keine Informationen erhalte ohne einen haufen Geld zu bezahlen, welches ich nicht habe. Das sieht ungefähr so aus.
Javascript:
function ProcessDataSet(Dataset) {
    var ds_vt = Runtime.provideDataSet();
    var notAllowed = ' -/:,._+#!%&()=<>*';

    Dataset.First();
    while (!Dataset.Eof) {
        if (Dataset.FindField("CHECKED").AsInteger == 1) {
            ds_vt.commandtext = "SELECT * FROM VERTRAG WHERE AMSIDNR = '" + Dataset.FindField("AMSID").AsString + "'";
            ds_vt.active = true;
            ds_vt.Edit;
            var vnr = ds_vt.FindField("VNR_DRUCK").AsString;
            var vnr_norm = vnr;

            for (i = 0; i < notAllowed.length; i++) {
                do {
                    vnr_norm = vnr_norm.replace(notAllowed.substr(i, 1), "");
                }
                while (vnr_norm.indexOf(notAllowed.substr(i, 1)) > -1);
            }

            ds_vt.FindField("VNR").AsString = vnr;
            ds_vt.FindField("VNR_NORM").AsString = vnr_norm;
            ds_vt.Post;
            ds_vt.Applyupdates(0);
            ds_vt.active = false;
        }
        counter++;

        Dataset.Next;
    }
    Runtime.MsgBox("Fertig");
}
Für mein Ziel will ich die Daten weiter so ähnlich zu verarbeiten, weswegen ich deren Funktionen eigentlich nicht vollständig verstehen muss. Ich möchte aber ein Script Nachts automatisch auf meine Datenmenge ausführen, dafür gibt es in dem Programm auch einen Planer, alles kein Problem. Ich weiß aber nicht wie ich ein Programm schreibe, was über diese offene Verbindung zur Datenbank eine Selektion ausführt, da die Scripte die ich schreibe von der Logik welche Daten ich verabreite abgeschaut ist und sich eben auf eine übergebene Datenmenge beschränkt.
Ich vermute es wird eben ein Command-Objekt (ds_vt) zum Abfragen einer Datenbank und zum Zurückgeben von Datensätzen in einem Recordset-Objekt verwendet. Also muss ich doch nur herausfinden, wie ich mein eigenes Recordset-Objekt auf meine Datenbank erzeuge oder nicht?
Ich freue mich über jede Antwort, da ich Ratlos bin.

Beste Grüße aus HH
Florian
 
Zuletzt bearbeitet von einem Moderator:

Mat

Mitglied
Welche Methoden und Eigenschaften des Recordsets sind für dich denn erreichbar?

Einfach nur dein Codebeispiel betrachtend:
Was hindert dich daran, eine eigene Selection in den commandtext reinzuschreiben?
Wirst du so eingeschränkt, dass du immer nur vorgefertigte RecordSets für vorgefilterte, einzelne Tabellen erhalten kannst?

In der von dir verlinkten Dokumentation steht unter Anderem auch noch:
To execute a query without using a Command object, pass a query string to the Open method of a Recordset object.
Das würde aber anscheinend ebenfalls erforderlich machen, dass weitere Methoden freigegeben sind (in dem Fall Open). Kannst ja mal testen, ob das Objekt diese Methode hat und wie es auf Abfragen reagiert.
 
Oben Unten