Since about to years we use DOA to migrate our Delphi -> BDE->ODBC-> Oracle programs to Delphi-> Oracle. This has been very successfull.
At the moment I'm doing the migration of the last outstanding program. Unfortunately this time I run into some problems. While developing I got several "out of memory" errors while scrolling through the tables.
This difference with the earlier projects is that for this project, the Oracle table is a lot larger.
Looking at the Windows Task Manager I noticed that the memory use rose until all memory was used. This happens when going to the last record of the table or searching for a record in the end of the table.
I use the OracleDataset, and have the queryAllRecords set to false. But it looks that this has only influence at the start of opening the table. If you scroll to the last record, it seems that the memory is completely filled by the table.
Looking at the source code and earlier posts it seems that this is normal behaviour for the component?
At the moment this makes the OracleDataSet not suitable to use for large tables. If this is not correct pls correct me.
In the meantime I'm testing a modified OracleDataset that will always only select a restricted number of records around the required record. If the next requested record is outside this range it will query again a set of records. etc.. It works at the moment only with tables having a primary key, as it uses this field to remember the range of the selection etc. The key is also used for searching. In a search it will do a separate query for searching a record and returning the primary key field value. This one is then used to update the OracleDataset to show the found record.
Although it is interesting to play with the OracleDataset, I get a feeling of maybe re-inventing the wheel. Therefore the question if the above is really necessary and if other developers have other solutions?
At the moment I'm doing the migration of the last outstanding program. Unfortunately this time I run into some problems. While developing I got several "out of memory" errors while scrolling through the tables.
This difference with the earlier projects is that for this project, the Oracle table is a lot larger.
Looking at the Windows Task Manager I noticed that the memory use rose until all memory was used. This happens when going to the last record of the table or searching for a record in the end of the table.
I use the OracleDataset, and have the queryAllRecords set to false. But it looks that this has only influence at the start of opening the table. If you scroll to the last record, it seems that the memory is completely filled by the table.
Looking at the source code and earlier posts it seems that this is normal behaviour for the component?
At the moment this makes the OracleDataSet not suitable to use for large tables. If this is not correct pls correct me.
In the meantime I'm testing a modified OracleDataset that will always only select a restricted number of records around the required record. If the next requested record is outside this range it will query again a set of records. etc.. It works at the moment only with tables having a primary key, as it uses this field to remember the range of the selection etc. The key is also used for searching. In a search it will do a separate query for searching a record and returning the primary key field value. This one is then used to update the OracleDataset to show the found record.
Although it is interesting to play with the OracleDataset, I get a feeling of maybe re-inventing the wheel. Therefore the question if the above is really necessary and if other developers have other solutions?