Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Datenmenge filtern (https://www.delphipraxis.net/172761-datenmenge-filtern.html)

Desperado 21. Jan 2013 16:30

Datenmenge filtern
 
Hallo Zusammen,
ich muss im Rahmen meines Studiums eine Abschlussarbeit in Delphi schreiben. Thema ist die Erstellung einer Musik- und Videosammlung. Nun verzweifel ich gerade an einer Stelle und hoffe, dass man mir hier weiterhelfen kann.

Zu den einzelnen Stücken wird jeweils: Interpret, Titel, Jahr und Art(Musik oder Video) erfasst. Es soll möglich sein zwischen den einzelnen Datensätzen zu navigieren (Erster, Nächster, Vorheriger und Letzter). Das ist soweit auch kein Problem. Jetzt soll ich jedoch eine zusätzliche Auswahl ermöglichen, sodass nur Videos, nur Musik oder Alles angezeigt wird. Ich habe dafür, wie bereits für die "Art" eine RadioGroup erstellt. Wie schaffe ich es nun, dass beispielsweise bei Auswahl "nur Videos", wenn ich auf meinen Button "erster Datensatz" klicke, das erste Video aus den gesamten Datensätzen angezeigt wird. Mit Schleifen bin ich leider bisher nicht zu einem Erfolg gekommen.

Delphi-Laie 21. Jan 2013 16:37

AW: Hilfe!
 
Auch hier: Mit vorenthaltenem Quelltext / Projekt wird die Hilfe für Dich bestenfalls zum Blick in eine Glaskugel.

Desperado 21. Jan 2013 16:47

AW: Hilfe!
 
Code:
procedure TForm1.btnErsterClick(Sender: TObject);
begin
if radiogroup2.itemindex=2 then
begin
  btnErster.Visible:=true;
  btnNaechster.Visible:=true;
  btnVorheriger.Visible:=true;
  btnLetzter.Visible:=true;
  lblsongnummer.Caption:='1';
with aSammlung[1] do
begin
    edtInterpret.Text:=Interpret;
    edtTitel.Text:=Titel;
    edtAlbum.Text:=Album;
    begin
      case Art of
      Musik: RadioGroup1.ItemIndex:=0;
      Video: RadioGroup1.ItemIndex:=1;
    end; //case
    cBox1.Text:=Genre;
    edtJahr.Text:=IntToStr (Jahr);
    edtDauerStunden.Text:=IntToStr (DauerStunden);
    edtDauerMinuten.Text:=IntToStr (DauerMinuten);
    edtDauerSekunden.Text:=IntToStr (DauerSekunden);
    edtSpeicherort.text:=Speicherort;

end;
nIndex:=1
end; //with aSammlung[1] do
end;
end;
Ich will jetzt, dass bei RadioGroup2=0 der erste Datensatz angezeigt wird, bei dem RadioGroup1=0 ist und bei RadioGroup2=1 der erste Datensatz, bei dem RadioGroup1=1 ist

Daniel 21. Jan 2013 16:48

AW: Hilfe!
 
Hallo und willkommen in der DP. :hi:
Sei doch bitte grad' so gut und gib Deinem Thema einen aussagekräftigen Titel.
Danke Dir. :-)

p80286 21. Jan 2013 18:02

AW: Hilfe!
 
Zitat:

Zitat von Desperado (Beitrag 1199996)
Code:
procedure TForm1.btnErsterClick(Sender: TObject);
begin
if radiogroup2.itemindex=2 then
begin
  btnErster.Visible:=true;
...
end;
Ich will jetzt, dass bei RadioGroup2=0 der erste Datensatz angezeigt wird, bei dem RadioGroup1=0 ist und bei RadioGroup2=1 der erste Datensatz, bei dem RadioGroup1=1 ist

Auf den ersten Blick fällt mir hierzu nur "desperate" ein.

Für einen Click auf einen Button sollter dieser "enabled" und "Visible" sein. Somit ist
Delphi-Quellcode:
btnErster.Visible:=true;
eigentlich überflüssig.

"Radiogroup" ist eine Komponente der Oberfläche und stellt in den allermeisten Fällen, keine Eigenschaft eines Datensatzes dar.

Vielleicht wäre es sinnvoll, wenn Du noch einmal in Dich gehst, und Deine Absichten noch einmal neu formulierst.

Gruß
K-H

P.S.
"Hilfe" ist als aussagekräftiger Titel kaum zu überbieten.

Bummi 21. Jan 2013 20:18

AW: Hilfe!
 
crosspost : http://www.entwickler-ecke.de/viewtopic.php?t=110996

sx2008 21. Jan 2013 20:38

AW: Hilfe!
 
Mal angenommen du hat ein Feld "MediaTyp", das angibt um welches Medium (Audio-CD, DVD, VHS, MP3,...) sich handelt.
Dann kannst du zur Laufzeit einen Filter setzen:
Delphi-Quellcode:
Tabelle1.Filter := 'MediaTyp="VHS"'; // Filter setzen
// oder auch so, falls der MediaTyp eine Zahl ist
Tabelle1.Filter := 'MediaTyp=3';     // 3 = VHS
Tabelle1.Filtered := True;           // und aktivieren
Man kann die Daten natürlich auch mit einer SQL-Where-Bedingung filtern, aber ich würde erst einmal die aller einfachste Lösung wählen.

Falls keine Dataset-Komponenten verwendet werden kann man den Filter leider nicht anwenden!

Delphi-Laie 21. Jan 2013 21:23

AW: Hilfe!
 
Zitat:

Zitat von Bummi (Beitrag 1200013)

Am anderen Orte allerdings mit aussagekräftigerem Thema. Daniels Wunsch wurde hier bis jetzt leider ignoriert.

Daniel 21. Jan 2013 22:13

AW: Datenmenge filtern
 
... Manche Dinge muss man selbst machen, wenn sie gut werden sollen. ;-) Ich habe den Titel eben angepasst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 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-2025 by Thomas Breitkreuz