[C++ Builder] TDataSet::Refresh()

Pagina: 1
Acties:

  • whoami
  • Registratie: December 2000
  • Laatst online: 06:24
Ik heb een C++ Builder applicatie die allerlei gegevens gaat gaan bewaren in een Access databank.

Normaal gezien gebruik ik altijd een TListView om m'n gegevens die ik ophaal in een lijstje te tonen naar de gebruiker toe.
Omwille van performance redenen enzo gebruik ik nu echter een TDBGrid.

Die DBGrid is aan een request live query gekoppeld. De query gaat alle velden van een bepaalde tabel gaan ophalen.
Als ik een nieuw record ga gaan toevoegen mbhv die query, dan wordt dat nieuwe record niet in m'n DBGrid weergegeven, dus heb ik de TQuery::AfterPost handler volgende code gezet:
code:
1
  qryLst->Refresh();

Als die code uitgevoerd wordt, krijg ik echter de fout
Table does not support this operation because it is not uniquely indexed
Hoezo de table is not uniquely indexed? M'n query haalt alle velden van de betreffende tabel op, ook de primary key. Die PK is een unique index (het is wel geen AutoNummering, maar een gewoon numeriek veld). Waarom klaagt hij daar dan over?

Ik kan die qryList->Refresh() wel gaan vervangen door
code:
1
2
qryList->Close();
qryList->Open();

, maar is dit wel efficiënt?

Trouwens, als ik qryList->Refresh vervang door bovenstaande oplossing, dan werkt het goed totdat ik een 3-tal records heb toegevoegd. Na het toevoegen van het 4de record ofzo komt dat nieuwe record niet in m'n grid te staan als ik die query close en terug open.
Het record wordt wel toegevoegd in de DB en als ik door m'n grid 'tab', dan verschijnt dat record plots ook. :?

https://fgheysels.github.io/


Verwijderd

Ik denk niet dat je het op deze manier moet doen (AfterPost) want werkt die wel bij een Delete, 'k denk 't niet.

Kun je je Grid niet refreshen/updaten/herbouwen/requerien? Ik roep maar wat maar misschien zit de oploosing er bij.

  • whoami
  • Registratie: December 2000
  • Laatst online: 06:24
Op woensdag 23 januari 2002 10:29 schreef hvdberg het volgende:
Ik denk niet dat je het op deze manier moet doen (AfterPost) want werkt die wel bij een Delete, 'k denk 't niet.
Hmm, ja, daar zeg je zo iets. Ik kan hem natuurlijk wel AfterDelete ook laten requeryen.
Kun je je Grid niet refreshen/updaten/herbouwen/requerien? Ik roep maar wat maar misschien zit de oploosing er bij.
Zal het even nakijken.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 06:24
Mijn Grid wordt heropgebouwd als ik een Requery of een Close/Open doe van m'n dataset.

Ik vind het wel vreemd dat hij, na een 2 of 3-tal keer niet al m'n records direct terug toont. Hij toont het nieuwe record niet en de 2de rij in m'n grid wordt geselecteerd. Als ik volledig dan alle rijen doorloop in de grid, komt het record wel tevoorschijn. Vreemd.

https://fgheysels.github.io/


Verwijderd

Op woensdag 23 januari 2002 18:59 schreef whoami het volgende:
Mijn Grid wordt heropgebouwd als ik een Requery of een Close/Open doe van m'n dataset.

Ik vind het wel vreemd dat hij, na een 2 of 3-tal keer niet al m'n records direct terug toont. Hij toont het nieuwe record niet en de 2de rij in m'n grid wordt geselecteerd. Als ik volledig dan alle rijen doorloop in de grid, komt het record wel tevoorschijn. Vreemd.
Andere (nood)oplossing:
Maak een bookmark naar huidig record.
Voeg nieuw record toe/wijzig record/delete record, whatever.
Ga naar laatste record (Last).
Spring terug naar bookmark.

Suc6

  • whoami
  • Registratie: December 2000
  • Laatst online: 06:24
'k had het ondertussen al zo opgelost. :)

https://fgheysels.github.io/

Pagina: 1