[VB] Laden van buttons loopt traag

Pagina: 1
Acties:

  • GhandiHarder
  • Registratie: Februari 2003
  • Laatst online: 20:01
Beste mensen, ik zit met een probleem in Visual Basic 6.0. Ik zal eerst het e.e.a. even toelichten;
Een paar maanden geleden zijn we op school begonnen met programeren in Basis en vervolgens in Java. Na de vakken afgesloten te hebben vond het allemaal reuze interessant en ben ik eens verder gaan kijken. Na wat gezocht te hebben bleek Visual Basic een taal waar je makkelijk in kon stappen, met veel opties. Ik heb een beginnersboek gekocht en stukje bij beetje ben ik mezelf wegwijs aan het maken. Na wat kleine applicaties ben ik met een groter project begonnen; een kassa applicatie (POS). Een programma wat (in de hele verre toekomst) de kassa op mijn werk (snackbar) eventueel zou gaan vervangen. Begrijp me niet verkeerd; ik snap best dat daar veel, goede, pakketten beschikbaar voor zijn, maar dit is op de eerste plaats bedoeld ter zelfontwikkeling, maar ik vind het 10 maal leuker om 'met een doel' iets te maken, ipv 'zomaar'. Ik ben dus een beginneling, alle opbouwende kritiek is welkom.

Genoeg gelult, mijn probleem: De applicatie bestaat uit een scherm met hoofdgroepen en als je daarop klikt komen daarbinnen de artikelen te staan. Mijn probleem is vrij simpel: het gaat niet snel genoeg. als ik op een hoofdgroep klik, lijkt het ongeveer een halve seconde te duren voordat de artikelen in beeld komen. Hoe meer atikelen hij moet laden, des te langer het duurt.
Om de artikelen te laden gebruik ik de volgende code:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Sub vulknoppen()
On Error Resume Next

' haal uit tj_knoppen de artikelen die bij de hoofdgroep horen
Adodc2.RecordSource = "SELECT * FROM tj_knoppen Where knopHoofdgroep=" & hoofdgroep & ""
Adodc2.Refresh

' haal alle buttons weg
Dim a As Integer
For a = 0 To 41
cmdKnop(a).Visible = False
Next a

'Vul Knoppen
Do Until Adodc2.Recordset.EOF
Dim nummer As Integer
Dim naam As String

' haal de omschrijvingen op bij de artikelen
Artikelen.RecordSource = "SELECT Omschijving FROM Artikelen Where id=" & Adodc2.Recordset!knopArt & ""
Artikelen.Refresh

nummer = Adodc2.Recordset!knopNr
naam = Adodc2.Recordset!knopArt
cmdKnop(nummer).Caption = Artikelen.Recordset!Omschijving
cmdKnop(nummer).Tag = Adodc2.Recordset!knopArt
cmdKnop(nummer).Visible = True
Adodc2.Recordset.MoveNext
Loop


End Sub


Alle artikelen worden dus in een command button getoont, waar je op kunt klikken om ze toe te voegen.
Ik weet dus niet waar de vertraging aan ligt. Er staan ongeveer 300 artikelen in de db, lijkt me niet erg veel. Misschien is Access te traag voor dit soort toepassingen. Ik weet dus niet niet hoe en waar ik moet zoeken. Als het geheel vaag is of niet duidelijk, wil ik best de code (of de exe) online gooien.
Wie wil mij helpen?

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Ipv voor ieder artikel appart de omschrijving enzo op te halen, kan je niet beter een volledige recordset ineens ophalen? Dan voer je maar 1 query uit, daar zit het probleem!

Going for adventure, lots of sun and a convertible! | GMT-8


  • Ashtaroth
  • Registratie: December 2003
  • Laatst online: 25-09-2019
Idd, zoals Snake zegt: de 2e query samenvoegen bij de 1e middels een join op knopArt. Op de manier zoals je het nu doet doe je onnodig veel queries op de database, 300 queries (aantal artikelen) te veel om precies te zijn. Het verklaart tevens het feit dat de tijd toeneemt met het aantal artikelen; elk extra artikel leidt tot een extra database query.

  • GhandiHarder
  • Registratie: Februari 2003
  • Laatst online: 20:01
Ashtaroth schreef op dinsdag 26 juni 2007 @ 00:36:
Idd, zoals Snake zegt: de 2e query samenvoegen bij de 1e middels een join op knopArt. Op de manier zoals je het nu doet doe je onnodig veel queries op de database, 300 queries (aantal artikelen) te veel om precies te zijn. Het verklaart tevens het feit dat de tijd toeneemt met het aantal artikelen; elk extra artikel leidt tot een extra database query.
Jemig. Super bedankt! Het werkt! Dankjulle!