Autor Beitrag
Hagaga
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mo 30.08.10 12:54 
Guten Tag

Stehe vor folgendem Problem:
Ich habe eine einfache Adressverwaltung, wo ich den einzelnen Adressen via einem DBMemo-Feld "Adressarten" zuweisen kann.
Bsp. Herr Meier ist Musiker, fährt Auto, isst gerne gut etc..., also tippe ich im Memofeld folgende Lines ein: "Musik", "Auto" und "Gourmet". Nun möchte ich z.B. mit einer Abfrage erreichen, dass jene DS im DBGrid erscheinen, welche im DBMemo-Feld die
Einträge "Musik" und "Gourmet" enthalten.
Gibt es eine Möglichkeit, ein Memofeld zu durchsuchen und fltern (TTable)...?

Für Tipps oder Codeschnipsel wäre ich sehr dankbar.
MfG Bruno
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 09.09.10 15:50 
Ein Memofeld kannst du nicht mit Datenbank-Werkzeugen durchsuchen. Ich würde daher die Datenbankstruktur ändern und eine Tabelle einfügen, welche alle benötigten Strings - Auto, Gourmet, Musik usw. - enthält. Dann fügst du eine dreispaltige Tabelle ein, die einfach nur Verknüpfungen der Adress-Tabelle mit den "Adress-Arten" aufnimmt: Spalte 1= Index, Spalte 2 = Adress-Index, Spalte 3 = Adress-Arten-Index. Diese Verknüpfungs-Tabelle kannst du dann mit einem einfachen Select-Befehl ansprechen:

select * from KnüpfTab where Adress_Index = 1 (Selektiert alle Verknüpfungen der Adresse mit dem Index 1)

oder

select * from KnüpfTab where Adress_Art_Index = 3 (selektiert alle Verknüpfungen mit der Adress-Art 3)
Critter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 328
Erhaltene Danke: 3

Windows 7
Delphi 7 Pro.
BeitragVerfasst: Do 09.09.10 18:02 
Hi,

ich muss user profile iconPerlsau zustimmen, das beste wird es sein, wenn du deine DB-Struktur überarbeitest, wenn es aber bei den Textfeld bleibt kann dir SQL mit dem Like-Operator helfen.

Eine Anfrage könnte so aussehen:
ausblenden SQL-Anweisung
1:
2:
3:
SELECT *
FROM Adressdaten
WHERE (TextFeld Like '%Musik%'Or (TextFeld Like '%Auto%')


wo du das Schlüsselwort "Gourmet" hernehmen willst ist mir schleierhaft.

Auf jeden Fall könnte das funktionieren, es ist aber ziemlich Igitt, weil Like Anfragen verständlicherweise recht Resourcen hungrig sind. Außerdem weden die user immer irgendetwas anders eingeben als du es erwartest.

Deshalb noch mal der hinweis: Besser du lässt die user eine Attribute List Pflegen, deren Einträge sie dann per Checkbox dem Adressdatensatz zuweisen können.

critter

_________________
Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)