Thema: Delphi Abfrage mit Daumswechsel

Einzelnen Beitrag anzeigen

Benutzerbild von Sharky
Sharky

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

Re: Abfrage mit Daumswechsel

  Alt 21. Mai 2004, 09:43
Hai Celinachen *gg*,

ich habe das ganze mal so gemacht. Ich weiss das man es auch noch vereinfachen kann. Aber ich denke so ist die "Logik" besser zu erkennen?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  sod: TTime; // Start of day
  sop: TTime; // Start of production
  datum: TDate; // Datum des Servers
  zeit: TTime; // Zeit des Servers
  DayOffsetStart: Integer; // 0 = heute; -1 = Gestern
  DayOffsetEnde: Integer; // 0 = heute; 1 = Morgen
  VonDatumZeit: TDateTime; // Abfrage start
  BisDatumZeit: TDateTime; // Abfrage ende
begin
  sod := EncodeTime(0, 0, 0, 0); // 00:00:00 // Neuer Tag neues Glück
  sop := EncodeTime(19, 0, 0, 0); // 19:00:00 // Die Arbeit beginnt
  dbMain.HostName := Form2.Hostname.Text; //Server
  dbMain.User := Form2.User.Text; //Benutzername
  dbMain.Password := Form2.Password.Text; //Passwort
  dbMain.Database := Form2.Datenbank.Text; //Name der Datenbank
  dbMain.Connected := True; //Verbindung herstellen
  Screen.Cursor := crHourGlass;
  try
    with qrMain do // Ersteinmal Datum und Zeit vom Server holen.
    begin
      Close;
      SQL.Text := 'SELECT CURDATE() AS datum, CURTIME() as zeit';
      Open;
      datum := FieldByName('datum').AsDateTime;
      zeit := FieldByName('zeit').AsDateTime;
      Close;
    end;
    // Jetzt prüfen welche Zeiträume berücksichtigt werden müssen.
    if (zeit >= sod) and (zeit < sop) then // Es ist zwichen 00:00:00 und 19:00:00
    begin
      DayOffsetStart := -1; // Abfrage beginnt gestern
      DayOffsetEnde := 0; // Abfrage endet heute
    end
    else //Es ist zwichen 19:00:00 und 23:59:59
    begin
      DayOffsetStart := 0; // Abfrage beginnt Heute
      DayOffsetEnde := 1; // Abfrage endet Morgen
    end;
    // Start- und Endzeitpunkte berechnen
    VonDatumZeit := datum + sop + DayOffsetStart;
    BisDatumZeit := datum + sop + DayOffsetEnde;
    with qrMain do // Und los geht es
    begin
      Close;
      SQL.Text :=
       'SELECT COUNT(*) AS anzahl '+#10+
       'FROM table_ordertracking '+#10+
       'WHERE (order_type=:order_type)'+#10+
       'AND (datum > :von) AND (datum <= :bis)';
      ParamByName('order_type').AsString := 'FT';
      ParamByName('von').AsDateTime := VonDatumZeit;
      ParamByName('bis').AsDateTime := BisDatumZeit;
      Open;
      anzahl := FieldByName ('anzahl').AsInteger;
      DFCount.Text:= IntToStr(anzahl);
      qrmain.Close;
  finally
    Screen.Cursor := crdefault;
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat