Entwickler-Ecke

Datenbanken - Query.Databasename?


D. Annies - Di 15.11.11 06:59
Titel: Query.Databasename?
Hi, Delpher,

wann setzt man am besten im Programm die Entität Query.databasename?
Ich lade den Table und sortiere ihn in einer Query.
Dann wechsele ich den Table und bekomme dann beim (erneuten) Sortieren die
Fehlermeldung: Operation bei geöffneter Datenenge nicht ausführbar.

Danke für eine Idee,
Detlef


jaenicke - Di 15.11.11 07:05

In Zeile 408 hast du ein Close vergessen. ;-)

Im Ernst: Ohne Quelltext lässt sich das jetzt schlecht sagen, aber ich vermute einmal aus deiner Beschreibung, dass der Fehler kommt, wenn du den DatabaseName setzt? Dann musst du die Abfrage in der Query vorher schließen und danach wieder öffnen.


D. Annies - Di 15.11.11 07:12

Es ist genau, wie du sagst, beim Setzen des Databasenamens.
Codeschnipsel:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TBuchMain.qSchuelerSort(Sender: TObject);
begin
  screen.cursor := crhourglass;
  QSchueler.close;
    QSchueler.DatabaseName  := listbox11.items[listbox11.itemindex];   // Fehler ist hier -  nur nach dem Wechseln!
    QSchueler.sql.clear;
    QSchueler.sql.text :=  //format('select * from "%s" ... zu viele Felder
      format('select NAME, VORNAME, KLASSE, GESCHLECHT, GEBDAT, TELEFON, FSPRACHE1, FSPRACHE2, '+
                    'WPK1NAME, WPK2NAME, WPK3NAME, WPK4NAME '+
               'from "%s" order by KLASSE asc, NAME asc, Vorname asc', [TbSchueler.tablename]);
    QSchueler.prepare;
  QSchueler.open;
  datasource1.dataset := QSchueler;
  screen.Cursor := crdefault;
end;


Hilft das?
Gruß, Detlef


bummi - Di 15.11.11 08:17

meine BDE-Kenntnissse sind massiv angestaubt, aber weil ich das hier sehe TbSchueler.tablename .....
Was da nicht was mit Sessions wenn man verschiedene Datenbanken gleichzeitig offen halten will ....


jaenicke - Di 15.11.11 08:35

Hast du einmal versucht auch die DataSource oder auch die Table vorher zu schließen?

Sessions braucht man da nicht explizit, die werden z.B. bei Threads benötigt.


D. Annies - Di 15.11.11 18:11

Jo, habe ich schon, aber ohne Erfolg.
Ich kämpfe noch ... ich habe jetzt eine andere Query genommen, da sieht es schon besser aus ..
Bis denne, Detlef - ich melde mich wieder


jaenicke - Di 15.11.11 18:14

Dann kannst du Debug-DCUs aktivieren und genau schauen wo da das CheckActive fehlschlägt, also bei welchem Objekt. Und dann weißt du was genau noch offen ist.


D. Annies - So 20.11.11 10:00

Ich habe es geschafft:


Delphi-Quelltext
1:
2:
3:
qx.SQL.Text := format('select Name, Vorname, Klasse, Gebdat, Telefon from "%s" ' +
                            'where gebdat like "%s" ' +
                            'order by Name, Vorname, Klasse', [TbName, Tag_Mon]);


d.h. der "Trick" besteht im LIKE!

Alles hat ein Ende, nur die Wurst hat zwei!

Gruß, Detlef


vagtler - So 20.11.11 11:37

user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
[...] d.h. der "Trick" besteht im LIKE! [...]

Das ist Schwachsinn - das hat rein gar nichts mit Deinem beschriebenen Problem zu tun. Aber sowas von nichts.


D. Annies - So 20.11.11 13:13

Auf den ersten Blick scheint es so zu sein, aber bei genauerem Hinsehen ...
Es ist halt deine Meinung (engl.: Opinion)
Gruß, Detlef


Robert.Wachtel - So 20.11.11 13:31

user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
Auf den ersten Blick scheint es so zu sein, aber bei genauerem Hinsehen ...
Es ist halt deine Meinung (engl.: Opinion)
Gruß, Detlef

Was hat das mit "Meinung" zu tun? :gruebel:

IT ist 'ne ziemlich deterministische Wissenschaft... :mahn:


D. Annies - So 20.11.11 14:30

Ok, ich verbessere: Deine Ansicht / Kenntnisstand.

Sry, Detlef