Autor Beitrag
Arne Danikowski
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194



BeitragVerfasst: Do 25.01.07 18:44 
Hallo Leute,

ich habe eine kleines Datenbanktool (DBAse für Windows) erstellt und habe nun probleme mit dem Suchen.

hier der Quelltext, mit dem ich bisher suche:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Panel1Click(Sender: TObject);
begin
table1.Locate('Name', edit1.text,[]);
table1.Locate('Vorname', edit2.text,[]);
table1.Locate('Verwendung', edit3.text,[]);
table1.Locate('Ort', edit4.text,[]);
table1.Locate('Bemerkung', edit5.text,[]);


Folgende Probleme tauchen auf:

1.) Wenn nach einem Suchbegriff gesucht wird, der nicht vorhanden ist kommt es zu einer Fehlermeldung
2.) Es wird zwischen Groß- und Kleinschreibung unterschieden
3.) Nur 100% Übereinstimmung wird gefunden (Zuche ich zum Beispiel nach meinem Namen, muss ich "Danikowski" eingeben.
"Dani" bringt keine Ergebnisse
4.) Es wird nur ein Datensatz gefunden

Kann da jemand helfen?

mfg Arne
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Do 25.01.07 18:50 
Zitat:
1.) Wenn nach einem Suchbegriff gesucht wird, der nicht vorhanden ist kommt es zu einer Fehlermeldung

Dürfte eigentlich nicht, es wird nur ein entsprechenden Rückgabecode geliefert.
Welcher Fehler kommt?
Zitat:

2.) Es wird zwischen Groß- und Kleinschreibung unterschieden
3.) Nur 100% Übereinstimmung wird gefunden (Zuche ich zum Beispiel nach meinem Namen, muss ich "Danikowski" eingeben.

Schau dir mal den 3. Parameter an, da kannst du einstellen, daß auch Teilstrings gefunden werden und Groß-Kleinschreibung nicht mehr unterschieden wird.

_________________
Markus Kinzler.
Arne Danikowski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194



BeitragVerfasst: Do 25.01.07 19:07 
Danke für die Antwort

Zitat:

Dürfte eigentlich nicht, es wird nur ein entsprechenden Rückgabecode geliefert.
Welcher Fehler kommt?


Siehe Bild
Zitat:

Schau dir mal den 3. Parameter an, da kannst du einstellen, daß auch Teilstrings gefunden werden und Groß-Kleinschreibung nicht mehr unterschieden wird.


Und wie funktioniert das?

mfg
Arne
Einloggen, um Attachments anzusehen!
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Do 25.01.07 19:49 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
if table1.Locate('Name', edit1.text,[loCaseInsensitive,loPartialKey]) then 
   //gefunden
else
   //nicht gefunden

_________________
Markus Kinzler.
Arne Danikowski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194



BeitragVerfasst: Fr 26.01.07 13:29 
Ok das funktioniert!

So habe ich das nun:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
procedure TForm1.Button1Click(Sender: TObject);
begin
     if table1.Locate('Name', edit1.text,[loCaseInsensitive,loPartialKey]) then
     begin
     form2.show
     end
     else
     if table1.Locate('HAUPTBERUF', edit2.text,[loCaseInsensitive,loPartialKey])
     then
     form2.show
     else
     if table1.Locate('VERWENDUNG', edit3.text,[loCaseInsensitive,loPartialKey])
     then
     form2.show
     else
     if table1.Locate('ORT', edit4.text,[loCaseInsensitive,loPartialKey])
     then
     form2.show
     else
     if table1.Locate('Bemerkung', edit5.text,[loCaseInsensitive,loPartialKey])
     then
     form2.show


     else

     ShowMessage ('Keine Daten gefunden')

end;


1.) nun möchte ich in form2 alle gefundenen datensätze in einem DBGrid feld anzeigen lassen.
2.) Wie sortiere ich die Tabele in einem DBGRID?

Ich denke ich muss irgendwie die Daten Filtern?
Arne Danikowski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194



BeitragVerfasst: So 28.01.07 01:43 
keiner ne Idee?
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 28.01.07 10:26 
entweder du nimmst SQL oder du setzt den entsprechenden index vor der suche um. ich empfehle dir SQL. Ist zwar etwas mehr aufwand, dein Progy umzustellen, aber du kannst dich bei dieser gelegenheit auch gleich von der BDE verabschieden... entsprechendes findest du zu hauf im forum. <HTH>
Arne Danikowski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194



BeitragVerfasst: So 28.01.07 14:04 
Ich kann leider nicht auf SQL umsteigen, da diese Datenbankform ja einen SQL Server benötigt. Die Anwendung läuft aber auf einem Client, auf dem ich keine Software istallieren kann.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: So 28.01.07 14:17 
user profile iconArne Danikowski hat folgendes geschrieben:
Ich kann leider nicht auf SQL umsteigen, da diese Datenbankform ja einen SQL Server benötigt. Die Anwendung läuft aber auf einem Client, auf dem ich keine Software istallieren kann.

Auch für die BDE gibt es SQL (LocalSQL) beim Einsatz von TQuery statt TTable.
Bei Verwendung einer embedded-Datenbank z.B. FB embedded oder sqlite ist auf dem Client keine Installation nötig.

_________________
Markus Kinzler.
Arne Danikowski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194



BeitragVerfasst: So 28.01.07 19:22 
Das hört sich interessant an damit werde ich mich mal beschäftigen