[VB] MSHFlexGrid en paging

Pagina: 1
Acties:

  • ParaNoiMia
  • Registratie: Mei 2000
  • Laatst online: 17-09 20:28
Ik heb een VB applicatie met onderliggend een Oracle database (ADO/OLEDB koppeling). Middels een procedure in de Oracle database krijg ik een recordset terug die ik daarna wil tonen op mijn scherm.

Ik had hiervoor eerst een Listview gebruikt, maar bij 61000 records wil je niet weten wat je kwijt bent aan memory en hoe lang het duurt om die gegevens te tonen.

Ik bedacht als alternatief een MSHFlexGrid, ik zet de recordset property op de recordset die vanuit de database komt en klaar. Op zich werkt dit wel, maar...
ik heb het idee dat al die 61000 records direct over de lijn naar de client kant getrokken worden en dat er niet zoiets als paging bestaat in dit geval. Het MSHFlexGrid wordt in 1x gevuld en niet in bv blokken van 100 records en als de gebruiker scrolled dat dan de volgende 100 records worden opgehaald.

Weet iemand een manier om dit wel voor elkaar te krijgen ?
In het recordset object heeft de pagesize de waarde 10, maar dat lijkt geen effect te hebben.

Verwijderd

Geen idee, maar ik ben ook al een tijdje opzoek naar een oplossing voor dit probleem...

(ik ben bang dat er dan met cursors e.d. gewerkt moet gaan worden)

edit:
Ik werk meestal meestal met MSSQl Server

  • tus
  • Registratie: November 2000
  • Laatst online: 05-07-2012

tus

De MaxRecords property van de Recordset kun je dus het max aantal gevonden records definieren. Recordset moet wel dicht zijn om deze properties te kunnen setten.

Je zit dan nog steeds met n probleem. Hoe weet je in hemelsnaam dat die de volgende xxx-aantal records moet tonen als je op PageDown drukt in het grid???

Lijkt me dat je dus dan veel dingen handmatig moet gaan lopen bijhouden en dat er dus n sql-query is met n hoop where clause gehalte. Maar het is zeker te doen.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 17-09 08:12

Crazy D

I think we should take a look.

Er stond hier niet zo heel lang geleden een linkje naar een virtual listview. Op zich een gewone listview, behalve dan dat 'ie alleen die items inleest die daadwerkelijk zichtbaar zijn. Via een event kreeg je 'te horen' op welke regel in de listview je was, zodat je aan de hand daarvan de juiste gegevens kon tonen.
Ik heb er wel wat mee zitten spelen, ik weet alleen niet meer waarom ik uiteindelijk besloten heb 'm niet te gebruiken. Hij was wel echt supersnel (met 1000000 items in de view).
Zal eens kijken of ik 't linkje nog kan vinden...

[eitje om te vinden]
http://www.mvps.org/vbvision/grouped_demos.htm
Staat op ong. 1/4 van de pagina (naja Ctrl+F en zoeken op virtual ;))

Exact expert nodig?


  • ParaNoiMia
  • Registratie: Mei 2000
  • Laatst online: 17-09 20:28
Op zich staat er op de M$ site een artikel in die richting, maar die laat je een eigen vscroll plaatsen en dan met code de paging afvangen. Ik vind het eigenlijk van de zotte dat je bij een databound control dit met de hand zou moeten gaan doen.

http://support.microsoft.com/support/kb/articles/Q254/1/17.ASP

Ik ga die Virtual Listview even bekijken

Verwijderd

De standaard vb DBxxxxx controls zijn standaard al virtual alleen een stukje minder flexibel dan hun niet databound broertjes, wellicht een redelijk alternatief?

  • ParaNoiMia
  • Registratie: Mei 2000
  • Laatst online: 17-09 20:28
Op woensdag 10 oktober 2001 13:12 schreef Yarvieh het volgende:
De standaard vb DBxxxxx controls zijn standaard al virtual alleen een stukje minder flexibel dan hun niet databound broertjes, wellicht een redelijk alternatief?
Die standaard DBxxxx controls kan je volgens mij alleen een standaard data control aankoppelen toch ? Ik krijg mijn recordset terug vanuit een Oracle procedure (dus ik schrijf niet zelf mn Select statement), dus hoe krijg ik het resultaat in dat datacontrol ?

Volgens mij kan dat alleen met het Ado data control en het DBgrid slikt die bv weer niet.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 17-09 08:12

Crazy D

I think we should take a look.

If everything else fail's... ;) Maybe kun je de datacontrol (zo heet dat ding toch, die met de pijltjes om door de records heen te bladeren) te foppen door iets als
Set Datacontrol1.Recordset = MijnRecordsetjeinCode
doen ?
En dan daarna "gewoon" dat ding binden aan 1 van de bound dbgrid controls?
Zomaar een gedachtekronkel...

Exact expert nodig?

Pagina: 1