Toon posts:

[Delphi] ClientDataSet, Index & TBookmark

Pagina: 1
Acties:

Verwijderd

Topicstarter
Een TBookmark is een pointer naar een record in een Dataset. M.b.v GotoBookmark kan je naar een opgeslagen positie terugkeren.

Nu heb ik een uiterst irritant probleem. Even uitleggen:

Ik maak een bookmark van de eerste record (record A, voor het gemak) van een set. Deze bookmark voeg ik samen met extra informatie toe aan een TList.

Ik selecteer een index waardoor alle records verplaatsen. Hierbij komt record A op de vierde plek.

Vervolgens zoek ik de extra gegevens van record A weer op. Door een nieuwe bookmark op te halen van record A (die nu op de vierde plek staat) en elke bookmarks van de TList te comparen.

Wanneer de bookmarks gelijk zijn, heb ik de juiste gegevens bij de juiste record gevonden. (Mijn logische gedachte)


Probleem: Record A krijgt niet zijn eigen gegevens. De bookmark van de TList wijst naar record 1 van de set. Werken bookmarks dus nooit meer ga gebruik van een andere index? Of moet je met navigeren altijd de default index gebruiken? (Maar dan krijg je elke keer een OnDataChange)

:X

Verwijderd

Een TBookmark is een pointer naar een record in een Dataset.
Andere index/query --> andere dataset.

Verwijderd

Topicstarter
Mijn ClientDataSet is een Clone van een andere ClientDataSet.
Als ik een andere index selecteer, werk ik dus nog wel met dezelfde Cursor.

code:
1
ds.IndexName := IDX_MAGAZIJN_KOPPEL_ID;

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Een Bookmark is niets anders als een interne pointer naar een record van een TDataSet. Het minste of geringste maakt een Bookmark weer ongeldig. Gebruik dan ook gewoon de Primary Key van je tabel en doe een Locate.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
LordLarry schreef op 08 oktober 2004 @ 13:36:
Een Bookmark is niets anders als een interne pointer naar een record van een TDataSet. Het minste of geringste maakt een Bookmark weer ongeldig. Gebruik dan ook gewoon de Primary Key van je tabel en doe een Locate.
hmm kay, ik gebruik dan wel liever de prim key om de extra gegevens te onthouden. Tnx.

  • Robbemans
  • Registratie: November 2003
  • Laatst online: 17-07-2025
Is niet nodig. Je kunt voor een CDS net zo goed een locate uitvoeren. De interne logica van het ding is dusdanig dat ie snel kan bepalen wat je record was.

Mocht je TOCH tegen een performanceprobleem aan lopen dan kun je ook je IndexFieldNames zetten, zodat je snel een FindKey kunt doen.
Pagina: 1