> The easy one is probably to make two independent connections to the > database. More elaborated solutions would be for example copy all said > records to a memdataset and only connect that to a dbgrid, OR put the > records in a non-dataset enabled component, like a TDrawGrid or > TStringGrid, browsing that will not trigger any dataset events so > other db controls will be unaffected, etc. The problem here is I think > synchronizing stuff, you will have a funny time getting the updates to > those records into the original source. Jesus I'm afraid your way is not memory efficent.
> If the wanted record is in window of > TDataLink.FirstRecord..FirstRecord + BufferCount - 1 you can > temporarily switch the record which supplies the field data by setting > TDatalink.ActiveRecord which doesn't fire any events. I assume you > know that. ;-) See for example the MSEgui functions > TGridDatalink.GetDisplay*Buffer(), BeginGridRow() and EndGridRow(). > https://gitlab.com/mseide-msegui/mseide-msegui/raw/master/lib/common/db/msedbedit.pas > If the wanted records are anywhere in the dataset you need a dataset > with random row data access. TMSEBufDataset supports it, please see > the TMSEBufDataset.Current* properties. > https://gitlab.com/mseide-msegui/mseide-msegui/raw/master/lib/common/db/msebufdataset.pas > The MSEgui dropdownlist DB-edits use this approach for lookups if > Dropdown.OptionsDB odb_directdata is set. Glad to hear from you Martin. Happy to see MSE support this and I will look it up. > A possible workaround could be to call TDataset.DisableControls(), to > fetch the needed records and to restore the DB cursor position before > calling EnableControls(). I fear it is not efficient and has > sideeffects. What side effects do you think about? Regards, Ara -- http://www.fastmail.com - IMAP accessible web-mail
-- _______________________________________________ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus