![]() |
Suchfunktion in einer Datenbank
Hallo,
ich bin noch ziemlicher Delphi-Anfänger. Jetzt habe ich eine Wissensdatenbank programmiert, das funktioniert so weit. Jetzt will ich noch eine Suchfunktion programmieren, sodass man einen Begriff eingeben kann und es zeigt sich dann der dazu gefundene Datensatz. Der Quelltext zu dem Formular, in dem man die Datensätze eingibt und das sie dann auch anzeigen soll sieht wie folgt aus:
Code:
Von dort wird ein Fenster geöffnet in dem der Suchbegriff eingegeben werden kann in einem Editfeld.private { Private declarations } public { Public declarations } end; var BeschreibungForm: TBeschreibungForm; implementation uses Typ, Suchen; {$R *.dfm} procedure TBeschreibungForm.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; //Suchfunktion procedure TBeschreibungForm.BtSuchenClick(Sender: TObject); begin TSuchForm.Create(Self); {DBLookupComboBox1.Color :=clMaroon; DBLookupComboBox1.Font.Color := clWhite; DBMemoSymptom.Color :=clMaroon; DBMemoSymptom.Font.Color := clWhite; DBMemoBeschreibung.Color :=clMaroon; DBMemoBeschreibung.Font.Color := clWhite; } end; end. Jetzt wollte ich dort mit:
Code:
die Suchfunktion einfügen. Dies hab ich mir aus meinem Buch rausgesucht, aber irgendwie klappt das alles nicht. Außerdem soll ja auch der Text aus dem EditFeld in der Datenbank gesucht werden. Leider hilft mir mein Buch nicht sehr viel weiter.
TBeschreibungForm.TbNrBeschr.Locate('Name','V',[loPartialKey]);
Vielleicht kann mir hier jemand weiterhelfen. Vorab schon mal vielen Dank Gruß Gabi |
Bin mir zwar ned 100% sicher, da ich ned deinen kompletten quelltext kenne aber ich glaub damit es funktioniert muss das mit dem locate so lauten
Code:
Delphi Hilfe meint zu locate:
TBeschreibungForm.TbNrBeschr.Locate('FeldInDemGesuchtWerden Soll',EditMitSuchtext.text,[loPartialKey]);
function Locate(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean; override; Bei deiner Version hätte Delphi im datenbank Feld mit der Bezeichung "Name" nach allem gesucht was ein V enthält. MfG Blizzard |
Re: Suchfunktion in einer Datenbank
Hai gabi,
erst einmal Hallo. :party: In deinem Quellcode suchst Du, so wie ich das sehe immer nur nach "V". Du musst deiner Suchfunktion schon dein gesamten Suchstring übergeben. Ach ja: Mir welcher Datenbank arbeitest Du? |
Hallo Sharky,
erst einmal Danke für Deine Hilfe. Ich arbeite mit der Paradox-Datenbank. Ich habe das V eingesetzt gemäß meinem Beispiel aus dem Buch, weil es mir nicht gelungen ist den Text, den ich in dem EditFeld auf dem Formular SuchForm eingegeben habe, dort zu suchen. Ich will ja eigentlich keinen festen String suchen, sondern der Anwender soll einen Suchbegriff eingeben können. Gruß Gabi |
Suchfunktion Datenbank
Hallo Blizzard,
danke erst einmal für Deine Hilfe Habe die Zeile Quellcode entsprechend geändert in:
Code:
Jetzt beschwert sich aber der Compiler, dass loPartialKey nicht deklariert wäre. ICh dachte dass müßte ich nicht, weil es ein Parameter sei der zu locate gehört?
BeschreibungForm.TbNrBeschr.Locate('DBLookupComboBox1',EdSuchen.Text,[loPartialKey]);
MfG Gabi |
Hallo gabi,
herzlich willkommen bei uns im Delphi-Praxis Forum. Nun zu deinem Code: Zitat:
Delphi-Quellcode:
Der Parameter loPartialKey ist in dbTables deklariert. Falls diese Unit nicht in deiner USES Klausel steht, mußt du sie noch manuell einfügen.
BeschreibungForm.TbNrBeschr.Locate(DBLookupComboBox1.Text, EdSuchen.Text, [loPartialKey]);
|
Hi MrSpock,
vorab vielen Dank für Deine Hilfe und Deinen Willkommensgruß. Nun habe ich gemäß Deinem Tip meinen Code abgeändert, doch leider bekomme ich immer noch "nicht deklariert und es heißßt Incompatible Typ: TLocateOption an Integer. Unter uses ist aber DBTables eingetragen.
Code:
Leider weiß ich hier nicht weiter.
BeschreibungForm.TbNrBeschr.Locate(BeschreibungForm.DBLookupComboBox1.Text, EdSuchen.Text, [loPartialKey]);
Danke nochmals für Deine Hilfe Gruß Gabi :angle: |
Hallo Gabi,
das deutet darauf hin, dass loPartialKey hier falsch erkannt wird. Ich habe gerade noch einmal bei Delphi 7 nachgeschaut, da sind die TLocateOption in der Unit DB deklariert und nicht in dbTables. Daran dürfte es aber eigentlich nicht liegen. Hast du vielleicht selbst eine Variable loPartialKey als Integer deklariert? Diese würde die Sichtbarkeit von DB bzw dbTables überschreiben. |
Hallo MrSpock,
nein ich habe keine Variable loPartialKey deklariert. Gruß Gabi |
Hallo Gabi,
du könntest mir mal das Programm schicken (oder hier als Attachment anhängen), dann würde ich es mal genauer anschauen. Die Fehlermeldung deutet wie gesagt darauf hin, dass es ein Problem mit der Option gibt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 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 by Thomas Breitkreuz