Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Anweisung (https://www.delphipraxis.net/2317-sql-anweisung.html)

Scorpion 17. Jan 2003 15:48


SQL Anweisung
 
Hi, benutze folgenden Code, leider geht dieser nicht, ich weiss aber soviel, dass es wohl an der Anweisung nach dem and liegt, wenn ich diese weglasse gehts.

Code:
with Buchungen do
     begin
     Sql.Clear;
     Sql.Add('Select * from Buchungen.db');
    Sql.Add(' where Datum = ' + QuotedStr(DatetoStr(Datum)) +' and Typ = Irgendwas');
     Sql.Add(' order by Name');
     Execsql;
     Open;
     end;
end;
Gruss
Nico

phlux 17. Jan 2003 15:52

ich meine anstatt Buchungen.db musst du den tabellennamen angeben

Scorpion 17. Jan 2003 15:55

Daran liegts nicht, wie gesagt, ohne die And Anweisung gehts ja...

phlux 17. Jan 2003 16:01

Dann lass mal das AND wech und ersetz es durch nen Komma

MadMason 17. Jan 2003 16:02

du musst deine einzelnen kriterien in klammern setzen

Scorpion 17. Jan 2003 16:13

Servus,

mit dem Komma gehts auch nicht. Wie genau soll das denn mit den Klammern aussehen?

Gruss
Nico

phlux 17. Jan 2003 16:16

Re: SQL Anweisung
 
Möglichkeit A:
Code:
with Buchungen do
     begin
     Sql.Clear;
     Sql.Add('Select * from Buchungen.db');
    Sql.Add(' where (Datum = ' + QuotedStr(DatetoStr(Datum)) +') and (Typ = Irgendwas)');
     Sql.Add(' order by Name');
     Execsql;
     Open;
     end;
end;
Oder falls das nicht klappt
Möglichkeit B
Code:
with Buchungen do
     begin
     Sql.Clear;
     Sql.Add('Select * from Buchungen.db');
    Sql.Add(' where (Datum = ' + QuotedStr(DatetoStr(Datum)) +' and Typ = Irgendwas)');
     Sql.Add(' order by Name');
     Execsql;
     Open;
     end;
end;
Ich tendiere vom logischen her eher zu möglichkeit b :roll:

Hansa 17. Jan 2003 16:54

Hi,

daß da irgendwas überhaupt geht, wundert mich, ehrlich gesagt schon ! Ich vermisse da einiges!

Gruß
Hansa

Scorpion 17. Jan 2003 16:56

@Hansa,

wie würdest du es denn machen? Könntest du etwas Code posten?

Gruss

phlux 17. Jan 2003 16:57

Zitat:

Zitat von Hansa
daß da irgendwas überhaupt geht, wundert mich, ehrlich gesagt schon ! Ich vermisse da einiges!

Nett das du da WAS vermisst, du kannst und dann auch bestimmt sagen WAS du vermisst oder? :lol:

Hansa 17. Jan 2003 17:02

Re: SQL Anweisung
 
Hi,

Code:
  Sql.Add(' where (Datum = ' + QuotedStr(DatetoStr(Datum)) +' and Typ = irgendwas)');
Ich tendiere vom logischen her eher zu möglichkeit b :roll: Ich auch :!: ,aber wo ist denn die Möglichkeit ? Da stimmt schon wieder etwas mit den ' nicht. Eine Klammer ist auch zuviel. Wie willst Du so jemals compilierern ?

Gruß
Hansa

Scorpion 17. Jan 2003 17:04

möglichkeit B habe ich zum compilieren gebracht, abgesehen von der klammer, aber es ging trotzdem nicht

Hansa 17. Jan 2003 17:07

Typ schreibt man mit e am Schluß.

Gruß
Hansa

Scorpion 17. Jan 2003 17:09

Typ ist ein Datenbankfeld !!

Hansa 17. Jan 2003 17:20

Hi,

Code:
Sql.Add(' where (Datum = ' + QuotedStr(DatetoStr(Datum)) +' and Typ = irgendwas)');
Typ = irgendwas, das war das vermisste e von type. Vermute, daß bei "irgendwas" irgendwas :mrgreen: faul ist.

Gruß
Hansa

Gollum 17. Jan 2003 17:48

Hallo,

das Problem liegt am Aufruf von ExecSQL vor Open. Es geht nur Entweder oder. Ein EXECSQL wird bei UPDATE, INSERT usw. aufgerufen. Wenn ich nur Daten aus einer Tabellen selektieren will, muss man Open benutzen.

Hansa 17. Jan 2003 18:04

Probiers mal in diesem Stil :

Code:
  RecDS.Active := false;
  RecDS.SelectSQL.Text := 'SELECT R.*,A.* FROM REC8 R JOIN ART8 A ON A.ID = R.ID_ART)'+' WHERE R.ID_RECKOPF = ' + ReNrEdit.Text + ';
  RecDS.Active := true;
end;
Also :

1. active auf false setzen
2. SQL-Anweisung zusammenbauen.
3. active auf true setzen

Hierbei ist zu beachten : Ich mache das mit FIBplus-Komponenten. Ob es sonstwo in der Weise funktioniert, weiß ich nicht. Müßte aber auch gehen. zumindest FIBplus ist mit TdataSet kompatibel. Das SELECT kann natürlich auch einfacher sein.

Gruß
Hansa


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