AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Suchfunktion in einer Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

Suchfunktion in einer Datenbank

Ein Thema von gabi · begonnen am 2. Feb 2003 · letzter Beitrag vom 16. Feb 2003
Antwort Antwort
Seite 1 von 3  1 23      
gabi

Registriert seit: 2. Feb 2003
13 Beiträge
 
Delphi 6 Professional
 
#1

Suchfunktion in einer Datenbank

  Alt 2. Feb 2003, 15:16
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:


  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.
Von dort wird ein Fenster geöffnet in dem der Suchbegriff eingegeben werden kann in einem Editfeld.
Jetzt wollte ich dort mit:

Code:
TBeschreibungForm.TbNrBeschr.Locate('Name','V',[loPartialKey]);
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.

Vielleicht kann mir hier jemand weiterhelfen.

Vorab schon mal vielen Dank

Gruß
Gabi
  Mit Zitat antworten Zitat
Blizzard

Registriert seit: 4. Jan 2003
88 Beiträge
 
Delphi 6 Enterprise
 
#2
  Alt 2. Feb 2003, 15:35
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:
TBeschreibungForm.TbNrBeschr.Locate('FeldInDemGesuchtWerden Soll',EditMitSuchtext.text,[loPartialKey]);
Delphi Hilfe meint zu locate:
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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Suchfunktion in einer Datenbank

  Alt 2. Feb 2003, 16:15
Hai gabi,

erst einmal Hallo.

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?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
gabi

Registriert seit: 2. Feb 2003
13 Beiträge
 
Delphi 6 Professional
 
#4
  Alt 2. Feb 2003, 17:19
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
  Mit Zitat antworten Zitat
gabi

Registriert seit: 2. Feb 2003
13 Beiträge
 
Delphi 6 Professional
 
#5

Suchfunktion Datenbank

  Alt 2. Feb 2003, 17:40
Hallo Blizzard,

danke erst einmal für Deine Hilfe
Habe die Zeile Quellcode entsprechend geändert in:

Code:
BeschreibungForm.TbNrBeschr.Locate('DBLookupComboBox1',EdSuchen.Text,[loPartialKey]);
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?

MfG
Gabi
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#6
  Alt 3. Feb 2003, 07:08
Hallo gabi,

herzlich willkommen bei uns im Delphi-Praxis Forum.

Nun zu deinem Code:

Zitat:
Code:
BeschreibungForm.TbNrBeschr.Locate('DBLookupComboBox1',EdSuchen.Text,[loPartialKey]);
Wenn du DBLookupComboBox1 in '' einschließt, wird das Wort DBLookupComboBox1 als Feldname interpretiert, du willst aber wahrscheinlich nach dem Feld suchen, dessen Name in der ComboBox steht, deshalb mußt du folgendes schreiben:

BeschreibungForm.TbNrBeschr.Locate(DBLookupComboBox1.Text, EdSuchen.Text, [loPartialKey]); Der Parameter loPartialKey ist in dbTables deklariert. Falls diese Unit nicht in deiner USES Klausel steht, mußt du sie noch manuell einfügen.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
gabi

Registriert seit: 2. Feb 2003
13 Beiträge
 
Delphi 6 Professional
 
#7
  Alt 3. Feb 2003, 21:08
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:
BeschreibungForm.TbNrBeschr.Locate(BeschreibungForm.DBLookupComboBox1.Text, EdSuchen.Text, [loPartialKey]);
Leider weiß ich hier nicht weiter.

Danke nochmals für Deine Hilfe

Gruß
Gabi
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#8
  Alt 3. Feb 2003, 21:39
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.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
gabi

Registriert seit: 2. Feb 2003
13 Beiträge
 
Delphi 6 Professional
 
#9
  Alt 4. Feb 2003, 06:01
Hallo MrSpock,
nein ich habe keine Variable loPartialKey deklariert.

Gruß
Gabi
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#10
  Alt 4. Feb 2003, 07:36
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.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 09:27 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