AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Ein Suchbegriff in mehreren Feldern finden
Thema durchsuchen
Ansicht
Themen-Optionen

Ein Suchbegriff in mehreren Feldern finden

Ein Thema von Tyler · begonnen am 13. Okt 2003 · letzter Beitrag vom 14. Okt 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#1

Ein Suchbegriff in mehreren Feldern finden

  Alt 13. Okt 2003, 11:04
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
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Ein Suchbegriff in mehreren Feldern finden

  Alt 13. Okt 2003, 12:23
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:

Table1.Locate('NAME;AREA', VarArrayOf(['House Cat', 'New Orleans']), [loPartialKey]);
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#3

Re: Ein Suchbegriff in mehreren Feldern finden

  Alt 13. Okt 2003, 13:37
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
  Mit Zitat antworten Zitat
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Ein Suchbegriff in mehreren Feldern finden

  Alt 13. Okt 2003, 13:54
Zitat von APP:
aber bei Locate würde ich vermuten, dass die
Felder Schlüsselfelder und vom gleichen Typ sein müssen.
Nein müssen sie nicht.
Zitat:
ich brauch aber eine ODER-VErknüpfung
Du erhälst ja eine Rückgabe über gefunden bzw. nicht gefunden. Dann machs doch mal so:
Delphi-Quellcode:
if (Table.Locate('feld1', VarArrayOf([Suchstring]), [loPartialKey])) or
   (Table.Locate('feld2', VarArrayOf([Suchstring]), [loPartialKey]))then
   begin
   ...
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Ein Suchbegriff in mehreren Feldern finden

  Alt 13. Okt 2003, 13:55
Hallo Tyler,

Zitat:
ich brauch aber eine ODER-VErknüpfung...
davon war aber bei Deiner 1. Fragestellung nie die Rede!

IMHO würde ich meinen, dass Locate nur dann funkt, wenn alle Kriterien erfüllt sind
Zitat:
OH: Locate returns true if a record is found that matches the specified criteria and that record is now active
und dann nur einen Datensatz zurückliefert.

Alternativ könntest Du ja mit "Filter" arbeiten, da bekommst Du
Datenmengen zurück.
Suche mal nach Hier im Forum suchenFilter Datenbank hier im Forum.

P.s. Warum wehrst Du Dich so gegen SQL?
Damit hättest Du alle Möglichkeiten
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Ein Suchbegriff in mehreren Feldern finden

  Alt 13. Okt 2003, 13:58
Hallo Memo,
Zitat von Memo:
Delphi-Quellcode:
if (Table.Locate('feld1', VarArrayOf([Suchstring]), [loPartialKey])) or
   (Table.Locate('feld2', VarArrayOf([Suchstring]), [loPartialKey]))then
   begin
   ...
Damit bekommt er nur den ersten gefundenen Datensatz zurück (z.B. von Feld1),
auch wenn beide Locate-Kriterien erfüllt sind.
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Ein Suchbegriff in mehreren Feldern finden

  Alt 13. Okt 2003, 14:27
Hallo App,
Zitat von APP:
Damit bekommt er nur den ersten gefundenen Datensatz zurück (z.B. von Feld1),
auch wenn beide Locate-Kriterien erfüllt sind.
Oder nur eine. Was hast du sonst erwartet? Er wollte es doch genauso haben, oder hab ich was überlesen? Ebend "or".
Zitat:
P.s. Warum wehrst Du Dich so gegen SQL?
Damit hättest Du alle Möglichkeiten
IMHO, locate in dem Fall auch reicht!?
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)?
  Mit Zitat antworten Zitat
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#8

QLRe: Ein Suchbegriff in mehreren Feldern finden

  Alt 13. Okt 2003, 14:55
Aaaalso, erstmal vielen Dank für eure Bemühungen:

Warum kein SQL?

ICh hab das schon öfter mal beschrieben, u.a. gerade erst hier:
http://www.delphipraxis.net/internal...ct.php?t=11346

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:
Du erhälst ja eine Rückgabe über gefunden bzw. nicht gefunden.
Leider nicht, suche ich nur in einem DB-Feld, was ja soweit gut funktioniert, springt er eben direkt zum Datensatz... aber egal, soll nicht zum Gegenstand einer Diskussion werden

Zitat:
if (Table.Locate('feld1', VarArrayOf([Suchstring]), [loPartialKey])) or
(Table.Locate('feld2', VarArrayOf([Suchstring]), [loPartialKey]))then
begin
Das bringt mich ja leider nicht weiter, weil, mal als Beispiel:
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
  Mit Zitat antworten Zitat
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Ein Suchbegriff in mehreren Feldern finden

  Alt 13. Okt 2003, 15:29
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;
  Mit Zitat antworten Zitat
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#10

Re: Ein Suchbegriff in mehreren Feldern finden

  Alt 13. Okt 2003, 15:50
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:21 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