AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi In SQL Anweisung Feld Inhalt abfragen lassen
Thema durchsuchen
Ansicht
Themen-Optionen

In SQL Anweisung Feld Inhalt abfragen lassen

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

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

Re: In SQL Anweisung Feld Inhalt abfragen lassen

  Alt 8. Jan 2004, 14:36
Zitat von r_kerber:
Zitat von LuckyStrike4life:
Wenn ich keine Anführungsstriche um Datum setze, dann läßt es sich nicht compilieren.
Doch, mit doppelten Hochkommas! Und das ist genau das, was QuotedStr auch macht. Es gibt Datenbanken, die akzeptieren kein " als Klammerung für Zeichenketten!
Verstehe, also '' anstatt ". Ich versuchs...

Also das:
''' + Datum2.text + '''' geht auch, sieht komisch aus - aber okay.
Gleiches Ergebnis wie mit ".
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#12

Re: In SQL Anweisung Feld Inhalt abfragen lassen

  Alt 8. Jan 2004, 14:40
oder
sSQL := 'SELECT * FROM "t:eDienstreisebuch\mainDBalt.dbf" where dienst_pkw = ' + QuotedStr (PKW.Text); Sieht besser aus. Für mich sieht eher die Pfadangabe nach FROM komisch aus. Warum nutzt Du keine BDE-Aliase (in Verbindung mit TDatabase im Programm)?
  Mit Zitat antworten Zitat
LuckyStrike4life

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

Re: In SQL Anweisung Feld Inhalt abfragen lassen

  Alt 8. Jan 2004, 14:59
Zitat von r_kerber:
oder
sSQL := 'SELECT * FROM "t:eDienstreisebuch\mainDBalt.dbf" where dienst_pkw = ' + QuotedStr (PKW.Text); Sieht besser aus. Für mich sieht eher die Pfadangabe nach FROM komisch aus. Warum nutzt Du keine BDE-Aliase (in Verbindung mit TDatabase im Programm)?
Über Alias Namen von den DBs haben wir doch schon oft gesprochen, ich werds auch noch ändern, allerdings alles zu seiner Zeit .
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat
LuckyStrike4life

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

Re: In SQL Anweisung Feld Inhalt abfragen lassen

  Alt 9. Jan 2004, 09:46
Zitat von GeorgeWNewbie:
Hi LuckyStrike, eine ähnliche Problematik hatten wir hier schon einmal.
Hier im Forum suchenfreien AND Belegungszeitraum AND ermitteln - Treffnix's Lösung war die richtige.
Ja, den Thread kannte ich auch schon .
Der Code ist interessant, so könnte man sogar (eventuell) nach der Uhrzeit gucken lassen. Aber alles nach und nach.

Jetzt fehlt mir noch n kleines Stück Wissen, bis ich den Code auch tatsächlich verwenden kann.

Es ist ja so, ein User trägt sein Antrag ein, dass Programm schaut ob an dem Tag das Auto welches er haben möchte frei ist, wenn ja - dann soll der Datensatz einfach eingestellt werden.
Sollte der gewünschte Wagen aber schon vergeben sein, so muss eine Meldung erscheinen (z.B. durch aufpoppen eines neuen Forms) und es muss der Datensatz angezeigt werden, der den Wagen schon belegt.

Aber wie schreib ich den SQL Code um, dass wenn es ein Ergebnis gibt (sprich: der Wagen schon weg ist) auch eine Handlung vom Programm ausgeführt wird.

Bis jetzt schreibt er das Ergebnis ja nur in ein Query, den ich über n Grid ausgeben lasse.

Ideen? Gibts da eine Lösung oder muss ich ganz anders rangehen?

[edit=sakura] Doppel-Post, dritten Post, vierten Post und fünften Post gelöscht. Mfg, sakura[/edit]
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#15

Re: In SQL Anweisung Feld Inhalt abfragen lassen

  Alt 9. Jan 2004, 10:40
Moin.
Also wenn ich dich richtig verstanden habe, willst du eine eierlegende Wollmilchsau.

Nehme eine Query, die prüft, ob es schon Einträge für das Auto zu dem Zeitpunkt gibt. (Genau das macht der Code in dem anderem Thread)

Wenn die Abfrage nix gefunden hat kannst du normal weitermachen, andernfalls eine Meldung ausgeben.
  Mit Zitat antworten Zitat
LuckyStrike4life

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

Re: In SQL Anweisung Feld Inhalt abfragen lassen

  Alt 12. Jan 2004, 12:21
@sakura
Das war wirklich nicht meine Absícht, ich hab immer nur Fehlermeldungen vom Browser erhalten, und dann auf ein neues versucht. Das es am Ende so schlimm aussah, wusste ich nicht. Sorry.

Kleines Problem gibts noch mit dem Code.

Ich hab dafür ja ein Testprogramm erstellt, nun wollte ich es übernehmen.
Das Problem liegt in den verwendeten Komponenten,

die Abfrage welcher PKW genutzt werden soll, erfolgt über eine DBCombobox. Kein Problem, läßt sich in der Form abgreifen:
Dienst_Pkw.text Das Datum hingegen, stammt aus dem DateTimePicker. Und läßt sich natürlich nicht so einfach abgreifen,
ich habs dann mit:
DateT.Date versucht. Klang mir recht logisch.

Der Code sieht demzufolge nun so aus:
Delphi-Quellcode:
var
sSQL: string;

Procedure TForm1.Button9Click(Sender: TObject);
Begin

Query2.Close;
Query2.SQL.Clear;
sSQL := 'SELECT * FROM "t:eDienstreisebuch\mainDB.dbf" where dienst_pkw = "' + Dienst_Pkw.text + '" AND datum = ''' + DateT.Date + '''';
Query2.sql.add(sSQL);
Query2.Active:=True;
Delphi mag aber nicht compilieren, Delphi sagt dazu:
Zitat:
[Fehler] DB4realpas.pas(247): Inkompatible Typen: 'String' und 'TDate'
Okay, muss sich ja auch nicht als String abfragen lassen. Normal würde ich AsDateTime := DateT.Date; schreiben, aber in SQL funktioniert jenes nicht.

Wie kann ich das Problem lösen... es hindert jetzt extrem am Fertigstellen... .
*seufz*
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#17

Re: In SQL Anweisung Feld Inhalt abfragen lassen

  Alt 12. Jan 2004, 12:46
Wenn du SQL-Variablen benutzt bekommst du 1. ein paar Probleme weniger und 2. läuft es nächsten Ausführen wesentlich schneller.

Delphi-Quellcode:
  Query1.SQL.TEXT :=
   'SELECT *' + #10 +
   'FROM "t:eDienstreisebuch\mainDB.dbf"' + #10 +
   'WHERE Dienst_PKW = :iDienst_PKW And' + #10 +
   ' Datum = :iDateT';

  Query1.prepare;
  Query1.ParamByName('iDienst_PKW').AsString := Dienst_Pkw.text;
  Query1.ParamByName('iDateT').AsDateTime := DateT.DateTime;
  Query1.open;
p.s.: Die Lesbarkeit ist so auch wesentlich besser...
  Mit Zitat antworten Zitat
LuckyStrike4life

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

Re: In SQL Anweisung Feld Inhalt abfragen lassen

  Alt 12. Jan 2004, 12:58
Zitat von GeorgeWNewbie:
Wenn du SQL-Variablen benutzt bekommst du 1. ein paar Probleme weniger und 2. läuft es nächsten Ausführen wesentlich schneller.

Delphi-Quellcode:
  Query.SQL.TEXT :=
   'SELECT *' + #10 +
   'FROM "t:eDienstreisebuch\mainDB.dbf"' + #10 +
   'WHERE Dienst_PKW = :iDienst_PKW And' + #10 +
   ' Datum = :iDateT';

  Query1.prepare;
  Query1.ParamByName('iDienst_PKW').AsString := Dienst_Pkw.text;
  Query1.ParamByName('iDateT').AsDateTime := DateT.DateTime;
  Query1.open;
p.s.: Die Lesbarkeit ist so auch wesentlich besser...
Interessant,
brauch ich für prepare ein neuen Query? Weil du Query1 geschrieben hast, ich momentan für den eigentlichen Code allerdings Query 2 nutze.

Wofür steht eigentlich '+ #10 +'? Nur damit ich auch mal n wenig was lerne.
- ich kann doch wirklich nichts -
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#19

Re: In SQL Anweisung Feld Inhalt abfragen lassen

  Alt 12. Jan 2004, 14:16

Ich hatte mich verschrieben.
Es sollte in der ersten Zeile auch "Query1" stehen (ich werden den Post abändern)

#10 ist ein LineFeed und reicht in SQL als Zeilenumbruch (du brauchst kein #13#10)
  Mit Zitat antworten Zitat
LuckyStrike4life

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

Re: In SQL Anweisung Feld Inhalt abfragen lassen

  Alt 13. Jan 2004, 09:24
Verdammt,
da gibts noch n Problem mit deinem Code.

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
Antwort Antwort
Seite 2 von 3     12 3      


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 10:43 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