Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Query Variable ?? (https://www.delphipraxis.net/60361-query-variable.html)

Gigant02 5. Jan 2006 20:36

Datenbank: SQLite • Zugriff über: ZEOSLib

Query Variable ??
 
Moin Moin

Ich will über ein SQL Statment eine Query öffnen und dann die datenstätze über eine Schleife durchgehen

welchen Datentypen gibt es dafür ??

Ähnlich

While not table.eof do begin

table.next;
end;

lg, Ciam

mikhal 5. Jan 2006 20:46

Re: Query Variable ??
 
Delphi-Quellcode:
while not ZQuery1.Eof do
begin
...
  ZQuery1.Next;
end;
Grüße
Mikhal

Gigant02 5. Jan 2006 20:48

Re: Query Variable ??
 
lach das weiss ich doch

ich meine eher sowas

Table := ZQuery1;

welchen daten typ hat bitte Table ??

ich muss doch mit der Query so handeln können, wie z.b. einer string variable.

mkinzler 5. Jan 2006 20:51

Re: Query Variable ??
 
ZQuery
Delphi-Quellcode:
ZQuery.SQL.Text := 'Select ...';
ZQuery.Open;
ZQuery.First;
while not ZQuery.Eof do
begin
    ....
    ZQuery.Next;
end;
Zugriff auf Felder des datensatzes über
Delphi-Quellcode:
Zquery.FieldByName('<feldname>').Value;
( statt value auch asInteger, asString, usw) oder durch Anlage von datenbankzugriffsfelder in der IDE.

Markus.

(Mikhal war schneller!)

Gigant02 5. Jan 2006 20:52

Re: Query Variable ??
 
ahh dankeschön

zQuery das habe ich gesucht aber nochmal danke das du mir auch das andere geschrieben hast :)

lg, Gigant

Gigant02 5. Jan 2006 20:56

Re: Query Variable ??
 
hmm hab ich mal wieder müll erzählt ich dumpfbacke

also ich suche eher sowas

Delphi-Quellcode:
var qKonten : zQuery;
begin

qKonten.SQL.Text := 'Select ...';
qKonten.Open;
 
end.
naja ohne das ich eine Komponente vor der laufzeit auf die form ziehen muss das ich einfach jeder zeit überall in programmcode eine Query öffnen kann

ist sowas möglich ???

lg, Gigant

mkinzler 5. Jan 2006 21:04

Re: Query Variable ??
 
Delphi-Quellcode:
uses
    ...
    ZConnection, DB, ZAbstractRODataset, ZAbstractDataset;
    ...

procedure TForm1.ButtonClick(Sender: TObject);
var
   db: TZConnection;
   qKonten : TZQuery;
begin
   DB := TZConnection.Create( Form1);
   db.Protocol := ...
   db.HostName := ...
   ...
   db.Connect;
   qKonten := TZQuery.Create( Form1);
   qKonten.Connection := db;
   ...
end;
So müßte es funktionieren ( aber nicht getestet)

tomsel 5. Jan 2006 21:40

Re: Query Variable ??
 
Ich würde aber zumindest die TZConnection auf einem Datenmodul einrichten und nur bei Programmstart connecten (blödes denglisch!). Die dynamisch erzeugten Queries sollten aber auf jeden Fall auch wieder freigegeben werden, sonst Leak!

Gigant02 6. Jan 2006 19:58

Re: Query Variable ??
 
jup

ich habe auch eine zconcetion und will die nicht zur laufzeit erstellen

nur die query

lg, Gigant

Gigant02 8. Jan 2006 10:40

Re: Query Variable ??
 
qKonten : TZQuery;

kennt er bei mir nicht :( obwohl ich die ganzen uses drin habe :((

sagmal was für ein typ is den das ???

lg, Gigant

marabu 8. Jan 2006 10:48

Re: Query Variable ??
 
Die Komponente TZQuery lebt in der Unit ZDataSet.

Grüße vom marabu

Sharky 8. Jan 2006 10:50

Re: Query Variable ??
 
Zitat:

Zitat von Gigant02
qKonten : TZQuery; ... sagmal was für ein typ is den das ???

Hai Gigant02,

die Klasse TZQuery ist bei den ZeosLib in der Unit ZDataSet deklariert. Diese musst Du also in deine Uses mit aufnehmen.

[Edit] Der marabu war schon wieder schneller. Ich muss mal etwas einbauen das er nicht mehr posten kann währen ich etwas schreibe *g*

Gigant02 8. Jan 2006 11:15

Re: Query Variable ??
 
lach ja tue das

danke euch beiden ich schaue mir das mal an

//************************************************** *****************
Edit

juhu es klappt

//************************************************** *****************
lach doch nicht ganz

sorry aber ich bin zu dumm für die welt :)

also ich habe mir das so gedacht das ich eine Query habe die ich nach belieben öffnen kann gut das ist das nicht das problem

aber nun kommt das problem

Delphi-Quellcode:
procedure TfrmEinstellung.Button1Click(Sender: TObject);
var qKonten : tzQuery;
begin

  DataModule.FrmDataModule.ExecQuery.SQL.Clear;
  DataModule.FrmDataModule.ExecQuery.SQL.Add('SELECT * FROM konten');
  qKonten := DataModule.FrmDataModule.ExecQuery.Open;

end;
also was habe ich eigentlich vor. ich will eine query mir zusammen basten die ich von überall öffnen und schliesen kann nun das ist wohl nicht so mein problem sondern erstmal eine quer öffnen und diese dann einfach übergeben das ist mein problem

kann mir da mal einer zeigen wie ich das übergebe ??

lg, Gigant

mkinzler 8. Jan 2006 11:38

Re: Query Variable ??
 
Wenn Du den Query in einem Datenmodul hast brauchst du ihn nicht dynamisch in einer Procedure erzeugen dann reicht
Delphi-Quellcode:
procedure TfrmEinstellung.Button1Click(Sender: TObject);
begin
  DataModule.FrmDataModule.ExecQuery.SQL.Clear;
  DataModule.FrmDataModule.ExecQuery.SQL.Add('SELECT * FROM konten');
  DataModule.FrmDataModule.ExecQuery.Open;

end;
Bei einem dynamsich erzeugten Query, befindet sich im DataModul nur eine TZConnection-Komponente mit dem Namen Conn, dann würde die Funktion so aussehen:
Delphi-Quellcode:
procedure TfrmEinstellung.Button1Click(Sender: TObject);
var qkonen: TZQuery;
begin
  qKonten := TZQuery.Create( TfrmEinstellung);
  qKonten.Connection := DataModule.FrmDataModule.Conn;
  qKonten.SQL.Clear;
  qKonten.SQL.Add('SELECT * FROM konten');
  qKonten.Open;
  ...
  qKonten.Free;
end;

Gigant02 8. Jan 2006 11:46

Re: Query Variable ??
 
hmm sehr gut ich probiere das mal weiter

danke erstmal soweit

lg, gigant

Gigant02 8. Jan 2006 11:54

Re: Query Variable ??
 
Sehr gut ich habe es geschnallt

ich wünsche euch erstmal allen einen ganz ganz schönen sonntag

lg, Gigant

Gigant02 8. Jan 2006 12:11

Re: Query Variable ??
 
so ich mal wieder

wenn ich das ganze jetzt in eine externe pas datei verfrachten will wie mache ich das

Delphi-Quellcode:
{$X+}

unit DB_Tools;

interface

uses
  Windows,
  Messages,
  SysUtils,
  Variants,
  ZConnection,
  zDataSet,
  DB,
  ZAbstractRODataset,
  ZAbstractDataset,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  StdCtrls;

//##############################################################################

function DB_OPEN(var qQuery : TzQuery; cSQL : String): Boolean;

//##############################################################################

implementation

uses DataModule;

function DB_OPEN(var qQuery : TzQuery; cSQL : String): Boolean;
begin

  result := False;
  qQuery := TZQuery.Create(DB_tools);
  qQuery.Connection := DataModule.FrmDataModule.TableConnection;
  qQuery.SQL.Clear;
  qQuery.SQL.Add(cSQL);
  qQuery.Open;
  Result := True;

end;

//******************************************************************************

end.
und dann überall diese pasdatei aufrufen will aber wie mache ich das ?? wenn ich keine form habe ???

hmm ein neues rätzel von mir :)

lg, Gigant

Gigant02 8. Jan 2006 12:13

Re: Query Variable ??
 
danke ich habe schon ich erstelle das ganze einfach auf den datenmodul :)

lach sorry ihr könnt weiterschlafen :)

bis danne

mkinzler 8. Jan 2006 13:22

Re: Query Variable ??
 
Zitat:

und dann überall diese pasdatei aufrufen will aber wie mache ich das ?? wenn ich keine form habe ???

hmm ein neues rätzel von mir Smile
1.) Die Unit in uses aufnehmen.
2.) DB_OPEN aufrufen.

Aber warum machst du das ganze so kompliziert?

Gigant02 8. Jan 2006 13:25

Re: Query Variable ??
 
wie denn sonst ??

also kennst mir gerne weitere wege zeigen :)

ich will mir einfach tools zusammen basteln die ich einfach über die uses ansprechen kann
hmm ja habe schon das problem gelöst :)

aber dummerweise kann wohl sqlite kein sum !!

weiss du darüber etwas bescheidt ??

lg, Gigant

mkinzler 8. Jan 2006 13:40

Re: Query Variable ??
 
Zitat:

Zitat von Gigant02
wie denn sonst ??
also kennst mir gerne weitere wege zeigen :)
ich will mir einfach tools zusammen basteln die ich einfach über die uses ansprechen kann

Nur durch die Verwendung diser Unit wird das ganze nicht einfacher und es wird zusätzlichen Overhead durch den Aufruf einer Funktion und die Einbindung einer weiteren Unit erzeugt.

Bsp.
Aufruf deiner Funktion:
Delphi-Quellcode:
uses ... ZDataSet, DBTools;
...
function ...
var
   ...
   query: TZQuery;
begin
  ...
  if DB_Open ( query, 'select * from ...') then
  begin
    ...
  end;
  ...
  query.free;
end;
und ohne die Unit
Delphi-Quellcode:
uses ... ZDataSet;
...
function ...
var
   ...
   query: TZQuery;
begin
  ...
  query.sql.text := 'select * from ...';
  if query.open then
  begin
    ...
  end;
  ...
  query.free;
end;
Zitat:

hmm ja habe schon das problem gelöst :)

aber dummerweise kann wohl sqlite kein sum !!

weiss du darüber etwas bescheidt ??

lg, Gigant
Mit sqllite kenn ich mich leider nicht aus, aber die Sum-Funktion sollte eigentlich schon vorhanden sein.

P.S. firebird embedded wäre vielleicht eine Alternative.

Gigant02 8. Jan 2006 13:45

Re: Query Variable ??
 
jup genau so mache ich es ja

Delphi-Quellcode:
  if DB_Open ( query, 'select * from ...') then
  begin
    ...
  end;
und binde einfach oben in den uses die unit ein :)

hmm schade das du dich damit nicht auskennt (SQLite)
also es scheint mir so als wenn sich erst wenige damit eingearbeitet haben :( ich glaube ich werde mal alles aufschreiben was ich schon von SQLite weiss und versuche das hier anderen zur verfügung stellen

hmm ja habe ich mir auch schon gedacht eine andere zunehemen aber das muss ja auch mit sqlite gehen und das andere läuft schon deswegen werde ich mich weiter damit beschäftigen

lg, Gigant


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