AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Konzeptfrage: Daten "frei" selektierbar gestalten
Thema durchsuchen
Ansicht
Themen-Optionen

Konzeptfrage: Daten "frei" selektierbar gestalten

Ein Thema von juergen · begonnen am 15. Dez 2010 · letzter Beitrag vom 19. Dez 2010
Antwort Antwort
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#1

Konzeptfrage: Daten "frei" selektierbar gestalten

  Alt 15. Dez 2010, 20:32
Hallo zusammen,

ich benötige Denkansätze von den Profis, da ich in diesem Bereich noch nichts gemacht habe.

Aufgabenstellung:
Aus einer Datenbank sollen Kundendaten "frei" selektierbar gestaltet werden.
Das Ganze wird über SQL wohl nicht gehen (bzw. wäre für mich wohl zu schwer), daher mein momentaner Plan, die Daten in eine "Haupt-Listview" einzulesen.
Pro Kunde gibt es dann ca. 15 Eigenschaften. Das wären weitere Spalten in der Haupt-Listview (Branche, Kundenzufriedenheit, Mitarbeiterstatus uvm.).
Oberhalb der Listview plane ich pro Spalte eine "kleine" Listview. In dieser Listview kann über Checkboxen eine Mehrfachauswahl vorgenommen werden.
Letztendlich gehe ich dann mit 15 Schleifendurchläufen durch die Hauptview, wobei dann die Datensätze gelöscht werden, welche nicht ausgewählt waren.
Ich hoffe ich konnte es halbwegs verständlich darstellen...

Jetzt meine Fragen:
1. Ist dieses Konzept falsch, bzw. was könnt ihr mir alterantiv empfehlen?
2. Welche Komponente(n) könnten mir hier weiter helfen (Tempo, Zeitersparnis)?

Die Datenmenge bewegt sich zw. 3.000 - 15.000 Datensätzen.

Mit diesem Konzept werden sehr viele Stringvergleiche ausgeführt. Ist die Listview hier überhaupt geeignet?
Es kann ja sein, dass in einer von den 15 "Eigenschaftsspalte" 50 Eigenschaften angehakt wurden. Jetzt müssten alle Datensätze in dieser Spalte durchsucht werden ob eine der 50 Eigenschaften vorhanden ist, wenn nein, dann direkt den Datensatz in der Haupt-Listview löschen. Somit wird die Datenmenge immer kleiner. Trotzdem ist der Aufwand der Stringvergleiche enorm.

Da ich im Moment das Gefühl habe mich hier etwas verrannt zu haben, wäre ich für Ratschläge sehr dankbar!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Konzeptfrage: Daten "frei" selektierbar gestalten

  Alt 15. Dez 2010, 21:52
klingt eindeutig nach einer Anforderung für SQL
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
hans ditter

Registriert seit: 25. Jun 2010
Ort: Niedersachsen
263 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Konzeptfrage: Daten "frei" selektierbar gestalten

  Alt 15. Dez 2010, 21:57
da kann ich Bummi nur zustimmen. Also so, wie du das beschreibst, für 3.000-15.000 Datensätze einen Vergleich von bis zu 50 (?) Eigenschaften abzufragen... das halte ich für eine schlechte Anwendung.

Im Prinzip ist das mit SQL gar nicht so schwierig (gibt meine ich auch einige gute Tuts):

(UNGETESTET!!)

Deine Eigenschaften, gibts du bei der SQL-Abfrage einfach unter dem WHERE Teil mit ein:
Code:
... WHERE Eigenschaft1 AND Eigenschaft2 AND Eigenschaft3 AND . . . AND EigenschaftN
lg, hans ditter
RudiRüsselSeineSocketKomponente - SirRufo (--> Chat mit PM)

Delphi Programming is the best one!
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#4

AW: Konzeptfrage: Daten "frei" selektierbar gestalten

  Alt 15. Dez 2010, 22:26
Man sollte über die Anforderung nachdenken. Werden die Daten weiterverarbeitet bzw. exportiert?
Wenn nicht: ein Mensch schaut sich nicht wirklich 3000 Datensätze an.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Konzeptfrage: Daten "frei" selektierbar gestalten

  Alt 16. Dez 2010, 06:57
Guten Morgen!

@generic,
ja es findet nach der Selektion ein Export statt (Serien-E-mails). Möchtest du mich in Richtung VT "stupsen"? Bis jetzt hatte ichn damit noch nicht gearbeitet.

@by Bummi & hans ditter,
ich schätze mal, dass in der Where-Bedingung für die 15 Spalten dann bis zu 90 Or-Abfragen erscheinen könnten. Nur eine bestimmte Spalte kann bis zu den erwähnten 50 Eigenschaften haben. Die restlichen 14 Spalten haben nicht soviel Auswahlmöglichkeiten.
Gerade Or-Verknüpfungen: ich kann das nicht abschätzen, wie wäre hierbei das Zeitverhalten?

Danke schon mal und einen schönen Tag!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Konzeptfrage: Daten "frei" selektierbar gestalten

  Alt 16. Dez 2010, 08:13
Du hättest Sql's die ungefähr so aussehen würden
Code:
Select * from A
where
(
Beruf in (1,5,6,7,8)
)
AND -- oder OR je nachdem was Du brauchst
(
Qualifiketion in (3,6,8,9)
)
AND
(
ORT in ('Augsburg')
)
Der Zusammenbau könnte so aussehen:
PSEUEDOCODE
Delphi-Quellcode:

Prozedure GetIntegerListe(lb:TChecklistBox;Feld:String):String;
var
 i:Integer;
begin
  Result :='';
  If lb.CheckedCount > 0 then//gibst so nicht
  begin
  For i := 0 to lb.Count - 1 do
  begin
   if lb.Checked then Result := Result +IntToStr(Integer(lb.Items.Objects[i])) +',';
  end;
  Result := #13#10'and ' + FELD + ' in (' + Copy(Result,1,length(Result) - 1) +')'
  end;
  
end;

SQL := SQL + GetIntegerListe(BerufeCheckListBox,'Beruf');
SQL := SQL + GetQuali(QualiCheckListBox,'Qualifikation');
Ich wette dass das Zeitverhalten, unabhängig von der Aufwandsminimierung bei geschätztenen 1:100 für den SQL spricht.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi (16. Dez 2010 um 08:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Konzeptfrage: Daten "frei" selektierbar gestalten

  Alt 16. Dez 2010, 12:11
Also Du solltest eine "richtige" DB mit SQL nutzen. Soviel ist glaube ich klar.
Und dann solltest Du Dir ein paar Gedanken über Deine Datenstrukturen machen.
Ich habe das Gefühl Du arbeitest mit einem elektronischen Zettelkasten.

Und was die vielen "oder" angeht, da gibt Dir SQL z.B. die Möglichkeit des UNION um mehrere Abfragen miteinander zu verbinden.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Konzeptfrage: Daten "frei" selektierbar gestalten

  Alt 16. Dez 2010, 12:52
Gib mal noch ein paar Infos, wie die Daten aussehen, wo sie herkommen (Format), wie lange sie aufbewahrt werden sollen und was Du wie oft daraus ermitteln willst...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Konzeptfrage: Daten "frei" selektierbar gestalten

  Alt 19. Dez 2010, 18:22
Hallo,
ich komme leider erst heute zum Antworten.
Danke an Alle für die Unterstützung!

@Bummi,
wenn du schreibst, dass das Zeitverhalten (und Aufwandsminimierung) für SQL spricht, dann ist es die Antwort die ich gesucht habe!
Ich habe eben keine Erfahrung in diesem Bereich.
Deinen Ansatz (Pseudo-Code) habe ich verstanden und habe mich damit schon angefreundet. Vielen Dank dafür!

Die Daten sind in einer SQL-DB gespeichert, Einfluss auf die Tabellenstruktur habe ich allerdings nicht.
Ich werde mich etwas mit SQL beschäftigen müssen.

Noch einen schönen 4.Advent!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:15 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