Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid Anzeige geht nur zur Entwurfszeit (https://www.delphipraxis.net/171346-dbgrid-anzeige-geht-nur-zur-entwurfszeit.html)

messie 1. Nov 2012 16:28

Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDAC

DBGrid Anzeige geht nur zur Entwurfszeit
 
Moin,

mir fehlt scheinbar die entscheidende Strippe, um ein dbgrid zur Laufzeit zu verdrahten.
Ich habe ein dbgrid, eine IBCDataSource, über ein IBCQuery an die Datenbank angebunden.

Gebe ich für die Query zur Entwurfszeit ein "select * from <tablename>" ein und schalte auf active, sehe ich die Daten.
Versuche ich dasselbe zur Laufzeit, bleibt das Grid leer.
Code:
if DM.IBCConnection1.Connected then
  begin
    ComboBox1.ItemIndex := 0;
    s := DM.Gridquery.SQL.Text;//check: hier ist derselbe Text drin plus CR/LF
    DM.Gridquery.SQL.Clear;
    s := 'SELECT * FROM BATCHES';//vorhandene Tabelle, die zur Entwurfszeit auch angezeigt wird
    DM.Gridquery.SQL.Add(s);
    DM.Gridquery.ExecSQL; //brauche ich das?
    DM.Gridquery.Active := True;
  end;
Lasse ich die Query schon vor Programmstart active, bekomme ich die Tabelle angezeigt, die zur Entwurfszeit ausgewählt wurde. Die bekomme ich auch nicht weg.
Was muss ich noch einstellen, was zur Entwurfszeit scheinbar schon eingestellt ist?

Danke, Messie

DeddyH 1. Nov 2012 17:25

AW: DBGrid Anzeige geht nur zur Entwurfszeit
 
Es macht zwar eigentlichen keinen großen Unterschied, aber wie ist es so?
Delphi-Quellcode:
if DM.IBCConnection1.Connected then
  begin
    ComboBox1.ItemIndex := 0;
    DM.Gridquery.Close;  
    DM.Gridquery.SQL.Text := 'SELECT * FROM BATCHES';
    DM.Gridquery.Open;
  end;

hoika 1. Nov 2012 21:06

AW: DBGrid Anzeige geht nur zur Entwurfszeit
 
Hallo,

ExeSql nimmt nicht beim Select ...
Dafür gibt es Open.

Heiko

messie 2. Nov 2012 10:41

AW: DBGrid Anzeige geht nur zur Entwurfszeit
 
Hm, geht auch mit der direkten Textübergabe auch.

Was die Query betrifft bin ich nicht sicher, ob execsql oder open überhaupt gebraucht werden. Denn zur Entwurfszeit setzte ich nur das active-Flag der Query und die Verbindung steht.

Grüße, Messie

dataspider 3. Nov 2012 17:29

AW: DBGrid Anzeige geht nur zur Entwurfszeit
 
Zitat:

Zitat von messie (Beitrag 1189481)
Was die Query betrifft bin ich nicht sicher, ob execsql oder open überhaupt gebraucht werden. Denn zur Entwurfszeit setzte ich nur das active-Flag der Query und die Verbindung steht.

Delphi-Quellcode:
procedure TDataSet.Open;
begin
  Active := True;
end;
Es macht also keinen Unterschied, ob du
Delphi-Quellcode:
Query.Active := True;
oder

Delphi-Quellcode:
Query.Open;
aufrufst.
Aber eines von beiden braucht man, wenn man es nicht zur Entwurfszeit auf Active setzt (was ich nie machen würde).

Frank

Perlsau 4. Nov 2012 11:45

AW: DBGrid Anzeige geht nur zur Entwurfszeit
 
Zitat:

Zitat von dataspider (Beitrag 1189583)
Aber eines von beiden braucht man, wenn man es nicht zur Entwurfszeit auf Active setzt (was ich nie machen würde).

Natürlich ist es problemlos möglich, Datasets oder Queries zur Entwurfszeit auf Active zu setzen. Mir hilft das z.B. beim Designen der Oberfläche und zum Testen, ob auch alles korrekt angezeigt wird.

Vor dem Starten der Anwendung (und erst recht beim endgültigen Release) sollte die Verbindung jedoch besser via Code hergestellt werden, schon allein, um adäquat auf Fehler reagieren zu können.

Und noch etwas scheint mir wichtig: Wenn du deine IDE schließt, während eine Datenbankverbindung besteht, hagelt es beim nächsten Start des IDE-Projekts Fehlermeldungen, wenn die Datenbank nicht mehr an derselben Stelle zu finden ist.

p80286 4. Nov 2012 22:48

AW: DBGrid Anzeige geht nur zur Entwurfszeit
 
Zitat:

Zitat von Perlsau (Beitrag 1189630)
Natürlich ist es problemlos möglich, Datasets oder Queries zur Entwurfszeit auf Active zu setzen. Mir hilft das z.B. beim Designen der Oberfläche und zum Testen, ob auch alles korrekt angezeigt wird.

Wenn man weiß was man tut, ja. Ansonsten ist dies eine Abkürzung, die ganz schnell zu einem Umweg werden kann.

Gruß
K-H

Perlsau 4. Nov 2012 22:50

AW: DBGrid Anzeige geht nur zur Entwurfszeit
 
Zitat:

Zitat von p80286 (Beitrag 1189712)
Wenn man weiß was man tut, ja. Ansonsten ist dies eine Abkürzung, die ganz schnell zu einem Umweg werden kann.

Ist es nicht grundsätzlich problematisch, wenn man nicht weiß, was man tut?

Beim Programmieren, insbesondere beim Entwickeln von Datenbank-Anwendungen kommt man grundsätzlich nicht weit, wenn man nicht weiß, was man tut.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 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-2025 by Thomas Breitkreuz