Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datensatzzeiger - Probleme (https://www.delphipraxis.net/171042-datensatzzeiger-probleme.html)

OrgFreak 17. Okt 2012 06:54

Datenbank: Paradox • Version: 7.0 • Zugriff über: BDE

Datensatzzeiger - Probleme
 
Hallo zusammen

Hab immense Probleme mit dem Beibehalten der Datensatzposition, bei Eingabe von Daten in die Felder.
1. Problem : Wenn ich die Unit wechsle und dann das Fenster wieder schliesse, wird der erste Datensatz der Tabelle abgezeigt.

2. Ich hab das Problem mit der Methode Goto Nearest versucht zu lösen, aber das funktioniert nur, wenn ich einen Datensatz habe. Wenn ich mehrere habe mit dem gleichen Namen, funktioniert das nicht mehr. Hab 2 Schlüssel in der DB.
Im Prinzip müsste man 2 Goto Nearest Routinen haben. Aber ich weiss nicht wie das gehen sollte.

Weiss jemand Rat ?

Danke für Eure Antworten

Gruss

OrgFreak

DeddyH 17. Okt 2012 06:58

AW: Datensatzzeiger - Probleme
 
Hast Du es mal mit Delphi-Referenz durchsuchenGetBookmark und Delphi-Referenz durchsuchenGotoBookmark versucht?

Bummi 17. Okt 2012 07:00

AW: Datensatzzeiger - Probleme
 
Hast Du einen Primary Key den Du Dir merken könntest.
Du könntest die Datasets gegf. in einem Datenmodul halten, damit sie unabhängig von Deinen Forms sind.

OrgFreak 17. Okt 2012 08:51

AW: Datensatzzeiger - Probleme
 
Guten Tag

Danke für die Antworten.
Hab das ausprobiert mit GotoBookMark und GetBookMark.
Funktioniert aber nur bei eindeutigen Feldern, wo's nur einen Datensatz gibt.
Sobald ich mehrere mit gleichem Namen habe, springt er irgendwohin.
Hab viele Datenbanken, verbunden mit Mastersource (nur eine) und Masterfields.
Die Masterfields sind eben die zwei Felder mit den Schlüsseln.
Also z.B. ich hab mehrere Vornamen und immer denselben Nachnamen. So ist das mit den zwei Schlüsselfelder.
Hab die Variable Bookmark als Global definiert.
Beim Verlassen der unit dann den Befehl: HauptUnit.table1.GotoBookMark(Bookmark) einegeben und bei der OnShow Funktion der HauptUnit ebenfalls (zur Sicherheit).
HauptUnit meine ich Name der Unit, wo ich die Variable Bookmark global definiert habe.

Also vielleicht hat jemand ne Idee.
Ich weiss nicht woran's liegt.

Gruss

OrgFreak

Perlsau 17. Okt 2012 11:58

AW: Datensatzzeiger - Probleme
 
Zitat:

Zitat von OrgFreak (Beitrag 1187336)
Hab immense Probleme mit dem Beibehalten der Datensatzposition, bei Eingabe von Daten in die Felder.
1. Problem : Wenn ich die Unit wechsle und dann das Fenster wieder schliesse, wird der erste Datensatz der Tabelle abgezeigt

1. Zum ersten wäre es sinnvoll, jeder Tabelle einen Primary-Key zu spendieren, den du dir nach jedem Scrollvorgang (OnAfterScroll) in einer globalen Variablen merkst:
Delphi-Quellcode:
procedure TDatMod.Dset_ArtikelAfterScroll(DataSet: TDataSet);
begin
   // Index_Artikel: globale Integer-Variable, deklariert in UnitData unter Public
   Index_Artikel := Dset_Artikel.FieldByName('IDX_ARTIKEL').AsInteger;
end;
2. Bei mir liegen Datenbank-Komponenten immer (außer bei Testprogrammen) in einem Datenmodul (UnitData), das auch diese globale(n) Variable(n) aufnehmen kann. Schließlich wird das Datenmodul in der Regel von allen anderen Units/Forms mitverwendet (Uses-Klausel unter Implementation):
Delphi-Quellcode:
...
IMPLEMENTATION
USES
   UnitData;
...
3. Für besondere Fälle merke ich mir den aktuellen Primary-Key in einer lokalen Variablen und setze ihn nach Abschluß der jeweiligen Funktion/Prozedur mittels Locate wieder auf den ursprünglichen Wert.

4. In fast allen meinen Datenbanken gibt es eine Benutzer-Tabelle, in der ich u.a. auch die Datensatz-Positionen meiner Tabellen speichere, wie sie bei Programmende gerade vorgefunden werden. Dadurch hat der Anwender beim nächsten Start wieder genau die Datensätze vor Augen wie beim vorangegegangen Programm-Ende.


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