Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zwei SQL Anweisungen in einer. (https://www.delphipraxis.net/95966-zwei-sql-anweisungen-einer.html)

Zaebos 16. Jul 2007 20:39

Datenbank: DBase • Version: 3 • Zugriff über: ADO

Zwei SQL Anweisungen in einer.
 
Hallo nochmal.

Ganz kurze frage am Rande. Hab ne SQL-Anweisung die mir DS mit BETWEEN sucht. Diese DatenSätze möchte ich dann nochmal sortieren. Mit OrderBy funktioniert das aber komischerweise nicht. Kann mir da wer kurz n Rat geben?

Danke schonmal.

mkinzler 16. Jul 2007 20:44

Re: Zwei SQL Anweisungen in einer.
 
Zeig mal deine Abfrage.

Zaebos 16. Jul 2007 20:48

Re: Zwei SQL Anweisungen in einer.
 
Delphi-Quellcode:
SELECT Feld1,Feld2.... FROM Tabelle WHERE Feld1 BETWEEN "01.01.1999" AND TODAY() AND Feld2 BETWEEN "0000" AND NOW()
In etwa habe ich mir das gedacht. Und dann halt noch nen ORDER BY füe die beiden Felder, sodass ich immer den aktuellen Datensatz (zeitlich am nächsten) und immer weiter abwärts habe.

mkinzler 16. Jul 2007 20:50

Re: Zwei SQL Anweisungen in einer.
 
Welche Typen haben Feld1 und Feld2?

Zaebos 16. Jul 2007 20:52

Re: Zwei SQL Anweisungen in einer.
 
Feld1 Datum, Feld2 Integer. Geht das vllt mit UNION?

mkinzler 16. Jul 2007 20:55

Re: Zwei SQL Anweisungen in einer.
 
Now() ist ein Timestamp. Wie willst du diese mit Integer vergleichen?

Zaebos 16. Jul 2007 20:58

Re: Zwei SQL Anweisungen in einer.
 
stimmt. war auch die alte anweisung. sry. hab nu für die zeit FormatDateTime genommen. und union is auch quatsch sry.

das macht die verzweiflung.

mkinzler 16. Jul 2007 21:00

Re: Zwei SQL Anweisungen in einer.
 
Grundsätzlich sollte es aber mot dem Order By gehen. Kommt den ein Fehler oder wird nur falsch sortiert?

Zaebos 16. Jul 2007 21:01

Re: Zwei SQL Anweisungen in einer.
 
mom

mkinzler 16. Jul 2007 21:02

Re: Zwei SQL Anweisungen in einer.
 
Zitat:

Zitat von Zaebos
mom

Was heißt das im Klartext?

Die Muhkuh 16. Jul 2007 21:04

Re: Zwei SQL Anweisungen in einer.
 
Zitat:

Zitat von mkinzler
Zitat:

Zitat von Zaebos
mom

Was heißt das im Klartext?

mom = Moment ;)

mkinzler 16. Jul 2007 21:06

Re: Zwei SQL Anweisungen in einer.
 
[OT]Hier müsst hier an die etwas älteren denken, welche dem jugendlichen Slang nicht mehr so kennen.[/OT]

Zaebos 16. Jul 2007 21:08

Re: Zwei SQL Anweisungen in einer.
 
Danke Muhkuh ^^ und sry kinzler. Wobei ich auch net mehr der jüngste bin -.-
Also. Hier meine Anweisung.:

Delphi-Quellcode:
Query1.sql.text:='SELECT FIRMA,KOMMENTAR,KONTAKTART,BEARBEITER,WVKONTAKT,WVZEIT,ORT,LKZEIT FROM SUCC1 WHERE WVKONTAKT BETWEEN "01.01.1999" AND '''+FormatDateTime('dd.mm.yyyy', now)+''' AND WVZEIT BETWEEN "0000" AND '''+FormatDateTime('hhmm', now)+''' ORDER BY WVKONTAKT,WVZEIT';
So hab ich mir das gedacht. Aktuelle Fehlermeldung: "Table level changed". Und ich weiss net warum. Wenn man sich schlauliest / lesen will... Ich sag besser nix...

mkinzler 16. Jul 2007 21:14

Re: Zwei SQL Anweisungen in einer.
 
Versuch es mal mit Parametern:
SQL-Code:
SELECT
    FIRMA, KOMMENTAR, KONTAKTART, BEARBEITER, WVKONTAKT, WVZEIT, ORT, LKZEIT
FROM
    SUCC1 
WHERE
    WVKONTAKT BETWEEN :sdatum AND :edatum AND
    WVZEIT BETWEEN :szeit AND :ezeit
ORDER BY
    WVKONTAKT, WVZEIT;

Zaebos 16. Jul 2007 21:16

Re: Zwei SQL Anweisungen in einer.
 
mom (Jetzt weiss er ja was das heisst)

Zaebos 16. Jul 2007 21:22

Re: Zwei SQL Anweisungen in einer.
 
habe ich das jetzt richtig verstanden:
Delphi-Quellcode:
var
sdatum,edatum:string;
szeit,ezeit:integer;
begin
sdatum:='01.01.1999';
edatum:=FormatDateTime('dd.mm.yyyy', now);
szeit:=0000;
ezeit:=strtoint(FormatDateTime('hhnn', now));

Query1.sql.text:='SELECT FIRMA,KOMMENTAR,KONTAKTART,BEARBEITER,WVKONTAKT,WVZEIT,ORT,LKZEIT FROM SUCC1 WHERE WVKONTAKT BETWEEN :sdatum AND :edatum AND WVZEIT :szeit AND :ezeit ORDER BY WVKONTAKT,WVZEIT';
query1.active:=true;
???

Zaebos 16. Jul 2007 21:24

Re: Zwei SQL Anweisungen in einer.
 
Habe ich das nun richtig verstanden:
Delphi-Quellcode:
var
sdatum,edatum:string;
szeit,ezeit:integer;
begin
sdatum:='01.01.1999';
edatum:=FormatDateTime('dd.mm.yyyy', now);
szeit:=0000;
ezeit:=strtoint(FormatDateTime('hhnn', now));
Query1.sql.text:='SELECT FIRMA,KOMMENTAR,KONTAKTART,BEARBEITER,WVKONTAKT,WVZEIT,ORT,LKZEIT FROM SUCC1 WHERE WVKONTAKT BETWEEN :sdatum AND :edatum AND WVZEIT :szeit AND :ezeit ORDER BY WVKONTAKT,WVZEIT';
query1.active:=true;

Zaebos 16. Jul 2007 21:25

Re: Zwei SQL Anweisungen in einer.
 
ich pfeife ^^

mkinzler 16. Jul 2007 21:29

Re: Zwei SQL Anweisungen in einer.
 
Eher:

Delphi-Quellcode:
Query1.sql.text:='SELECT FIRMA,KOMMENTAR,KONTAKTART,BEARBEITER,WVKONTAKT,WVZEIT,ORT,LKZEIT FROM SUCC1 WHERE WVKONTAKT BETWEEN :sdatum AND :edatum AND WVZEIT :szeit AND :ezeit ORDER BY WVKONTAKT,WVZEIT';
Query1.Parameters.ParamByName('sdatum').asString := '01.01.1999';
Query1.Parameters.ParamByName('edatum').Value := Date();
Query1.Parameters.ParamByName('szeit').Value := 0;
Query1.Parameters.ParamByName('ezeit').Value := Now();

Zaebos 16. Jul 2007 21:48

Re: Zwei SQL Anweisungen in einer.
 
Hm. Okay. Würde ich ja gerne ausprobieren nur leider kann ich bei meiner TQuery-Komponente keine Params hinzufügen.

mkinzler 16. Jul 2007 21:49

Re: Zwei SQL Anweisungen in einer.
 
Verwendest du die BDE (TQuery) oder wie oben geschrieben ADO (TADOQuery)?

Zaebos 16. Jul 2007 21:53

Re: Zwei SQL Anweisungen in einer.
 
Ups BDE sry (achte ich nächstes mal besser drauf) :oops:

mkinzler 16. Jul 2007 21:55

Re: Zwei SQL Anweisungen in einer.
 
Delphi-Quellcode:
Query1.ParamByName('sdatum').asString := '01.01.1999';

Zaebos 16. Jul 2007 22:00

Re: Zwei SQL Anweisungen in einer.
 
Hmmm. Fehlermeldung "Query1: Param 'sdatum' not found.

mkinzler 16. Jul 2007 22:02

Re: Zwei SQL Anweisungen in einer.
 
Ist .ParamCheck True?

Zaebos 16. Jul 2007 22:03

Re: Zwei SQL Anweisungen in einer.
 
Nein war false.

Zaebos 16. Jul 2007 22:05

Re: Zwei SQL Anweisungen in einer.
 
aber ob true ob false. dadurch ändert sich aucht nix. leider. -.-

mkinzler 16. Jul 2007 22:13

Re: Zwei SQL Anweisungen in einer.
 
Die Parameterzuweisung ist aber nach der Zuweisung der Abfrage?

Zaebos 16. Jul 2007 22:15

Re: Zwei SQL Anweisungen in einer.
 
jop

x000x 16. Jul 2007 22:18

Re: Zwei SQL Anweisungen in einer.
 
Moin moin,

[OT] lol, ihr tackert den Thread aber schnell zu ;-)
Geht doch innen Chat, geht evtl. schneller?! [/OT]

mkinzler 16. Jul 2007 22:23

Re: Zwei SQL Anweisungen in einer.
 
Zeig mal den ganzen Codeblock

Zaebos 16. Jul 2007 22:30

Re: Zwei SQL Anweisungen in einer.
 
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
begin
Query1.active:=false;
Query1.sql.text:='SELECT FIRMA,KOMMENTAR,KONTAKTART,BEARBEITER,WVKONTAKT,WVZEIT,ORT,LKZEIT FROM SUCC1 WHERE WVKONTAKT BETWEEN :sdatum AND :edatum AND WVZEIT :szeit AND :ezeit ORDER BY WVKONTAKT,WVZEIT';
Query1.ParamByName('sdatum').asString := '01.01.1999';
Query1.ParamByName('edatum').Value := Date();
Query1.ParamByName('szeit').Value := 0;
Query1.ParamByName('ezeit').Value := Now();
query1.active:=true;
end;

mkinzler 16. Jul 2007 22:33

Re: Zwei SQL Anweisungen in einer.
 
Ersetze mal
SQL-Code:
WVKONTAKT BETWEEN :sdatum AND :edatum
mit
SQL-Code:
WVKONTAKT >= :sdatum AND WVKONTAKT <= :edatum

Zaebos 16. Jul 2007 22:43

Re: Zwei SQL Anweisungen in einer.
 
Invalid use of Keyword. Token: ?

Zaebos 16. Jul 2007 22:44

Re: Zwei SQL Anweisungen in einer.
 
Ich probiers einfach morgen selber nochmal. will ja keinen nerven. Falls ich was neues habe melde ich mich. Gute nacht zusammen.

raiguen 17. Jul 2007 09:38

Re: Zwei SQL Anweisungen in einer.
 
:gruebel: müsste dieser Teil des SQL-Statements
Delphi-Quellcode:
 WHERE WVKONTAKT BETWEEN :sdatum AND :edatum AND WVZEIT :szeit AND :ezeit ORDER BY WVKONTAKT,WVZEIT';
richtigerweise so lauten :gruebel:
Delphi-Quellcode:
 WHERE (WVKONTAKT BETWEEN :sdatum AND :edatum) AND (WVZEIT BETWEEN :szeit AND :ezeit) ORDER BY WVKONTAKT,WVZEIT';
m.E. fehlt(e) BETWEEN bei WVZEIT... Die Klammern hab ich gewohnheitsgemäss gleich mal mit dazu gesetzt...

Zaebos 1. Aug 2007 11:08

Re: Zwei SQL Anweisungen in einer.
 
Delphi-Quellcode:
Query1.active:=false;
Query1.sql.text:='SELECT FIRMA,WVZEIT,WVKONTAKT FROM SUCC1 WHERE WVKONTAKT<=:edatum ORDER BY WVKONTAKT DESC';
Query1.ParamByName('edatum').Value := Date();
query1.active:=true;
Statt TODAY() einfach Date(). Dann gehts. Danke nochmal für eure Hilfe. :-D


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