Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TDBGrid Datensatzzeiger auf Tabelle (https://www.delphipraxis.net/160563-tdbgrid-datensatzzeiger-auf-tabelle.html)

Hermelin007 19. Mai 2011 15:09

Datenbank: MySQL • Version: 5 • Zugriff über: Zeos

TDBGrid Datensatzzeiger auf Tabelle
 
Hallo ,

bin ein Newbie in Sachen Delphi,

habe ein DBGrid und möchte nach einem DblClick auf den Datensatz im Formular zeigen,

habe das in der Vergangenheit mit

procedure TForm5.DBGrid1DblClick(Sender: TObject);
begin
Table1.FindKey([TDBGrid(Sender).Datasource.Dataset.FieldbyName('Lf dnr').asString]);
end;
mit Zufriedenheit aller erledigt.

Nun mit der Umstellung auf MySql Tabellen, die ich mit einem Index versehen hab, funktioniert das ganz nicht

'Findkey' 'undefinierter Bezeichner'.


Wo liegt der Hammel im Graben ??

Mit besten Dank im Vorraus

DeddyH 19. Mai 2011 15:16

AW: TDBGrid Datensatzzeiger auf Tabelle
 
Ich verstehe nicht ganz, wozu Du FindKey brauchst. Nach einem Klick auf eine Zeile im DBGrid positioniert die Datenmenge doch automatisch auf den entsprechenden Datensatz, oder verstehe ich Dich falsch?

shmia 19. Mai 2011 15:24

AW: TDBGrid Datensatzzeiger auf Tabelle
 
Die Ersatzfunktion zum Suchen eines Datensatzes ist [TDataset].Locate().
Beispiel:
Delphi-Quellcode:
if MySqlQuery1.Locate('ArtikelNr', '553311', []) then
  ShowMessage('Artikel 553311 gefunden');
Allerdings kann Locate nur den 1. Datensatz finden und ist ausserdem relativ langsam.
Für kleine Datenmengen bis ~500 Datensätzen kann man es aber benützen.

Hermelin007 19. Mai 2011 15:36

AW: TDBGrid Datensatzzeiger auf Tabelle
 
Danke für die so rasche Antwort,


habe leider Vergessen , dass ich die Ergebinsmenge aus einer Query hole um Sie dann zu bearbeiten.

die Tabelle hat einen Eintrag von ca. 5000 Datensätze und Tendenz zunehmend, ist dann Locate zu empfehlen ?

Nochmals Danke

shmia 19. Mai 2011 16:20

AW: TDBGrid Datensatzzeiger auf Tabelle
 
Zitat:

Zitat von Hermelin007 (Beitrag 1101824)
die Tabelle hat einen Eintrag von ca. 5000 Datensätze und Tendenz zunehmend, ist dann Locate zu empfehlen ?

Ich würde das einfach mal ausprobieren.
Der saubere (und schnellere) Weg geht so, dass man eine eigene Query benützt:
SQL-Code:
SELECT * FROM Untertabelle WHERE Lfdnr=:Lfdnr
den Parameter :Lfdnr befüllt und diese Query jedes Mal neu öffnet.

Das Befüllen des Parameters kannst du dir sparen, wenn du diese Abfrage über das Property DataSource mit der Haupttabelle verknüpfst.
Ich hoffe auch, du hast keine Leerzeichen in deinen Feldnamen (so wie in deinem Beispiel), denn das macht dir nur das Leben schwer.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 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