SetRange

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
argos
Beiträge: 8
Registriert: Mi 20. Mai 2009, 17:21

SetRange

Beitrag von argos »

Code: Alles auswählen

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
try
 if Button = btNext then fDatum := IncYear(fDatum,1);
 if Button = btPrev then fDatum := IncYear(fDatum,-1);
finally
ZeigeJahr;
end;
end;
 
procedure TForm1.ZeigeJahr;
begin
try
with JahrTable do begin
 Open;
 IndexName := 'DATUM';
 CancelRange;
 DisableControls;
 SetRange(StartOfTheYear(FDatum),EndOfTheYear(FDatum));
end; // with
finally
 JahrTable.EnableControls;
 StaticText5.Caption := IntToStr(Yearof(FDatum));
end;
end;

Leider funktioniert das nicht. Die Daten werden zwar ALLE angezeigt aber nicht NUR das ausgewählte Jahr.
Der Code ist oben und läuft unter Delphi7 einwandfrei.(plus den [] natürlich.
Wenn Ihr mir helfen könnt wärer das super.
argos
Zuletzt geändert von argos am Do 1. Jul 2010, 15:41, insgesamt 1-mal geändert.

u-boot
Beiträge: 308
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: SetRange

Beitrag von u-boot »

Bitte Beitrag mittels Combobox 'Highlighter' formatieren und damit besser lesbar machen.
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

argos
Beiträge: 8
Registriert: Mi 20. Mai 2009, 17:21

Re: SetRange

Beitrag von argos »

habe es anders gelöst.

Code: Alles auswählen

accept := YearOf(Dataset['Datum']) =  Yearof(FDatum);
in OnFilterRecord
Danke
Argos
Obwohl ich schon gerne gewusst hätte wie es mit SetRange funkioniert.

shokwave
Beiträge: 475
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: SetRange

Beitrag von shokwave »

Hallo,

bei mir geht es. - Reicht dir das als Antwort?

Wenn nicht beachte bitte, dass die Leute hier im Forum dein System und dein Programm nicht kennen können und deshalb ein bisschen mehr Informationen brauchen als "Es geht nicht". Dazu gehören immer das Betriebssystem, Lazarus- und FPC-Version (kannst du in deinem Profil hinterlegen). Aber auch was du schon probiert hast, um es selbst zu lösen. Und in deinem Fall von welchem Typ die Objekte sind die du benutzt (JahrTable) und was die selbst geschriebenen Funktionen (StartOfTheYear, EndofTheYear) machen.

Aber nun zu Problem:
Ich hab mit Tdbf eine Tabelle mit einem ftString-Feld und Index drauf erstellt und wahllos ein paar Datensätze erstellt. Anschließendes dbf1.SetRange('a', 'l', true); funktioniert.

Mein Tipp: Schau dir erst mal an wie deine Datensätze aussehen und was deine Funktionen zurückgeben.
mfg Ingo

argos
Beiträge: 8
Registriert: Mi 20. Mai 2009, 17:21

Re: SetRange

Beitrag von argos »

Hallo
danke für die Antwort.
StartOf theYear(Date) gibt den Jahresanfangswert von einer TDateTimeVar zurück. zB.1.1.2010
EndOftheYear(Date) = dann 31.12.2010 und YearOf(Date) = zB 2010
Das sind Datumsfunktionen von Lazarus.
JahrTable = TDBf.
Mein System Windows 7 64 Bit. LazVers. lazarus-0.9.28.2-fpc-2.2.4-win64.

Argos

Antworten