![]() |
Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
Zitat:
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 :stupid: |
Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
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:
also das ist alles und funzen tut das auch aba nur ohne dem bereich also between.
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 = 'alle' then 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; PS: sakura die Katze ist goil :D |
Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
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? |
Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
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 |
Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
Zitat:
...:cat:... |
Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
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 :D. ist aba nen scheiß fehler :( |
Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
Zitat:
ich glaube ich habe jetzt die "optimal" Lösung gefunden:
Delphi-Quellcode:
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.
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; |
Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
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! |
Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
Zitat:
Zitat:
Zitat:
Parameter in einer SQL-Abfrage kannst Du dir wie "platzhalter" vorstellen.
SQL-Code:
param1 ist jetzt mein Parameter (Platzhalter). Diesem muss ich jetzt noch einen Wert zuweisen. Das passiert mit:
SELECT * FROM tabelle WHERE name = :param1
Delphi-Quellcode:
Vorher sage ich meinem Query mit ParamCheck := True; das es die Parameter auch bitte auswerten soll.
begin
Query1.Params.ParamByName ('param1').AsString := 'blubb'; end; 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:
Sprich: Bei einem Stringvergleich möchte die Datenbank das der String in Hochkommas steht. Ein noch besseres Beispiel sind Datumsabfragen:
begin
Query1.Close; Query1.SQL.Text := 'SELECT * FROM tabelle WHERE name = ' + QuotedStr ('blubb'); Query1.Open; end;
Delphi-Quellcode:
Wenn Du das so machst bekommst Du aller Warscheinlichkeit einen Fehler ;-)
begin
Query1.Close; Query1.SQL.Text := 'SELECT * FROM tabelle WHERE datum = ' + DateToStr (now); Query1.Open; end; 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:
Bei der Verwendung von Parametern musst Du dich darum nicht kümmern.
begin
Query1.Close; Query1.SQL.Text := 'SELECT * FROM tabelle WHERE datum = ' + FormatDateTime ('yyyy-mm-dd',now); Query1.Open; end;
Delphi-Quellcode:
Soviel zu den Parameter.
begin
Query1.Close; Query1.SQL.Text := 'SELECT * FROM tabelle WHERE datum = :mydatum'; Query1.ParamCheck := True; Query1.Params.ParamByName('myDatum').AsDate := now; Query1.Open; end; |
Re: SQL Befehl zum Ausgeben von daten in einen bestimmten Be
hmm alles klar nun bin ich wieda nen bischen schlauer :D 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 Zeitangaben in WEZ +1. Es ist jetzt 10:31 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 by Thomas Breitkreuz