betekenis foutmelding vba

Status
Niet open voor verdere reacties.

daveke

Gebruiker
Lid geworden
18 jan 2001
Berichten
161
Hoi,

Ik heb in vba een module gemaakt met een aantal lussen.
Hoe die precies werkt doet er niet toe.

Maar op een gegeven moment loopt ie vast.

Heb dan via een Msgbox de Err.number gevraagd en dan krijg ik een zeer hoog negatief getal.
Iets van -25659635320

Iemand enig idee wat dit betekend

Alvast bedankt
 
Geplaatst door daveke
Hoi,

Ik heb in vba een module gemaakt met een aantal lussen.
Hoe die precies werkt doet er niet toe.

Maar op een gegeven moment loopt ie vast.

Heb dan via een Msgbox de Err.number gevraagd en dan krijg ik een zeer hoog negatief getal.
Iets van -25659635320

Iemand enig idee wat dit betekend

Alvast bedankt
Als je de code hier deponeert, dan maak ik dat wel in orde.

Dennis.
 
Laatst bewerkt:
Op deze manier moet hij ongeveer 900000 records doorlopen.
Hij start goed maar stopt na ongeveer 500000 met die rare foutmelding



Sub ZetStamnr()

Dim rs As New ADODB.Recordset
Dim strsql As String


strsql = "select * from Cl20b_kwart4_2004_020205"
rs.Open strsql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

On Error GoTo fout
With rs

Do While Not .EOF

If !Veld2 = "00037" Then
var = Right(!Veld4, 6)
Else: GoTo 0
End If

Do Until !Veld2 = "00023"
.MovePrevious
Loop

!Stamnummer = var
.MoveNext

Do While !Veld2 <> "00023" And Not .EOF
!Stamnummer = var
.MoveNext
Loop

0:
.MoveNext

Loop
'rs.Close

End With

fout:
MsgBox Err.Number
End Sub
 
Ik denk dat ik weet waarom ik die foutmelding krijg.
De database wordt veel te groot (2GB).
Maar dat zou toch helemaal niet mogen ???
 
Hai, :D

Een error code is nog nietszeggend laat de VBE ook de omschrijving tonen in de msgbox:
Code:
MsgBox Err.Number & " " & Err.Number

Je bent inderdaad tegen de datalimiet aangelopen van Access. Deze is voor zover ik weet voor (bijna) alle versies sowieso vanaf 2000 (opslaan unicode) 2 GB!

Maar dat is jou probleem op zich niet lijkt mij vanaf zo'n 200mb grote database wordt deze wat mij betreft al niet werkbaar meer. (Qua snelheid)

Dus jou database zal wel niet vooruit te branden zijn.

Er zit ongetwijfeld iets mis in jou database waardoor deze aan het bloggen (groeien) slaat terwijl je feitelijk voor jou gevoel niet al teveel spectaculairs doet..(het uitvinden van de oorzaak is 9 van de 10 keer zeer moeilijk te vinden in grote databases)

Maar goed als je zoveel data wilt gebruiken moet je overstappen op SQL-Server of de gratis SQL-Lite (MSDE)

Deze kan meer hebben en is sowieso supersnel..(en slaat zijn data anders op zodat er sowieso al meer in kan. ;)

Veel succes! :thumb:
 
Ik zal toch verder moeten met Access .
Op het werk heb ik niet te kiezen welke software er gebruikt wordt.
Maar het is toch niet normaal dat de database zo groeit.

Oorspronkelijk is de db zo'n 60 MB en gewoon door één kolom op te vullen met 6 tekens wordt halfweg al 2 GB
 
Hai, :D

Vreemd dat een bedrijf niet in bezit is van SQL-server in deze tijd..maar goed dat kan.

Ben het met je eens dat het niet normaal is en het zal ongetwijfeld met de gehanteerde methode te maken hebben.

Helaas vul ik nooit (in zulke getalen) data in cellen en daarom herken ik dit probleem ook niet.

Wellicht dat één van de Access mannen nog een goed idee heeft over het beter invullen van de door jou gewenste procedure...wellicht een SQL-instructie..

Maar goed hier haak ik af! :thumb:
 
Hallo daveke,

Sorry, ik heb het heel druk gehad. Ik zie dat Joost Verdaasdonk je al te hulp schiet(ik ben trouwens van hem gewend dat hij mensen heel graag snel en goed helpt:thumb: )

Ik heb in vba een module gemaakt met een aantal lussen.
Hoe die precies werkt doet er niet toe.
'Hoe die precies werkt doet er niet toe.'
Oke, maar toch een kleine opmerking hierover:
Eigenlijk is de Do While/Loop(Do While Not .EOF/Loop)-statement ervoor bedoeld om data op een sequentiele wijze te zoeken. Je zou m.i. beter de statement 'seek' kunnen gebruiken.

Je hebt trouwens ook: 'While Not .EOF/Wend', dus zonder de 'Do' en 'Loop'

Als de structuur van je Do/Loop niet goed is, dan gerake je gauw in een oneindige lus, dit verklaart waarom je programma vastliep.

Oorspronkelijk is de db zo'n 60 MB en gewoon door één kolom op te vullen met 6 tekens wordt halfweg al 2 GB

Er is dus sprake van redundantie, hoe is je database dan opgebouwd?
(het valt niet mee om een goede database te bouwen, er moet aan zoveel zaken rekening gehouden worden. Mijn kennis daarover is ook niet meer zo paraat)

Access is inderdaad niet voor zeer omvanrijke databases bedoeld.

Dennis.
 
Bedankt voor de reacties Joost en Dennis.

Ik vertek van een lege database.

Daarin importeer ik een textfile (ongeveer 50 MB groot) die gecreëerd is op een mainframe.

De tabel bevat 4 velden: alle vier tekstvelden met respectievelijke lengte van 6, 5, 50 en 65 tekens.

Daarna voeg ik in de ontwerpweergave een kolom toe aan de tabel (Stamnummer) 6 tekens lang.
De database is nu ongeveer 65 MB.

Daarna start ik de module. Na ongeveer 500000 records gevuld te hebben loop ik dus tegen de datalimiet aan.

Thuis heb ik een gelijkaardige database gemaakt met dezeflde structuur. Heb er 1600000 records ingestopt, de module gestart.

Na 3 minuutjes was alles mooi opgevuld.

Hoe verklaar je dat ???
Snap er niets van.

De database was 270MB groot geworden.
 
Hoi Dennis,

Op mijn pc thuis heb ik de fout nooit gehad, enkel op het werk.

En het is op het werk dat ik het nodig heb.
Dus is het nog niet opgelost

Zou de fout dan kunnen liggen bij de textfile die ik importeer?

groetjes
 
Geplaatst door daveke
Hoi Dennis,

Op mijn pc thuis heb ik de fout nooit gehad, enkel op het werk.

En het is op het werk dat ik het nodig heb.
Dus is het nog niet opgelost

Zou de fout dan kunnen liggen bij de textfile die ik importeer?

groetjes
Hoi Daveke,

O, op het werk gaat het dus niet goed en bij jou thuis wel.

Het zou best aan dat textfile dat je importeerde kunnen liggen. Het kwam immers uit een mainframe. Wat voor een mainframe is het, een IBM misschien? IBM hanteert namelijk de EBCDIC codering en dat kan wel eens problemen geven op een PC. Dat file zou eerst geconverteerd moeten worden voor het gebruik op een pc. Maar anders haak ik hier ook af net als Joost.

Dennis.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan