AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL: Wenn Query eine Summe erhält (>0) Bedingung ausführen.
Thema durchsuchen
Ansicht
Themen-Optionen

SQL: Wenn Query eine Summe erhält (>0) Bedingung ausführen.

Ein Thema von LuckyStrike4life · begonnen am 12. Jan 2004 · letzter Beitrag vom 13. Jan 2004
Antwort Antwort
Seite 1 von 2  1 2      
LuckyStrike4life

Registriert seit: 22. Jul 2003
Ort: SN
105 Beiträge
 
Delphi 5 Enterprise
 
#1

SQL: Wenn Query eine Summe erhält (>0) Bedingung ausführe

  Alt 12. Jan 2004, 08:23
Morgen,

ich müsste mal dringend wissen - ob und wenn ja wie es möglich ist, eine Bedingung aus SQL zu starten.

Das ganze schaut so aus, mit Hilfe von SQL frag ich ab, ob am jeweiligem Datum (Tag X) das entsprechende Auto, welches ein User am Tag X haben möchte, noch da ist - oder nicht.

Den SQL Code:
Delphi-Quellcode:
Query2.Close;
Query2.SQL.Clear;
sSQL := 'SELECT * FROM "t:eDienstreisebuch\mainDBalt.dbf" where dienst_pkw = "' + PKW.Text + '" AND datum = ''' + Datum2.text + '''';
Query2.sql.add(sSQL);
Query2.Active:=True;
habe ich an die ButtonClickFunktion des Abschick-Buttons gesetzt.

Soweit gehts auch, wenn ein bereits eingetragener Datensats übereinstimmt, wird dieser in den Query geschrieben und ich laß ihn mir über ein DBGrid anzeigen.

Später ist aber kein Platz mehr für ein DBGrid und der User soll auch nur drauf hingewiesen werden, wenn er den Wagen an Tag X nicht haben kann, ansonsten soll der neue Datensatz ganz normal eingetragen werden.

Ich hoffe mein Problem richtig erklärt zu haben, habt ihr vielleicht Ideen?
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf

  Alt 12. Jan 2004, 08:27
Variante 1: Select Count(*) From ...

Variante 2: Wie gehabt, nur nachher prüfen: if Query.bof and Query.eof then AutoNichtDa
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
LuckyStrike4life

Registriert seit: 22. Jul 2003
Ort: SN
105 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf

  Alt 12. Jan 2004, 08:34
Zitat von Mario:
Variante 1: Select Count(*) From ...

Variante 2: Wie gehabt, nur nachher prüfen: if Query.bof and Query.eof then AutoNichtDa
D.h. ich kann tatsächlich eine IF Abfrage in den SQL Text einfügen? Bzw. direkt nach dem
Delphi-Quellcode:
Query2.sql.add(sSQL);
Query2.Active:=True;
schreiben?
Wäre schön.
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf

  Alt 12. Jan 2004, 08:44
Delphi-Quellcode:
Query2.Close;
Query2.SQL.Clear;
sSQL := 'SELECT * FROM "t:eDienstreisebuch\mainDBalt.dbf" where dienst_pkw = "' + PKW.Text + '" AND datum = ''' + Datum2.text + '''';
Query2.sql.add(sSQL);
Query2.Active:=True;
if Query2.Bof and Query2.Eof then SHowMessage("Keine Daten");
So sollte es gehen.
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
LuckyStrike4life

Registriert seit: 22. Jul 2003
Ort: SN
105 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf

  Alt 12. Jan 2004, 09:35
Zitat von Mario:
Delphi-Quellcode:
Query2.Close;
Query2.SQL.Clear;
sSQL := 'SELECT * FROM "t:eDienstreisebuch\mainDBalt.dbf" where dienst_pkw = "' + PKW.Text + '" AND datum = ''' + Datum2.text + '''';
Query2.sql.add(sSQL);
Query2.Active:=True;
if Query2.Bof and Query2.Eof then SHowMessage('Keine Daten');
So sollte es gehen.
Danke, das funktioniert!!
Damit hast du mir sehr geholfen.
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf

  Alt 12. Jan 2004, 10:37
Was ist, wenn das Auto nur 2 Stunden weg ist?
Du würdest es nicht weiter vermieten Verdienstausfall

2.Bsp. : Auto wurde am 3.1. gemietet und am 5.1. zurückgebracht: Wie reagiert dein Programm dann für den 4.1.?
  Mit Zitat antworten Zitat
LuckyStrike4life

Registriert seit: 22. Jul 2003
Ort: SN
105 Beiträge
 
Delphi 5 Enterprise
 
#7

Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf

  Alt 12. Jan 2004, 10:51
Zitat von GeorgeWNewbie:
Was ist, wenn das Auto nur 2 Stunden weg ist?
Du würdest es nicht weiter vermieten Verdienstausfall

2.Bsp. : Auto wurde am 3.1. gemietet und am 5.1. zurückgebracht: Wie reagiert dein Programm dann für den 4.1.?
Schön das du dir Gedanken machst.
Das wurde hier schon auf Konverenzen besprochen, ich stand deswegen auch schon stark in der Kritik.

Die Wahrscheinlichkeit ein PKW an dem selben Tag, noch einem weiteren Mitarbeiter geben zu können ist gering. Auswertung der alten Datenbank hat das ergeben.

Natürlich wäre es schön, wenn man es auch noch von der Zeit abhängig macht. Das war auch mein Ziel, sobald ich mit der Revision des Programmes fertig bin, dann nutze ich die Zeit die mir noch bleibt (das wird nicht viel Zeit sein) um es auch Tageszeit abhängig zu gestalten.
Dafür gibt es hier ja auch schon ein Thread, wo es um Räume ging, und belegt oder nicht.
Erinnert ihr euch sicher noch dran.

Vorläufig muss es so reichen... .
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat
LuckyStrike4life

Registriert seit: 22. Jul 2003
Ort: SN
105 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf

  Alt 13. Jan 2004, 07:54
Verdammt,
da gibts noch n Problem mit deinem Code, Mario.

Er schaut jetzt im Programm so aus:
Delphi-Quellcode:
var
sSQL: string;
procedure TForm1.Button2Click(Sender: TObject);
begin
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Text :=
   'SELECT *' + #10 +
   'FROM "t:eDienstreisebuch\mainDB.dbf"' + #10 +
   'WHERE Dienst_PKW = :iDienst_PKW And' + #10 +
   ' Datum = :iDateT';

Query2.prepare;
Query2.ParamByName('iDienst_PKW').AsString := Dienst_Pkw.text;
Query2.ParamByName('iDateT').AsDateTime := DateT.DateTime;
Query2.open;
//Query2.sql.add(sSQL);
Query2.Active:=True;
if Query2.Bof and Query2.Eof
 then begin ShowMessage('Dateneingabe');

end
else ShowMessage('Keine Daten');
Ein Fehler fällt auf, die Zeile die ich ausgeklammert habe, kann in der Form ja auch nicht funktionieren. Denn sSQL ist ja nicht mehr vorhanden, die Deklaration davon - könnte ich also auch entfernen.

Nun sieht es leider so aus, dass das Programm immer then begin ShowMessage('Dateneingabe'); ausführt, niemals else ShowMessage('Keine Daten'); [/delphi]. Auch wenn es eine Summe im Query gibt.

Der alte Code, der funktioniert hat sah so aus:
Delphi-Quellcode:
var
sSQL: String;
procedure TForm1.Button1Click(Sender: TObject);
begin
Query2.Close;
Query2.SQL.Clear;
sSQL := 'SELECT * FROM "t:eDienstreisebuch\mainDBalt.dbf" where dienst_pkw = "' + PKW.Text + '" AND datum = ''' + Datum2.text + '''';
Query2.sql.add(sSQL);
Query2.Active:=True;
if Query2.Bof and Query2.Eof then ShowMessage('Keine Daten');
end;
Dabei gabs dann aber das Problem mit dem DateTimePicker... .

Was hab ich denn an dem Code oben falsch gemacht?
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#9

Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf

  Alt 13. Jan 2004, 08:05
Das mit dem EOF/BOF gefällt mir nicht. Schau mal, ob es da nicht "IsEmpty" oder "IsNull" oder so in der Richtung gibt.
Gruß
Hansa
  Mit Zitat antworten Zitat
LuckyStrike4life

Registriert seit: 22. Jul 2003
Ort: SN
105 Beiträge
 
Delphi 5 Enterprise
 
#10

Re: SQL: Wenn Query eine Summe erhält (>0) Bedingung ausf

  Alt 13. Jan 2004, 08:09
Zitat von Hansa:
Das mit dem EOF/BOF gefällt mir nicht. Schau mal, ob es da nicht "IsEmpty" oder "IsNull" oder so in der Richtung gibt.
Ja, aber es funktioniert ja.
Im alten Code sogar 100%ig zuverlässig,
da kann das Problem nicht liegen... *seufz*.
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 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