Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL - Abfrage - Problem (https://www.delphipraxis.net/11707-sql-abfrage-problem.html)

Christian_1980 12. Nov 2003 11:01


SQL - Abfrage - Problem
 
Huhu Ihr lieben Delphianer :-)

Folgendes Problem. Ich habe eine Datenbankverbindung aufgebaut und möchte gerne über ein SQL - Statement die Ergebnismenge von Table1 einschränken. Klappt leider nicht. könnt ihr mir sagen was ich falsch mache?

Delphi-Quellcode:
unit Database;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, DBGrids, Db, DBTables, StdCtrls;

type
  TForm1 = class(TForm)
    Table1: TTable;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Query: TQuery;
    Button1: TButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin

Query.Close;
Table1.Active := FALSE;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Query.Active:=false;
  Query.Sql.Clear;
  Query.Sql.Add('SELECT * from Version Where Kommentar is not Null');
  Query.Active:=true;
end;

end.
Vielen Dank schonmal,

Christian

MrSpock 12. Nov 2003 11:07

Re: SQL - Abfrage - Problem
 
Hallo Christian_1980,

du machst nichts falsch. Die Query liefert dir die "eingeschränkte" Datenmenge als Ergebnis zurück. Das Objekt Table1 ist aber unabhängig von der Query. Du musst also deine Anzeigeelemente direkt mit der Query und nicht mit Table1 verbinden. Alternativ könntest du die Tabelle Table1 Filtern:

Delphi-Quellcode:
Table1.Filter := 'Kommentar is not Null';
Table1.Filtered := True;

Christian_1980 12. Nov 2003 11:47

Re: SQL - Abfrage - Problem
 
Hi MrSpock!

Erstmal Danke für Deine Hilfe. Allerdings ist mir noch nicht klar, wie ich folgendes umsetzen soll:

Zitat:

Du musst also deine Anzeigeelemente direkt mit der Query und nicht mit Table1 verbinden

Ich habe die Zuordnung:


DataSource1.DataSet -> Table1
DBGrid1.DataSource -> DataSource1

ich weiss nicht, wie ich die Query da noch verbinden soll...

Christian_1980 12. Nov 2003 11:57

Re: SQL - Abfrage - Problem
 
Habe ich unter Anzeigeelement das DBGrid zu verstehen?

:gruebel:

Sharky 12. Nov 2003 12:01

Re: SQL - Abfrage - Problem
 
Hai Christian_1980,

Zitat:

Zitat von Christian_1980
DataSource1.DataSet -> Table1
DBGrid1.DataSource -> DataSource1

Setze doch mal DataSource1.DataSet auf Query. Dann sollte es gehen.
Deine TTable brauchst Du ja eigentlich nicht.

Christian_1980 12. Nov 2003 12:08

Re: SQL - Abfrage - Problem
 
Hi Sharky !

Ich habe bei DataSource1.DataSet meine Query nicht zur Auswahl (nur Table1). Wenn ich da von Hand Query eintrage kommt die Meldung: Zirkuläre Datenverbindungen sind nicht erlaubt. [Edit] Unsinnig, da was von Hand einzutragen, ich weiss :stupid: [/Edit]
Dann hab ich die Komponente Table1 mal ganz weggenommen, aber das ändert nix daran. :gruebel:


:roll:

Alfons_G 12. Nov 2003 13:52

Re: SQL - Abfrage - Problem
 
Liegt Deine Query auf demselben Formular, wie die DataSource?
Wenn ja, musst Du sie immer zur Auswahl angeboten bekommen. Ansonsten nur, wenn das Formular, bzw. Datenmodul mit der Query in der USES-Klausel des anderen Formulares aufgenommen wurde. Wie Sharky schon schrieb, benötigst Du die TTable-Komponente für diesen Zweck überhaupt nicht.

:coder:

Christian_1980 12. Nov 2003 14:05

Re: SQL - Abfrage - Problem
 
Hi Alfons_G

Beide Komponenten liegen auf derselben Form. Und wie ich schon schrieb:

Zitat:

Dann hab ich die Komponente Table1 mal ganz weggenommen, aber das ändert nix daran.
es geht einfach nicht :(

Christian_1980 12. Nov 2003 14:15

Re: SQL - Abfrage - Problem
 
Uff..

habe jetzt nochmal ein ganz neues Projekt angelegt und es von Grund auf so angelegt, wie ihr es gesagt habt. -> Es funktioniert.

Warum das in meiner Anwendung nicht mehr ging ist mir ein Rätsel. Naja, ich danke euch für die Hilfe. Ihr seid echt

:thuimb:

Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 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