Entwickler-Ecke
Datenbanken - Suchen mit Locate
pmw - Mo 30.12.02 13:56
Titel: Suchen mit Locate
Hallo!
Ich möchte gerne alle Felder eine Datenbank nach einen bestimmten Schlüsselwort durch suchen. Leider bekomme ich immer com Compiler die Fehlermeldung, dass VarArrayOf ein undefinierter Wert sei. Wenn ich VarArrayOf einfach weglassen und nur "suchen.Text" hin schreibe, dann gibt es einen Laufzeitfehler.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Button1Click(Sender: TObject); var y,x: integer; begin
if Table1.Locate('Sänger;Titel;CD;Track;Bemerkung', VarArrayOf([suchen.Text]), [loCaseInsensitive,loPartialKey]) then ShowMessage('Datensatz gefunden.');
end; |
Viele Grüße
Martin Winandy
bis11 - Mo 30.12.02 14:22
Hi,
was für einen Typ Datenbank benutzt Du denn ?
pmw - Mo 30.12.02 15:10
Paradox 7
Udontknow - Mo 30.12.02 15:21
Hi!
Du hast höchstwahrscheinlich einfach vergessen, die Unit Variants in der Uses-Klausel zu deklarieren. In ihr ist die Funktion VarArrayOf implementiert. :wink:
Cu,
Udontknow
Udontknow - Mo 30.12.02 15:24
Wo ich mir gerade den Code anschaue:
Du musst für jedes Feld ein entsprechendes Element angeben, also:
Quelltext
1:
| VarArrayOf([SaengerText,TitelText,CDText,TrackText,BemerkungText]) |
Cu,
Udontknow
pmw - Mo 30.12.02 16:01
Hallo!
Der Compiler meldet aber imm noch die selbe Fehlermeldung:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| [Fehler] Unit1.pas(50): Undefinierter Bezeichner: 'VarArrayOf' [Fehler] Unit1.pas(50): Ordinaltyp erforderlich [Fehler] Unit1.pas(50): Inkompatible Typen: 'Integer' und 'TCaption' [Fehler] Unit1.pas(50): Inkompatible Typen: 'Integer' und 'TCaption' [Fehler] Unit1.pas(50): Inkompatible Typen: 'Integer' und 'TCaption' [Fehler] Unit1.pas(50): Inkompatible Typen: 'Integer' und 'TCaption' [Fehler] Unit1.pas(50): Inkompatible Typen: 'Integer' und 'TCaption' [Fataler Fehler] Archiver.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden |
Quelltext
1: 2:
| if Table1.Locate('Sänger;Titel;CD;Track;Bemerkung', VarArrayOf([suchen.Text,suchen.Text,suchen.Text,suchen.Text,suchen.Text]), [loCaseInsensitive,loPartialKey]) then ShowMessage('Datensatz gefunden.'); |
Udontknow - Mo 30.12.02 16:18
Die Unit "Variants" ist in der Uses-Klausel?
Wenn nicht sicher, bitte einmal die ganze Unit posten...
Cu,
Udontknow
pmw - Mo 30.12.02 16:24
| Zitat: |
| Die Unit "Variants" ist in der Uses-Klausel? |
Daran lag's!
Locate macht immer nur eine UND-Suche. Ich benötige aber eine ODER-Suche. Was muss ich ändern?
Udontknow - Mo 30.12.02 16:29
Mit Locate gehts nicht. An deiner Stelle würde ich eine Query nehmen und ein entsprechendes SQL-Statement zusammenbasteln.
Cu,
Udontknow
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!