Zitat von
EDatabaseError:
Zitat von
mkinzler:
Locate findet doch den Datensatz mit dem Kriterium, du mußt also nicht für jeden Datensatz in der Tabelle ein Locate ausführen.
Ich will eben auch ähnliche Datensätze. Da Locate auf PatialKey ist findet man auch wenn in der
DB Testartikel 5 ist und wenn man nach Testartikel sucht.
dann nimmt man ststt '=' 'like'
Zitat:
Zitat von
mkinzler:
Ich würde Artikelgruppe in eine eigene Tabelle auslagern.
Das wäre nicht so gut denn es kommen ja zu diesen drei Feldern noch einige dazu. (Es sind insgesammt 23) 23 Tabellen sin net so schön...
Du hast mich total falsch verstanden. Ich wollte ja aus diesem Grund(Vermeidung Redundanz) alles was sich auf die Artikelgruppe bezieht in eine eigene Tabelle auslagern, und in der Artikeltabelle nur die ID auf die Gruppe ablegen.
Tabelle Artikelgruppe
ID--------------------Gruppenname---------<weitere Felder zur Artikelgruppe>
1 A Artikelgruppe
2 B Artikelgruppe
Tabelle Artikel
Die Datenbank:
Position---------------Artikelname-------------------Artikelgruppe----und die anderen...
1----------------------Testartikel 1-----------------1
2----------------------Testartikel 2-----------------2
3----------------------Testartikel 3-----------------1
4----------------------kein Testarti-----------------1
Wenn später viele Datensätze in der Artikeldatenbank sind, würde ich die sehr Raten keine Table sondern eine
Query-Komponente zu nehnen. Da in einer TTable-Komponente immer alle datensätze enthalten sind, auch wenn diese gefiltert ist. (DS nur ausgebelndet).
Delphi-Quellcode:
Query.Sql.Text := '
select * from artikel a, artikelgruppe g where a.Artikelname like :artikel and g.id = a.Artikelgruppe and g.gruppenname = :artgrp';
Query.ParamByName('
artgrp').asString := '
A Artikelgruppe';
Query.ParamByName('
artikel').asString := '
%Test%';
Query.Open;