Autor Beitrag
Anuschka
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Windows XP Home
Delphi 5 Standard
BeitragVerfasst: Sa 27.11.04 20:39 
Hi

ich schon wieder.
ich habe in meiner Datenbank und auf meiner Oberfläche insgesamt 26 Felder. Ich möchte dem Benutzer die Möglichkeit geben in der Datenbank zu suchen. Er soll dabei die Möglichkeit haben alle Felder auszufüllen oder auch nur eins. Deas heisst ich gebe keine der 26 Felder vor.

Habt ihr eine Idee wie ich das am besten und am übersichtlichsten realisieren kann?
Die einfache Sache wäre das alles mit einer If Abfrage abzufangen und so weiter aber das ist ehrlich gesagt zuviel Quelltext. Ich hab schon an ein Array gedacht weiss aber nicht ob es damit geht und wie ich das umsetzen könnte. Wenn
einer von euch vielleicht eine Idee hat wäre das toll wenn er mir bescheid sagen könnte

lg anja
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: So 28.11.04 02:26 
Die Frage ist halt, wie man das ganze dynamisch am un-aufwendigsten darstellt. Folgender Denkanstoss hilft dir vielleicht.

Das Gröbste der Query steht ja immer fest:

ausblenden Quelltext
1:
SELECT * FROM database WHERE					


Daran ändert sich ja eigentlich nichts. Dann kommt die Definition der eigentlichen Suchkriterien

ausblenden Quelltext
1:
2:
3:
4:
5:
feld1 = wert1 
OR
feld2 = feld2
OR
feldn = feldn


Nun wären 2 ListBoxen angebracht. Einmal eine, in der die Felder der Tabelle dargestellt werden, und einmal die ListBox für die Felder, die durchsucht werden sollen.
Der User doppelklickt auf ein DB-Feld, das wird in unserer 2. Listbox angezeigt, und im Final durchsucht.

In einer kleinen Schleife, die abhängig von der Anzahl der 2. Listbox durchlaufen wird, füllen wir unser SQL-Statement. Strukturell sähe das ganze dann so aus:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Query.SQL.Text := 'SELECT * FROM dbase WHERE ' +
  listbox2.item(1) + ' LIKE ' + edit1.Text;

FOR i := 1 TO listbox2.Items.Count - 1 do
begin
  SQL.Query.Add ( ' OR ' + listbox2.item(i) + ' LIKE ' + edit1.text);
end;
Query.Open;


Wenn du jetzt magst, kannst du auch das OR noch durch eine Variable ersetzen, damit der Anwender die Möglichkeit zwischen AND und OR zu wählen. Ansonsten brauchst du das bloss an deine Bedürfnisse anpassen, noch die IF-Abfragen einbauen, um abzupassen, ob die Listbox überhaupt gefüllt ist, bzw. mehr als 2 Felder enthält. Und fertig ist das ganze. Hoffe das ist ungefähr das was du meinst :)

ki
Anuschka Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Windows XP Home
Delphi 5 Standard
BeitragVerfasst: Di 30.11.04 10:28 
Ja danke dass ist ungefähr dass was ich brauche. Hab es mir eben durchgelesen und ich denke damit komme ich hin.

Kannst du mir eventuell noch eine Frage beantworten? Das Suchergebnis soll in einem Feld mit Scrollbar erscheinen. WEnn der Benutzer auf einen Namen klickt dann soll dieser und dessen Details in den 26 Edit Feldern erscheinen. Gibt es da eine einfache Funktion für mit der ich das realisieren kann oder muss ich das alles per Hand zuweisen?

lg anja

P.S: Danke nochmal für deine ausführliche Hilfe
killavirus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49

Win 2000
D5 Prof, D7 Prof
BeitragVerfasst: Di 30.11.04 11:10 
Anuschka hat folgendes geschrieben:
Das Suchergebnis soll in einem Feld mit Scrollbar erscheinen. WEnn der Benutzer auf einen Namen klickt dann soll dieser und dessen Details in den 26 Edit Feldern erscheinen.


Hallo,

am besten du Zeigst das Ergebnis in einem DBGrid an. Und die 26 Felder sollen DBEditfelder sein, dann füllt er beim wechseln des Eintrages im Grid die Edits von alleine ...

Gruß Maik

_________________
I need a girl whose name doesn't end in .JPG
Anuschka Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Windows XP Home
Delphi 5 Standard
BeitragVerfasst: Di 30.11.04 11:15 
Danke für den Tipp, aber ich habe diese Komponenten leider nicht. Ich arbeite mit Delphi 5 Standard und da fehlen die mir leider.
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Mi 01.12.04 11:08 
hm... du hast nicht mal das DBGrid? Also die DBEdit-Felder kann man zur Not noch ersetzen, das ist nicht weiter umfangreich. Aber bei DBGrid wüsste ich jetzt nicht, wie man das umgeht. Am Besten wäre, du schaust mal ob du eine Gratis-DB-Kompo auftreiben kannst, die dir wenigstens eine Tabelle mitgibt. :)
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Mi 01.12.04 11:12 
zur not kann man sich ja auch mit einem stringgrid behelfen. ok, es ist zwar mühsam, aber besser als gar nichts. hansa hat auf diesem gebiet schon jede menge erfahrung sammeln können ;)

mfg, stefan