![]() |
Ein Suchbegriff in mehreren Feldern finden
Hello Again :)
folgendes: Table.Locate('feld1', Suchstring, [loPartialKey]); findet ja im Feld1 den Suchstring auch wenn er nur ein Teil des Feldinhalts darstellt, wie jedoch finde ich meinen Suchstring in mehr als einem Feld? Theoretisch ja so (laut Delphi-Hilfe): Table.Locate('feld1;feld2', Suchstring, [loPartialKey]); Das führt aber zu folgendem Fehler: ... raise exception class EVariantInvalidArgError with message "Invalid Argument" ... Hm, gut, hab ich es also mal so probiert (streng nach Delphi-Hilfe): Table.Locate('feld1;feld2', VarArrayOf([Suchstring, Suchstring]), [loPartialKey]); Passiert natürlich garnichts... logisch... Meine Frage also nun: Wie lokalisiere ich einen Suchbegriff in mehreren Feldern? vielen Dank schonmal im Vorraus mfG |
Re: Ein Suchbegriff in mehreren Feldern finden
Hallo,
so auf die Schnelle würde ich SQL empfehlen, aber bei Locate würde ich vermuten, dass die Felder Schlüsselfelder und vom gleichen Typ sein müssen. Gib uns ein paar Infos zur DB, den Feldtypen und dem Inhalt. Nach kurzem Test mit DBdemos kommt doch noch was:
Delphi-Quellcode:
Table1.Locate('NAME;AREA', VarArrayOf(['House Cat', 'New Orleans']), [loPartialKey]);
|
Re: Ein Suchbegriff in mehreren Feldern finden
also zur Datenbank:
Ich benutz das alte DBaseIII+ Format, bei den beiden Feldern handelt es sich einmal um ein Textfeld und einmal um ein Integerfeld, ich hab´s auch schon mit 2 gleichen Feldern versucht, führt zur gleichen Fehlermeldung wenn ich nur einen Suchstring angebe. Die Zeile von dir hab ich ja wie gesagt schon probiert, führt zwar zu keiner Fehlermeldung, ergibt aber auch kein Suchergebnis... ich denk mal wenn ich ein VarArrayOf angebe, müssen beide Suchbegriffe gleichzeitig vorkommen (UND-Verknüpft), ich brauch aber eine ODER-VErknüpfung... ... und SQL möcht ich unter gar keinen Umständen benutzen... wirklich :) danke erstma mfG |
Re: Ein Suchbegriff in mehreren Feldern finden
Zitat:
Zitat:
Delphi-Quellcode:
if (Table.Locate('feld1', VarArrayOf([Suchstring]), [loPartialKey])) or
(Table.Locate('feld2', VarArrayOf([Suchstring]), [loPartialKey]))then begin ... |
Re: Ein Suchbegriff in mehreren Feldern finden
Hallo Tyler,
Zitat:
IMHO würde ich meinen, dass Locate nur dann funkt, wenn alle Kriterien erfüllt sind Zitat:
Alternativ könntest Du ja mit "Filter" arbeiten, da bekommst Du Datenmengen zurück. Suche mal nach ![]() P.s. Warum wehrst Du Dich so gegen SQL? :gruebel: Damit hättest Du alle Möglichkeiten :mrgreen: |
Re: Ein Suchbegriff in mehreren Feldern finden
Hallo Memo,
Zitat:
auch wenn beide Locate-Kriterien erfüllt sind. |
Re: Ein Suchbegriff in mehreren Feldern finden
Hallo App,
Zitat:
Zitat:
Und, korrigier mich rühig, aber ich lese nichts über mehrere Datensätze die zurückgegeben werden sollen. Also wozu braucht er jetzt den Filter(bezogen auf die Fragestellung)? |
QLRe: Ein Suchbegriff in mehreren Feldern finden
Aaaalso, erstmal vielen Dank für eure Bemühungen:
Warum kein SQL? ICh hab das schon öfter mal beschrieben, u.a. gerade erst hier: ![]() Das hat wirklich nichts mit Ignoranz zu tun, ich kann eine gefilterte Datenmenge aus SQL hier einfach nicht gebrauchen, siehe eben meine Erklärung im o.g. Thread ;) Zitat:
Zitat:
Der gesuchte Datensatz befindet sich in feld1 an 10. Stelle und in feld2 an 5. Stelle, mit der Abfrage oben würde ich ja jetzt auf den Datensatz in 10. Stelle springen, und den viel früher verfübaren Datensatz in feld2 völlig ausser Acht lassen und somit vllt sogar vergessen.... nicht sehr praktisch :) Achja, und ich brauch schon einen Datensatz der zurückgegeben wird, und zwar möchte ich, wie man es von der allgemeinen Suchfunktion (Strg+F) her kennt, das der Zeiger auf diesen Datensatz springt, ein Filter hilft hier, wie schon erwähnt, nicht weiter, weil dann kann ich ja auch SQL benutzen ;) mfG und Danke soweit :) |
Re: Ein Suchbegriff in mehreren Feldern finden
Also machen wir noch einen Versuch:
Delphi-Quellcode:
var x,y : Integer;
begin if Table.Locate('feld1', 'Suchstring', [loPartialKey]) then x := Table.RecNo; if Table.Locate('feld2', 'Suchstring', [loPartialKey]))then y := Table.Recno; if (x=0) and (y = 0) then ShowMessage('nix gefunden') else begin if (y < x) and (y<>0) then Table.RecNo := y else if (x < y) and (x <> 0) then Table.RecNo := x; end; |
Re: Ein Suchbegriff in mehreren Feldern finden
hmm.. verdammt, das klingt sehr einfach, ich hoffe jetzt kommt nicht der Gedanke auf, ich war nur zu faul n Algorithmus zu suchen... ich dachte es gibt dafür ne strenge Befehlsdefinition.. nagut, also vielen Dank für den Code memo :)
mfG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 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