AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Suchfunktion mit DBEdit

Suchfunktion mit DBEdit

Ein Thema von Mr_G · begonnen am 12. Okt 2006 · letzter Beitrag vom 21. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#1

Suchfunktion mit DBEdit

  Alt 12. Okt 2006, 22:05
Datenbank: MySQL • Version: 5.0 • Zugriff über: Zeos
Hallo erstmal,
ich habe momentan folgendes Problem: Ich habe eine Eingabemaske, bestehend aus mehreren DBEdits, die mit einer Datasource verbunden sind. Außerdem hängt noch ein DBGrid an der Datasource. Die normalen Vorgänge funktionieren wunderbar aber ich würde die Edits auch gerne nutzen, um nach den dort gemachten Eingaben zu suchen. Das Problem das sich dabei stellt ist natürlich wie kann ich die DBEdits dazu bekommen Eingaben nicht auf die Datenbank zu beziehen sondern den Inhalt so als Text zu behandeln wie ein normales Edit.
Ich habe mir das dann so vorgestellt, dass der Benutzer auf einen Knopf oder sonstwas drückt um in den "Such"-Modus zu wechseln. Danach kann er die Edits nutzen um Schlüsselwörter für die verschiedenen Felder einzugeben und nach eben diesen Wörtern sollte dann gesucht werden, bis der Benutzer den "Such"-Modus wieder verlässt und über die Maske ganz normal die Datensätze weiter bearbeitet.
Wenn ich aber bei den DBEdits die Verbindung zur Datenbank kappe kann man überhaupt nichts mehr hineinschreiben.
Meine Frage nun also: Wie und mit welcher Komponente kann ich die gewünschten Funktionen am einfachsten realisieren?
Vielen Dank im Voraus
Mr_G

P.S.: Die Suche wollte ich bewerkstelligen, indem ich die Abfrage des Querys, aus dem alle beschriebenen Kompos ihre Daten über die Datasoure erhalten, ändere. Ich bin gerne bereit dieses Idee -falls für eine adäquate Lösung nötig- aufzugeben
Jan
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Suchfunktion mit DBEdit

  Alt 12. Okt 2006, 22:12
Du könntest einen normalen edit nehmen, den du dann halt manuell füllen mußt.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Suchfunktion mit DBEdit

  Alt 12. Okt 2006, 22:25
Auf diese Idee bin ich auch schon gekommen. Ich habe die Idee jedoch wieder verworfen da ich keinen Weg gefunden habe das verwendte DBGrid mit normalen Edits zu koppeln. Ich dachte man könnte vielleicht aus der Datasource den aktuellen Datensatz auslesen und darauf reagieren, wenn ein anderer ausgewählt wird aber das ist mir nicht gelungen. Auch mittels des Grids habe ich keinen Weg gefunden.
Jan
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Suchfunktion mit DBEdit

  Alt 12. Okt 2006, 22:27
Ein DataSet hat die Eigenschaft .AfterScroll, welches nach dem Verschieben des Datrensatzzeigers ausgelöst wird.
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: Suchfunktion mit DBEdit

  Alt 13. Okt 2006, 00:11
Ich sags gleich : so ganz einfach geht das nicht ! Verwende am besten ein separates Suchformular. Habe mal bei mir nachgeguckt : klicke ich "suchen" an, dann öffnet sich ein anderes Formular und ich gebe meine Werte ein, nach denen gesucht wird. Daraus wird ein SQL-Statement zusammengebaut, was eine Datenmenge (=DataSet) zurückliefert. Der User hat nun irgendwann den richtigen Datensatz gefunden. Das wars im Prinzip. Das erste Formular erhält das Dataset für DBEDits usw. des Suchforms als Datasource zugewiesen und fertig.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Suchfunktion mit DBEdit

  Alt 13. Okt 2006, 14:28
Also ich habe mir die Ereignisse mal angesehen und muss zugeben das DBEdit mit einem Edit nachzubauen ist doch recht aufwändig. Andererseits wollte ich ja gerade eine zusätzliche Eingabemaske für die Suche vermeiden.
Gibt es wirklich keine andere bzw. einfacherere Möglichkeit?
Jan
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Suchfunktion mit DBEdit

  Alt 13. Okt 2006, 16:10
Zitat:
Gibt es wirklich keine andere bzw. einfacherere Möglichkeit?
keine mir bekannte.
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: Suchfunktion mit DBEdit

  Alt 13. Okt 2006, 18:30
Zitat von Mr_G:
...und muss zugeben das DBEdit mit einem Edit nachzubauen ist doch recht aufwändig. ...
Andererseits wollte ich ja gerade eine zusätzliche Eingabemaske für die Suche vermeiden.
Wer will denn die DBEdits nachbauen ? Wozu das ? Ohne Extra-Suchform wird so was schnell unübersichtlich. Der User muß ohne lange nachzudenken sofort sehen, ob er was sucht, oder etwas eingeben kann. Benutze ich dazu dasselbe Formular, dann merkt er es eventuell nicht und die DBEdits sind dann auch tatsächlich für die Katz. Eventuell verändert er sogar wegen eingegebener Suchbegriffe den Original-Datenbestand !

In meinem Beispiel benutze ich in der Suchform tatsächlich nur normale Edits. Wenn der gewünschte Datensatz gefunden wurde, dann wird er allerdings auf der zu bearbeitenden Form angezeigt und zwar mit DBEdits usw.
Gruß
Hansa
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Suchfunktion mit DBEdit

  Alt 13. Okt 2006, 20:31
Hallo Jan,

technisch gesehen ist es kein Problem die DBEdit-Komponenten auch für die Abfrage von Suchbegriffen (QBF, Query-By-Form) zu verwenden. Grundsätzlich würde ich dafür keine datensensitiven Controls verwenden, aber wenn du es möchtest, so ist es nicht schwer. Die Suche muss dann in zwei Phasen ablaufen. In der ersten Phase wird das DataSet in den Insert-Mode geschaltet und in der zweiten werden die Suchwerte eingesammelt und lokalisiert. Das Hauptproblem bei dieser Vorgehensweise ist nicht die Verwendung der DBEdit-Controls, sondern die eigentliche Suche. In meiner Demo habe ich einen minimalistischen Ansatz über die Methode Locate() einer Table gewählt, der mich mit wenig Code auskommen lässt. Allerdings beinhaltet die Methode Locate() Stolpersteine, derentwegen ich dir raten würde anders vorzugehen (SQL WHERE-Klausel).

Gute Nacht
Angehängte Dateien
Dateityp: zip db-search_857.zip (2,4 KB, 13x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Suchfunktion mit DBEdit

  Alt 13. Okt 2006, 23:10
@marabu:
Vielen Dank für die Demo! Ich werde sie mir morgen mal ansehen und versuchen sie zu verwerten.

@Hansa:
1.
Zitat von Hansa:
Wer will denn die DBEdits nachbauen ?
Zitat von mkinzler:
Du könntest einen normalen edit nehmen, den du dann halt manuell füllen mußt.
In meinen Augen: Funktionalität "nachbilden/-bauen".

2.
In der Anwendung um die es geht verhält es sich so, dass der Benutzer mehrere Tabellen mit jeweils 5 bis 15 Feldern verwalten können soll. Ich fände es äußerst ungünstig wenn man dann für jede der Tabellen nochmal ein extra Formular anlegt wenn der Benutzer doch alles schön kompakt in seiner Oberfläche haben kann anstatt hier und da neue Fenster öffnen zu müssen. Und damit er sich nicht vertut schreibt man einfach groß drüber ob er gerade im Suchmodus oder im Editiermodus ist . Letzenendes ist es eine Geschmacksfrage und ich habe eben diesen Geschmack und versuche eine Lösung für das daraus resultierende Problem zu finden.
Jan
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:42 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