Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi DBGrid durchsuchen (https://www.delphipraxis.net/187053-dbgrid-durchsuchen.html)

GroZ 23. Okt 2015 13:43

Delphi-Version: 7

DBGrid durchsuchen
 
Ich möchte eine Datenbank durchsuchen. Es ist eine DBGrid Datenbank. Zum suchen nutze ich ein Edit und einen Button zum bestätigen. Wenn ich also in das Edit Peter eingebe dann möchte ich das ich dann Peter´s Eintrag sehe. Hier ist mein QC:
Delphi-Quellcode:
if Form2.Table1.Locate('Name/Firma', KSuchenEdt.Text, []) then    //need tbd
     Form3.DBGrid1.Show;
Das komische ist aber das wenn ich auf suchen drücke keine Exception oder so kommt.

mkinzler 23. Okt 2015 13:53

AW: DBGrid durchsuchen
 
Warum sollte eine Exception kommen, wenn kein entsprechender Eintrag gefunden wurde wird False zurückgegeben.

GroZ 23. Okt 2015 13:54

AW: DBGrid durchsuchen
 
Da hast du Recht. Aber selbst wenn ich etwas eingebe was es gibt passiert nix und das will ich ja nicht. Dann will ich den Eintrag sehen..

mkinzler 23. Okt 2015 13:58

AW: DBGrid durchsuchen
 
Steht der Suchbegriff auch genau so wie Du ihn eingegeben hat in der Datenbank?

GroZ 23. Okt 2015 14:03

AW: DBGrid durchsuchen
 
Ja. Die Datenbank wird aber trotzdem nicht geöffnet.

mkinzler 23. Okt 2015 14:05

AW: DBGrid durchsuchen
 
Diese muss auch geöffnet sein, um sie zu Durchsuchen oder meinst Du das Grid?
Mit genau identisch meine ich Groß-/Kleinschreibung, Leerzeichen, Länge usw.

GroZ 23. Okt 2015 14:08

AW: DBGrid durchsuchen
 
Delphi-Quellcode:
if Form2.Table1.Locate('Name/Firma', KSuchenEdt.Text, []) = true then
  begin
    Form3.DBGrid1.Show;
  end;
Ich meine das Grid. Diese ist bei mir auf Form3

mkinzler 23. Okt 2015 14:10

AW: DBGrid durchsuchen
 
Ändere mal auf

Delphi-Quellcode:
if Form2.Table1.Locate('Name/Firma', KSuchenEdt.Text, [loCaseInsensitive, loPartialKey] ) then

GroZ 23. Okt 2015 14:11

AW: DBGrid durchsuchen
 
Zitat:

Zitat von mkinzler (Beitrag 1319570)
Ändere mal auf

Delphi-Quellcode:
if Form2.Table1.Locate('Name/Firma', KSuchenEdt.Text, [loCaseInsensitive, loPartialKey] ) then

Undefinierter Bezeichner hab ich bereits probiert.. Denke mal das kennt D7 nicht

mikhal 23. Okt 2015 14:15

AW: DBGrid durchsuchen
 
Doch, sollte D7, aber dein Spaltenname stellt das Problem dar: Du hast ein Sonderzeichen im Namen, da fängt der Datenbanktreiber an zu denken und will rechnen...

Du hast uns auch nicht mitgeteilt, welche Datenbank überhaupt darunter liegt...

Grüße
Mikhal

mkinzler 23. Okt 2015 14:15

AW: DBGrid durchsuchen
 
Müsste es schon in D7 gegeben haben, sonst wäre der Parameter ja überflüssig. Was sagt die D7 Hilfe dazu?

GroZ 23. Okt 2015 14:20

AW: DBGrid durchsuchen
 
Die Delphi Hilfe zeigt es mir an aber ich muss anscheinend irgendwie eine Variable dafür deklarieren. Weil ohne weiteres kennt er das nicht. Datenbank müsste Paradox 7 sein. bin mir nicht sicher. Habe nach dem DelphiTreff einsteiger Tutorial gearbeitet.

mkinzler 23. Okt 2015 14:22

AW: DBGrid durchsuchen
 
Nein eine Variable sollte nicht motwendig sein.

mikhal 23. Okt 2015 14:23

AW: DBGrid durchsuchen
 
Und ich komme nochmal auf den Spaltennamen zurück: Der Slash hat im Spaltennamen nichts zu suchen!

Grüße
Mikhal

GroZ 23. Okt 2015 14:24

AW: DBGrid durchsuchen
 
Dann ist es sehr komisch weil er es nicht kennt.. Es ist eine Paradox Tabelle von TTable. Falls das hilft

Dann muss ich die Tabelle nochmal bearbeiten. Kann man das wenn sie erstellt ist? Hab es bisher noch nicht hin bekommen. Weil meine erste Spalte 'Name/Firma' heißt

Jasocul 23. Okt 2015 14:27

AW: DBGrid durchsuchen
 
Kann es vielleicht sein, dass "Name/Firma" nur die Spalten-Überschrift in deinem DBGrid ist?
Für das Locate muss du den Feldnamen der Tabelle nehmen. Also die Bezeichnung, die du beim Anlegen der Paradox-Tabelle vergeben hast.

GroZ 23. Okt 2015 14:30

AW: DBGrid durchsuchen
 
Nein so heißt die erste Spalte die ich gemacht habe. Habe Name/Firma, Email und Telefonnummer

mikhal 23. Okt 2015 14:34

AW: DBGrid durchsuchen
 
War bei Paradox etwas aufwendiger: Neue Spalte anlegen, Werte aus der alten Spalte in die neue Spalte kopieren, alte Spalte löschen. Wo die Spalte in der Definition steht ist wurscht, Hauptsache sie existiert!

Aber ich muss anmerken, dass ich seit etwa 20 Jahren nicht mehr mit Paradox-Datenbanken arbeite.

Grüße
Mikhal

Zoot 23. Okt 2015 14:35

AW: DBGrid durchsuchen
 
Ist denn Form3 sichtbar?
Was soll Form3.dbgrid1.show bewirken?

Jasocul 23. Okt 2015 14:35

AW: DBGrid durchsuchen
 
Du brauchst noch die Unit "DB".
Also im Source unter uses noch DB mit eintragen.

GroZ 23. Okt 2015 14:38

AW: DBGrid durchsuchen
 
Zitat:

Zitat von mikhal (Beitrag 1319581)
War bei Paradox etwas aufwendiger: Neue Spalte anlegen, Werte aus der alten Spalte in die neue Spalte kopieren, alte Spalte löschen. Wo die Spalte in der Definition steht ist wurscht, Hauptsache sie existiert!

Aber ich muss anmerken, dass ich seit etwa 20 Jahren nicht mehr mit Paradox-Datenbanken arbeite.

Grüße
Mikhal

Wie lege ich eine neue Spalte an? Ich hab bisher immer ne komplett neue Tabelle gemacht :oops:
Naja das Programm ist nur zur Übung mit Datenbanken also weniger wichtig welche Komponenten ich da nehme.

mikhal 23. Okt 2015 14:47

AW: DBGrid durchsuchen
 
Es gibt bei D7 eine Datenbankoberfläche, mit der du Tabellen anlegen kannst. Sollte im Menü Tools zu finden sein, wenn ich mich recht erinnere.

Dort wählst du die Tabelle aus und kannst dann Felder / Spalten hinzufügen, löschen...

Aber du machst im Moment einen viel größeren Fehler in der Betrachtung des Problems: Das DBGrid dient ausschließlich der Visualisierung und Bearbeitung der Daten deiner Tabelle. Aber die Funktionalitäten wie Schreiben, Lesen und Suchen wird auf Datenbank-Ebene mit TTable oder TQuery realisiert.

Grüße
Mikhal

GroZ 23. Okt 2015 14:49

AW: DBGrid durchsuchen
 
Das DBGrid ist auf ReadOnly. Eingaben mache ich via DBEdits und DBNavigator. mit TTable müsste das sein.

Ich werde jetzt erstmal Wochenende machen. Wünsche euch ein gutes Wochenende. Werde mich Montag wieder damit befassen.

p80286 23. Okt 2015 15:37

AW: DBGrid durchsuchen
 
Zitat:

Zitat von mikhal (Beitrag 1319586)
Aber du machst im Moment einen viel größeren Fehler in der Betrachtung des Problems: Das DBGrid dient ausschließlich der Visualisierung und Bearbeitung der Daten deiner Tabelle. Aber die Funktionalitäten wie Schreiben, Lesen und Suchen wird auf Datenbank-Ebene mit TTable oder TQuery realisiert.

Nun ich würde es wesentlich schärfer formulieren, das Lesen und Editieren der Datenbank sollte nur über SQL-Befehle realisiert sein (TQuery) damit man eine klar definierte Schnittstelle zwischen Datenbank und Clientprogramm hat. Nicht umsonst gibt es hier so viele Fragen zu den DB... Komponenten.

Gruß
K-H

hoika 23. Okt 2015 15:42

AW: DBGrid durchsuchen
 
Hallo,

DBD.Exe hiess der Datenbank-Desktop.

Heiko

Dejan Vu 23. Okt 2015 18:37

AW: DBGrid durchsuchen
 
Wo bleibt eigentlich der Aufschrei bezüglich der verwendeten BDE und Paradox?

Bernhard Geyer 23. Okt 2015 18:41

AW: DBGrid durchsuchen
 
Zitat:

Zitat von Dejan Vu (Beitrag 1319610)
Wo bleibt eigentlich der Aufschrei bezüglich der verwendeten BDE und Paradox?

Man wird doch immer zusammengestaucht wieso man unpassende Kommentare loslässt und nicht den Fragesteller hilft.
Wobei m.E. "Weg von BDE/Paradox" die beste Hilfestellung ist.

Oder es liegt daran das man keine BDE mehr in der IDE hat und dann schön genüsslich sagen kann: "Wir haben's dir doch gesagt das du da was machen musst".

Perlsau 23. Okt 2015 19:00

AW: DBGrid durchsuchen
 
Zitat:

Zitat von GroZ (Beitrag 1319561)
DBGrid durchsuchen
Ich möchte eine Datenbank durchsuchen. Es ist eine DBGrid Datenbank. Zum suchen nutze ich ein Edit und einen Button zum bestätigen. Wenn ich also in das Edit Peter eingebe dann möchte ich das ich dann Peter´s Eintrag sehe.

Dein größtes Hindernis scheint noch immer das grundsätzlicher Verständnis der Arbeit mit Datenbanken und Datenbank-Komponenten zu sein:
  • Man durchsucht kein DBGrid, sondern immer nur die zugrundeliegende Datenmenge, die von einer Dataset-Komponente bereitgehalten wird.
  • Suchbefehle bietet quasi jede Datenbank von Haus aus.
  • Was soll das sein: eine DBGrid Datenbank?
Du würdest in erster Linie dir selbst einen großen Gefallen tun, wenn du dir die Grundlagen der Datenbank-Programmierung aneignen würdest, um ein gewisses Grundverständnis zu erlangen. Hast du dieses Grundverständnis erst einmal erlangt, ergeben sich die allermeisten Lösungen ganz von selbst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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-2025 by Thomas Breitkreuz