Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Slome uitvoering lus in formulier Kalender: Aanroepen ADO Recordset  (gelezen 2031 keer)

0 leden en 1 gast bekijken dit topic.

Offline Diezel

  • Oplosser
  • ****
  • Berichten: 508
  • Geslacht: Man
  • Meedenker - Initiatief nemen - Helpen oplossen...
Slome uitvoering lus in formulier Kalender: Aanroepen ADO Recordset
« Gepost op: 11 februari 2022, 21:25:06 »
Beste,

In bijlage mijn mdb.databasebestand Holidays

Het bestand omvat 1 tabel met 1400 tal rijën(testdata).
In het formulier kalender schrijf ik het gevraagde weg in de tekstboxen van de kalender.

Ik merk op dat in de lus zie formulierontwerp en vba dat de database sloom is bij gebruik naarmate er meerdere records in de tabel toeneemt
.
De runtime bij 1400 records  ligt op 140 milisecondes om het in de kalender te vullen. I7 Duo Core 3200 Ghz - Intel uit jaar 2015 en 12gb Ram.
De tijd wordt gemeten met GetTickCount.

Per record doorloopt de lus 42 keer(datumvelden en tekstboxen) om te zien dat er een match is op datum. Bij overeenkomst wordt de tekstbox gevuld met de beschrijving uit de recordset.

bij 1400 records is het dan 1400 X 42 = 58800 omwentelingen.

Wat vertraagt de snelheid? 1400 records toevoegen(testdata) met ADO in tabel gaat vliegensvlug maar het uitlezen in het formulier Kalender naar de tekstboxen duurt langer naarmate de tabel toeneemt.

Volgens mij ligt het aan het openen en sluiten van de recordset tijdens al die omwentelingen.
Elke keer dat je in de kalender een maand verschuift gebeurd hetzelfde zoals hierboven omschreven.

Is er een uitweg dat de verbinding met de tabel openblijft tot wanneer de taak voorbij is en dan sluit? of de vba code efficiënter kan gerund worden?

De opzet is om achteraf events toe te voegen zoals verjaardag of vrijë dag en om een visueel overzicht te hebben in de kalender.

Vriendelijke groeten,

Diezel



Probleem
OS: Windows 10 Home - 64 bit
Processor:  Intel(R) Core(TM) I7 - 4770 CPU 3,40 GHZ
SSD - RAM: 500 GB, 16 GB
SOFTWAREPAKKET: Office 2007

Offline dizzl

  • Ambassadeur
  • *****
  • Berichten: 2.345
  • I've Upped my standards,now,up yours!
Re: Slome uitvoering lus in formulier Kalender: Aanroepen ADO Recordset
« Reactie #1 Gepost op: 13 februari 2022, 12:30:18 »
Dag Diezel,
Als je nu eens een accdb bestand zou gebruiken?
Als nu eens een 64 bits Office zou gebruiken?
Vergelijk je dan eens?

GetTickCount werkt bij mij niet (32bits).
Ik zou gewoon de huidige tijd opvragen bij start en bij eind en daar het verschil tussen berekenen in seconde?
Leuk je nog eens te lezen btw
groeten,
dizzl

Systeem  : Intel Core i5-4440 3.1Ghz, 3.1GHz 16Giga Ram 64Bits
Software : Windows 10 professional, Avira, Office 2016 Professional

Offline Diezel

  • Oplosser
  • ****
  • Berichten: 508
  • Geslacht: Man
  • Meedenker - Initiatief nemen - Helpen oplossen...
Re: Slome uitvoering lus in formulier Kalender: Aanroepen ADO Recordset
« Reactie #2 Gepost op: 13 februari 2022, 20:47:13 »
Goede avond Dizzl,

Alvast bedankt om te reageren. de reden dat ik de oude versies 2003-2007 blijf gebruiken is omdat je dan niet moet betalen. Ik zal het in office 2007 uittesten. Aan de code is naar mij inziens niks mis mee. Tegenover mijn eerdere versies ben ik wel in snelheid op vooruit gegaan maar dit is wel momenteel het maximum. 1500 records is ook al een opgave om dit door de molen te draaien zoals bij een kalender die de 42 vakjes gaat doorlopen. Niet dat ik in de praktijk zoveel records zou nodig hebben. Je hebt nu eenmaal data nodig om de snelheid van een functie en of de gehele procedure in de module te testen. Voorts ben ik goed opgeschoten en heb ik een eeuwig durende schoolkalender met schoolvakanties, feestdagen en schoolitems in de kalende kunnen visualiseren zonder hulptabel. Een functie schrijven mbt de feestdagen, schoolvakanties, vorige en volgende lesdag, resterende lesdagen in een schooljaar is mij in de kalender ook gelukt. Ook opmaak voorzien. kleurcodes. De tabel holidays is dan om paar records toe te voegen voor eventuele extra vrije lesdagen zoals pedagoschische studiedagen. Het was een héél karwei om dit met vba en zo weinig mogelijk geschreven code  en ADO voor elkaar te krijgen. Ik heb eruit geleerd om van fouten te leren, zelfstandig te werken, refecties te doen van wat kan beter met het project enz.
Dit is zowat de basis dat ik natuurlijk meerdere mogelijkheden inzie zoals een planner voor werk en vakantiedagen, events, werkroosters enz.

In bijlage paar screenshots van de eeuwig durende basis schoolkalender zonder dat ik telkens moet afvragen elk jaar wanneer wat en wanneer valt. Planmatig een hulpmiddel om dingen in de toekomst te plannen.

Vriendelijke groeten,

Diezel
OS: Windows 10 Home - 64 bit
Processor:  Intel(R) Core(TM) I7 - 4770 CPU 3,40 GHZ
SSD - RAM: 500 GB, 16 GB
SOFTWAREPAKKET: Office 2007

Offline dizzl

  • Ambassadeur
  • *****
  • Berichten: 2.345
  • I've Upped my standards,now,up yours!
Re: Slome uitvoering lus in formulier Kalender: Aanroepen ADO Recordset
« Reactie #3 Gepost op: 14 februari 2022, 19:04:42 »
ik begrijp waarom je dit doet, Diezel mijn tijd is ( in afwachting tot mijn pensionering 2028 ) beperkt.
sorry hiervoor.
dizzl
Systeem  : Intel Core i5-4440 3.1Ghz, 3.1GHz 16Giga Ram 64Bits
Software : Windows 10 professional, Avira, Office 2016 Professional

Offline Diezel

  • Oplosser
  • ****
  • Berichten: 508
  • Geslacht: Man
  • Meedenker - Initiatief nemen - Helpen oplossen...
Re: Slome uitvoering lus in formulier Kalender: Aanroepen ADO Recordset
« Reactie #4 Gepost op: 14 februari 2022, 23:06:15 »
Dag Dizzl,

Ik heb het uitgetest met office 2007 Enterprise 64 bits en een import gedaan van tabel + formulier en modules om een accdb bestand aan te maken. Eerste resultaten van de test: Bij office 2003 een fractie(20-40ms) beter dan in office 2007.
Op een oude laptop(10jr) duurde de run rond de 250ms, het dubbele van mijn bestaande PC setup(jaartal 2015) die rond de 75 - 125ms over doet.

Door het feit dat ik meerdere geschreven vba functies aanroep en alsmede de connectie naar de tabel en de opmaak van de tekstvakken in de kalender, verlies men ook  beetje snelheid.

Het is eigen aan de maandkalender. Bij een dagelijkse en of wekelijkse weergave zal de snelheid weer toenemen. Met de methode Me.Repaint kan ik vlot de maandkalender verschuiven naar andere maanden of jaren.

Vriendelijke groeten,

Diezel

 
OS: Windows 10 Home - 64 bit
Processor:  Intel(R) Core(TM) I7 - 4770 CPU 3,40 GHZ
SSD - RAM: 500 GB, 16 GB
SOFTWAREPAKKET: Office 2007

Offline Diezel

  • Oplosser
  • ****
  • Berichten: 508
  • Geslacht: Man
  • Meedenker - Initiatief nemen - Helpen oplossen...
Re: Slome uitvoering lus in formulier Kalender: Aanroepen ADO Recordset
« Reactie #5 Gepost op: 23 februari 2022, 17:22:02 »
Beste,

***PROBLEEM OPGELOST!***

Problemen ivm slome werking van de subroutine in formulier zijn opgelost. Ik laat de gebruiker zelf bepalen wat hij/zij wil bekijken.
De meerwaarde bij gebruik van  selectievakjes zal een functie in de lus al dan niet uitvoeren.
Databaseverbinding gebeurd via de subroutine in het formulier dan extern aanroepen in module.
Met formulier Weekly verloopt de subroutine met lus héél vlot.
Met de maandelijkse weergave in formulier gaat prima. Mijn voorkeur gaat naar de wekelijkse weergave waardoor de snelheid bij het bladeren op zijn hoogst is. Na aantal grondige testen is het niet verstandig om in een maandelijkse kalender alle data en daarbij horende functies door de molen te draaien. Dit kan, wel deels snelheid inleveren bij het bladeren indien je alle functies aanroept. Er zijn dan meer omwentelingen en vergelijkingen nodig bij een maandelijkse dan bij een wekelijkse kalender. Het was een hele beleving in het programmeren geweest om zelf User-Defined Functions te schrijven om dit project op een goed einde te brengen. Het internet staat vol van maandkalenders in Excel. Toch vond ik geen kalender die eeuwig durende feestdagen, schoolvakantiedagen, resterende exacte lesdagen rekening houdend met schoolvakanties, feestdagen, extra paar schoolvakantiedagen, enz... op een visuele wijze in Acces presenteert. In de tekstboxen is het ook mogelijk om lesitems, taken, presentatie's, toetsen en examens weer te geven. In formulier timer laat ik de dag van vandaag in slow motion weergeven zodat snelheid van pinken niet storend is maar om aandacht te vestigen. Vandaar heb ik mij in dit project in verdiept en mijn tanden in gezet om zelf aan de slag te gaan om dit onderwerp van het topic mogelijk te maken. Het is een stevige basis om een digitale klasagenda voor persoonlijk gebruik uit te rollen.

Vriendelijke groeten Diezel

OS: Windows 10 Home - 64 bit
Processor:  Intel(R) Core(TM) I7 - 4770 CPU 3,40 GHZ
SSD - RAM: 500 GB, 16 GB
SOFTWAREPAKKET: Office 2007

 


www.combell.com