Hallo Allemaal,
Bestaande applicatie in D7. Ik probeer een ADOdataset (+100000 recors) weergegeven in een dbgrid "editable" te maken om wachttijd bij het verversen na aanpassingen zo klein mogelijk te maken. dwz de updates/inserts worden als afzonderlijke sql statements naar het RDMS gestuurd en het relevante record in dataset wordt "handmatig" bijgewerkt.
ik heb de volgende insteken geprobeerd:
- clientdataset:
werkt op zich (al is het editable maken van alle velden niet altijd een even vanzelfsprekend) maar de laadtijd is onaanvaardbaar lang.
- dataset kopieeren naar een inMemory table (tvirtualdataset, tkbmmemtable):
werkt goed wat betreft het editable maken van de velden maar het overnemen van de oorspronkelijke dataset ( in feite veld voor veld, record voor record) duurt relatief lang
- De connection van de ADOdataset op nil te zetten en de velden expliciet op readonly=false te zetten:
De dataset gedraagt zich dan grotendeels als een losse in memory dataset waarvan de meeste velden kunnen worden veranderd en waaraan ook records kunnen worden toegevoegd.
Laadtijd is relatief kort , maar een deel van de velden blijft niet veranderbaar in de zin dat de velden wel zijn te veranderen maar dat de ingevulde waarden niet allenaal "persistent" zijn. Welke velden dat zijn is mede afhankelijk van de achterliggende query en het gebruikte RDMS
de snelste optie tot nu toe
- De ADOdataset openen, saven als XML bestand, het rowsetschema in het XML aanpassen en vervolgens de XML dataset weer laden (save/load via ADTG ipv XML is een stuk sneller maar ik weetniet hoe je de fieldsettings kan verandeen) in een ADTG bestand):
Alles editable en de totale laadtijd is binnen aanvaardbare grenzen....maar zo'n tijdelijk tussenbestand vind ik erg onelegant.
Al met al zou je denken dat het aanpassen van de veldeigenschappen toch ook op een minder omslachtige manier zou moeten kunnen worden gerealiseerd. Het aantal aanpasbare veld eigenschappen in een ADOdataset/ADOquery is alleen erg beperkt. Ik zie niet zo gauw hoe ik eventueel verborgen eigenschappen toegankelijk zou kunnen maken.
De enige eigenschap die in het attributetype van het XML-veld hoeft te worden aangepast/toegevoegd om een veld editbale te maken is rs:maydefer='true' . Die eigenschap wordt meegegeven bij een export naar XML dus die zou ergens als property verstopt moeten zitten in de oorspronkelijke t(ADO)dataset. Of is dat wat kort door d bocht gedacht? iemand een idee?
Bookmarks