![]() |
"Zuviele offene Tabellen"
Hallo
in meinem Prorgramm kommt diese Meldung: "zuviele offene Tabellen". Ich habe als Datenbank eine Pardix-DB und als Komops ein TQuery. für meine Querys habe ich mir eine Funktion geschrieben:
Code:
eingetlich dürfte doch maximal 1 Tabelle offen sein, nachdem ich bei zweiten Query die erste wieder schließe.
function TForm1.execquery(querystring:string):integer;
begin; qrmain.Close; if dolog = true then memo1.Lines.Add(datetimetostr(now)+': '+querystring); qrmain.sql.Clear; qrmain.sql.Add(querystring); qrmain.ExecSql; qrMain.Open; result := qrmain.RecordCount; end; Wie bekomm ich die Meldung weg? |
Moin The Omega,
ich hab's mal in der Hilfe nachgeschlagen, da mir ExecSQL vor dem Open etwas seltsam vorkam (wie soll eine Abfrage funktionieren, wenn noch kein Open erfolgte, fragte ich mich?) Unter ExecSQL fand ich dann: Zitat:
Ich hoffe mal meine Überlegung stimmt, denn mit Datenbanken hab' ich's nicht so. ;-) |
jetzt funzt es, aber nur sicherheitshalber: ich habe eine zweite Funktion zum ausführen von Querys, die die Datenbank ändern:
Code:
stimmt die den?
procedure TForm1.execqueryinsert(querystring:string);
begin; qrmain.Close; if dolog = true then memo1.Lines.Add(datetimetostr(now)+': '+querystring); qrmain.sql.Clear; qrmain.sql.Add(querystring); qrmain.ExecSql; end; |
Moin The Omega,
ich fürchte mal, dass Du mich meinst :mrgreen: Wie schon gesagt, mit Datenbanken (und deren Kompos) hab' ich's nicht so, aber wenn meine Überlegung zu ExecSQL stimmt (implizites Öffnen) sollte es so gehen, wie Du es geschrieben hast. Vermutlich wird's hier aber auch einige geben, die es genau wissen. |
Hallo theomega,
es ist tatsächlich so, dass SQL Abragen, die eine Datenmenge zurückgeben nur mit Open ausgeführt werden sollen. Nur Abfragen, die keine Datenmenge zurückgeben wie DELETE, INSERT, UPDATE sollen mit ExecSQL abgeschickt werden. Der Versuch, die Datenmenge, die mit z.B. DELETE erzeugt wurde, zu öffnen (mit Open), führt zu einem Fehler, weil es ja keine Datenmenge gibt! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz