Jump to content


Popular Content

Showing content with the highest reputation on 01/16/19 in all areas

  1. Yes, code-folding is on the list. In the end, it will be part of the code-tags, not of the spoiler-tags.
  2. Fritzew

    Include unused class and its RTTI in the executable

    Simply call [TYourClass].ClassInfo somewhere in the application or in the initialization of the implementing Unit. Should be enough
  3. Delphi Developers Archive (Experimental) for the Google + Delphi Developers Community is online. https://delphi-developers-archive.blogspot.com The posts are searchable by tag list or free text search. FYI - This is work in progress, and I hope to improve the following issues: - Some posts have erroneous titles - Some posts are missing attribution of the original poster - Some 600 posts are missing due to an inexplicable quota error during import Comments on the archived posts are currently disabled until the import is finalized. Comments appreciated.
  4. Dany Marmur

    any suggestions on how to "lazy load" a BLOB/CLOB from Oracle DB?

    Just did a small test with my DAC (IBObjects), TDataSource and vanilla VCL TDBGrid + TDBMemo. This is only one query containing all field, even the BLOB. The grid only shows "(MEMO)" or "(memo)" for the cell. All rows are fetched (i have an SQL Monitor) w/o the BLOB content for the grid (only the reference). The BLOB fetch is done when i navigate to a record, not when the grid is filled. If i disable the (standalone) TDBMemo control - blobs content is never fetched. Is this what you are after? Perhaps it's some magic done by IBObjects, but i think not. Either way - i do not think it's possible to have an "all data all scenario"-solution for this. As some already said; the GUI needs affects the tactical here.
  5. Dany Marmur

    any suggestions on how to "lazy load" a BLOB/CLOB from Oracle DB?

    This is because the dataset now contains references to the CLOBs and for each row it needs to do a fetch. So 0.5 seconds "one" fetch. 60 sec, one "fetch" + one new fetch for each CLOB. So you will either need DACs and dataaware components that can show the user whether there is data or not (this is determined in the first fetch) and then do the actual BLOB/CLOB fetch when the user for example clicks the cell for that field. I do not have the time to research if this is possible, use a SQLMonitor* and experiment. Or (much simpler) set up a dataset as a child (one to one) of the master so that it is fetched when the user navigates to the record. If TDataset compliance is needed (and i assume it is) then i would go about it like so: Select T.ID, T.B, T.C, CAST(SUBSTRING(T.M from 1 for 10) as VARCHAR) AS M from T ... Select T.ID, T.M from T Where T.ID = :ID (This is firebird syntax from the top of my head - not oracle). The second query being a "detail". This way you can show the user the first 10 characters (0.5 seconds) and either when the user navigates or clicking a cell, put code there to set the parameter of query 2 and open it. After a BLOB/BLOB post you would need to update that record in the "master" dataset (query 1). HTH, /Dany * It will show you when a BLOB/CLOB reference is fetched as part of a row and when the actual BLOB/CLOB is fetched.
  6. Arnaud Bouchez

    log file policies

    On server side, we log a lot of stuff... almost everything possible information. It is needed for post-mortem or post-bug forensic. Of course, our mORMot framework logs automatically all SOA calls, and all ORM and/or SQL process. And it also logs all exceptions. See https://synopse.info/files/html/Synopse mORMot Framework SAD 1.18.html#TITL_73 This was for low-level text logs. At higher level, we also log all high-level SOA calls, in form of local Sqlite3 databases. This is very efficient to make any kind of statistics, via some simple SQL SELECT. https://synopse.info/files/html/Synopse mORMot Framework SAD 1.18.html#TITLE_445