AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Befehl zum Ausgeben von daten in einen bestimmten Bereic
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Befehl zum Ausgeben von daten in einen bestimmten Bereic

Ein Thema von Kruemel2oo2 · begonnen am 1. Jul 2004 · letzter Beitrag vom 2. Jul 2004
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#11

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be

  Alt 1. Jul 2004, 09:45
Zitat von sakura:
Nun aber mal zu Sharkys Ansatz. Wenn die Datumspanne mal etwas größer wird, dann ist dieser wohl falsch ...
Skandal! Ich mache doch nichts falsch
Es ist die richtige Antwort auf die Frage
Das Problem ist das wohl die Frage nicht so gestellt ist wie das gewünschte Ergbniss sein sollte
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Kruemel2oo2

Registriert seit: 23. Jun 2004
65 Beiträge
 
#12

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be

  Alt 1. Jul 2004, 09:45
em sharky also das mit den Params versteh ich net und zu dem denke ich auch net das dat funzt da ich ja wie man bei mir sieht Tag Monat und jahr aus ner variablen kommen (von DatTimePicker ausgelesen).

also hier mal so alles zumindestens die funktion.

Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
var
  Name1,Name, tmj: string;
  Monat, Tag1, jahr: string;
  Monat1, Tag2, jahr1: string;
  datum : TDateTime;
begin
  if RadioButton2.Checked then
  begin
    DateTimePicker2.Enabled := true;
    datum:=DateTimePicker1.Date;
    Name := ComboBox1.Text;
    tmj:=DateToStr(datum);
    //gibt den Tag zurück
    Tag1 :=copy(DateToStr(DateTimePicker1.Date), 1, 2);
    //gibt den Monat zurück
    monat:=copy(DateToStr(DateTimePicker1.Date), 4, 2);
    //gibt das Jahr zurück
    jahr:=copy(DateToStr(DateTimePicker1.Date), 9, 2);
    Tag2 :=copy(DateToStr(DateTimePicker2.Date), 1, 2);
    monat1:=copy(DateToStr(DateTimePicker2.Date), 4, 2);
    jahr1:=copy(DateToStr(DateTimePicker2.Date), 9, 2);
    if Name = 'allethen
    begin
      Form1.Query1.Active:=False;
      Form1.Query1.SQL.Clear();
      Form1.Query1.SQL.Add('select * from Booking where (Tag between"'+Tag1+'"AND "'+Tag2+'")AND(Monat between"'+Monat+'"AND"'+Monat1+'") AND (Jahr between"'+Jahr+'"AND"'+jahr1+'") order by name, Uhrzeit');
      Form1.Query1.Open();
      Form1.Query1.Active:=True;
      Form1.QuickRep1.Preview();
    end;
  end;
end;
also das ist alles und funzen tut das auch aba nur ohne dem bereich also between.

PS: sakura die Katze ist goil
Alle Tippfehler dienen nur zur Belustigung und wurden mit voller Absicht gesetzt.


:-:-: [ich bin ein DAU ]:-:-:
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#13

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be

  Alt 1. Jul 2004, 09:46
Hai Kruemel2002,

zwei Fragen:

a) Welche Datenbank
b) Was genau möchtest Du machen? So wie Sakura geschrieben alle Datensätze die zwichen zwei Datumswerten liegen?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Kruemel2oo2

Registriert seit: 23. Jun 2004
65 Beiträge
 
#14

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be

  Alt 1. Jul 2004, 09:53
Mysql

ich habe 2 Datetimepicker bei denen wähle ich aus in welchen Bereich ich einen Log (den ich bei ner anderen Funktion in die DAtenbank schreibe). Ich übergebe das an einen Quickrep. Dort will ich jetzt den ausgewählten bereich (den bei den beiden DateTimepicker) sehen.

Ist das so einigermasen verständlich?ß

ich drück mich imma so schwer aus ;D
Alle Tippfehler dienen nur zur Belustigung und wurden mit voller Absicht gesetzt.


:-:-: [ich bin ein DAU ]:-:-:
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be

  Alt 1. Jul 2004, 10:03
Zitat von Sharky:
So wie Sakura geschrieben alle Datensätze die zwichen zwei Datumswerten liegen?
So steht es ja auch in seiner Frage (ganz, ganz oben). Das Datum war ja nur ein Beispiel für einen Bereich, nicht der Bereich

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Kruemel2oo2

Registriert seit: 23. Jun 2004
65 Beiträge
 
#16

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be

  Alt 1. Jul 2004, 10:28
also die anweisung funzt ist mir grad aufgefellen aba nur wenn ich als ertes also die erste Comobox mit den heutigen Datum nehm wenn ich ein datum nehm was gestern oda so war funzt es net . Woran liegt das?

edit: hab den fehler gefunden . ist aba nen scheiß fehler
Alle Tippfehler dienen nur zur Belustigung und wurden mit voller Absicht gesetzt.


:-:-: [ich bin ein DAU ]:-:-:
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#17

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be

  Alt 1. Jul 2004, 12:06
Zitat von Kruemel2oo2:
....edit: hab den fehler gefunden . ist aba nen scheiß fehler
Hai Kruemel2002,

ich glaube ich habe jetzt die "optimal" Lösung gefunden:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with Query1 do
  begin
    Close;
    SQL.Text := 'SELECT *' + #10
      + 'FROM Booking' + #10
      + 'WHERE CAST(CONCAT(jahr,"-",monat,"-",tag) AS DATE) BETWEEN :start AND :ende' +#10
      + 'ORDER BY name, uhrzeit';
    ParamCheck := True;
    Params.ParamByName('start').AsString := FormatDateTime ('yyyy-m-d',DateTimePicker1.Date);
    Params.ParamByName('ende').AsString := FormatDateTime ('yyyy-m-d',DateTimePicker2.Date);
    Open;
  end;
end;
Mit CONCAT setze ich aus deinen drei Feldern einen String zusammen im Format 'yyyy-m-d'. Diesen wandele ich dann mit CAST in einen Datumwert um. Der rest ist dann wieder Standard-SQL.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Kruemel2oo2

Registriert seit: 23. Jun 2004
65 Beiträge
 
#18

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be

  Alt 1. Jul 2004, 12:19
hmm erklär mir ma dieses paramcheck und dieses params und naja den rest versteh ich zum teil.
die 3 felder sind das die von der Daten bank? oda sind sollen das die variablen sein? und was macht dieses +#10 ? und wenn die 3 felder von der Datenbank sind wo werden denn die variablen da eingefügt? also ist bestimmt ne gute lösung (bestimmt auch optimal) aba ich seh da net so ganz durch bin net so der SQL sezi. Könntest das ma nen bischen erklären bitte!
Alle Tippfehler dienen nur zur Belustigung und wurden mit voller Absicht gesetzt.


:-:-: [ich bin ein DAU ]:-:-:
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#19

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be

  Alt 1. Jul 2004, 12:48
Zitat von Kruemel2oo2:
...die 3 felder sind das die von der Daten bank?
tag,monat,jahr sind die Feldenamen in der Tabelle.

Zitat:
.. was macht dieses +#10
#10 ist nicht anderes als ein Zeilenumbruch. Manche Datenbanken mögen es nicht wenn alle Befehle in einer Zeile stehen.

Zitat:
Könntest das ma nen bischen erklären bitte!
Also,

Parameter in einer SQL-Abfrage kannst Du dir wie "platzhalter" vorstellen.
SELECT * FROM tabelle WHERE name = :param1 param1 ist jetzt mein Parameter (Platzhalter). Diesem muss ich jetzt noch einen Wert zuweisen. Das passiert mit:
Delphi-Quellcode:
begin
  Query1.Params.ParamByName ('param1').AsString := 'blubb';
end;
Vorher sage ich meinem Query mit ParamCheck := True; das es die Parameter auch bitte auswerten soll.
Der Vorteil der Parameter ist das ich mich nicht darum kümmern muss das sie in der für meine Datenbank richtigen Formatierung benutzt werden. Wenn Du das ganze ohne Parameter machen möchtest, musst Du es ja so schreiben:
Delphi-Quellcode:
begin
  Query1.Close;
  Query1.SQL.Text := 'SELECT * FROM tabelle WHERE name = ' + QuotedStr ('blubb');
  Query1.Open;
end;
Sprich: Bei einem Stringvergleich möchte die Datenbank das der String in Hochkommas steht. Ein noch besseres Beispiel sind Datumsabfragen:

Delphi-Quellcode:
begin
  Query1.Close;
  Query1.SQL.Text := 'SELECT * FROM tabelle WHERE datum = ' + DateToStr (now);
  Query1.Open;
end;
Wenn Du das so machst bekommst Du aller Warscheinlichkeit einen Fehler
Auf den meisten Rechnern ist noch die alte Datumsanzeige eingestellt. (TT.MM.JJJJ = 01.07.2004) Der mySQL-Server möchte das Datum aber in diesem Format: "JJJJ-MM-TT = 2004-07-01". Jetzt hast Du natürlich die Möglichkeit das Datum immer entsprechend zu Formatieren.

Delphi-Quellcode:
begin
  Query1.Close;
  Query1.SQL.Text := 'SELECT * FROM tabelle WHERE datum = ' + FormatDateTime ('yyyy-mm-dd',now);
  Query1.Open;
end;
Bei der Verwendung von Parametern musst Du dich darum nicht kümmern.
Delphi-Quellcode:
begin
  Query1.Close;
  Query1.SQL.Text := 'SELECT * FROM tabelle WHERE datum = :mydatum';
  Query1.ParamCheck := True;
  Query1.Params.ParamByName('myDatum').AsDate := now;
  Query1.Open;
end;
Soviel zu den Parameter.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Kruemel2oo2

Registriert seit: 23. Jun 2004
65 Beiträge
 
#20

Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be

  Alt 1. Jul 2004, 13:54
hmm alles klar nun bin ich wieda nen bischen schlauer aba ein ist mir noch net klar wo geb ich jetzt meine variablen an? also die eingelesenen damit er die von den übernimmt? die muss ich ja denn auch zu diesen Datumswert machen damit er das richtig erfasst. Aba wo soll das hin ?
Alle Tippfehler dienen nur zur Belustigung und wurden mit voller Absicht gesetzt.


:-:-: [ich bin ein DAU ]:-:-:
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 01:40 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