View Issue Details

IDProjectCategoryView StatusLast Update
0006151JEDI VCL00 JVCL Componentspublic2015-09-14 13:20
ReporterrwasowskiAssigned ToAHUser 
Status resolvedResolutionfixed 
Product Version3.46 
Target VersionFixed in Version3.48 
Summary0006151: TJvMemoryDataSet - GoToBookmark doesn't work

Delphi XE3 (32 bit).

GoToBookmark on TJvMemoryDataSet doesn't work fine. Error is full reproducibility.

When I get bookmark from dataset this information are not valid for method GoToBookmark and nothing happens on dataset.

I don't get any error. Indicator on (ex. DBGrid) is on the same place.

Example app in attachment.

Thanks for help.
Additional InformationI've debugged JvMemoryDataset.pas
It seems that problem is in

procedure TJvMemoryData.InternalGotoBookmarkData(BookmarkData: TJvBookmarkData);

more precisely:

Rec := FindRecordID(BookmarkData);
TagsNo tags attached.


2013-06-17 09:47 (83,185 bytes)


2013-07-08 11:37

developer   ~0020561

Can you switch to some other table like TClientDataSet ?


2013-07-09 10:08

reporter   ~0020564

Perhaps I could, but I use TJvMemoryDataSet in many places of my application with or without using Bookmarks.


2013-07-09 11:43

developer   ~0020565

Last edited: 2013-07-09 11:43

I was a long-time user of RxLib and by inheritance of JVCL.
I think RxMemoryDataset was among first freeware BDE-less in-memory tables for Delphi.

Still... over time it turns to be a very spaghetti code.

After i found that sometimes it occasionally may create new empty rows... i given up. I think unless there would be someone would clean it and re-implement it (would you, by the way?) it should alas be considered obsolete.


2013-07-10 11:57

developer   ~0020566

check if 0006163 would help you


2013-07-10 13:10

reporter   ~0020567

Thanks for hint. I'll try it tomorrow and give you replay.
About re-implement - I can try but I can not say when I'd finished.

By the way, an interesting challenge :)


2013-07-10 13:33

developer   ~0020568

Personally i don't feel there is any reason to do because

1) there is CDS which usually works
2) there are hi-level containers like TDictionary<T,U> both stock and 3rd-party
3) there are SQL databases like Firebird Embedded, SQLite or NexusDB (or kbMemSQL ;-) )
4) there is AnyDAC memory table, which is FireDAC and part of XE4 Enterprise now
5) would show you yet more in-memory tables

If you really want to re-implement something - then revive hmmm... TObjectDataset?.. there was a runtime component turning array of {TObject} into a table, based on object's type RTTI



2013-07-11 20:06

developer   ~0020571

Fixed in master branch.

Issue History

Date Modified Username Field Change
2013-06-17 09:47 rwasowski New Issue
2013-06-17 09:47 rwasowski File Added:
2013-07-08 11:37 Arioch Note Added: 0020561
2013-07-09 10:08 rwasowski Note Added: 0020564
2013-07-09 11:43 Arioch Note Added: 0020565
2013-07-09 11:43 Arioch Note Edited: 0020565
2013-07-10 11:57 Arioch Note Added: 0020566
2013-07-10 13:10 rwasowski Note Added: 0020567
2013-07-10 13:33 Arioch Note Added: 0020568
2013-07-11 20:06 AHUser Note Added: 0020571
2013-07-11 20:06 AHUser Status new => resolved
2013-07-11 20:06 AHUser Fixed in Version => Daily / SVN
2013-07-11 20:06 AHUser Resolution open => fixed
2013-07-11 20:06 AHUser Assigned To => AHUser
2015-09-14 13:20 obones Fixed in Version Daily / GIT => 3.48