AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi "Zuviele offene Tabellen"
Thema durchsuchen
Ansicht
Themen-Optionen

"Zuviele offene Tabellen"

Ein Thema von theomega · begonnen am 8. Sep 2002 · letzter Beitrag vom 9. Sep 2002
Antwort Antwort
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#1

"Zuviele offene Tabellen"

  Alt 8. Sep 2002, 14:01
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:
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;
eingetlich dürfte doch maximal 1 Tabelle offen sein, nachdem ich bei zweiten Query die erste wieder schließe.

Wie bekomm ich die Meldung weg?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 8. Sep 2002, 14:13
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 von Delphi 5 Hilfe: TQuery.ExecSQL:
Für die SELECT-Anweisung verwenden Sie statt ExecSQL die Methode Open.
ExecSQL führt also wohl implizit ein Open aus, so dass Du die Query zweimal öffnest und einmal schliesst, was dann, über kurz oder lang, zu der Fehlermeldung führt.

Ich hoffe mal meine Überlegung stimmt, denn mit Datenbanken hab' ich's nicht so.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#3
  Alt 8. Sep 2002, 14:23
jetzt funzt es, aber nur sicherheitshalber: ich habe eine zweite Funktion zum ausführen von Querys, die die Datenbank ändern:
Code:
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;
stimmt die den?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 8. Sep 2002, 14:40
Moin The Omega,

ich fürchte mal, dass Du mich meinst

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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#5
  Alt 9. Sep 2002, 13:27
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!
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz