VB6 - ontwerpfase

Status
Niet open voor verdere reacties.

Ruuten

Gebruiker
Lid geworden
14 mei 2008
Berichten
12
Ben een programma aan het schrijven in VB6 (VB98)
Een van de verwerkingen is het lezen van een bestand, zijn gegevens aanpassen en in een tweede bestand wegschrijven.
Probleem 1; Tijdens de testuitvoering stopt het programma op onregelmatige momenten en toont dan de zandloper terwijl in mijn formulier de teller stil blijft staan. Door "Ctrl-Break" te drukken en daarna "F5" zie ik het formulier opnieuw verder tellen.
Probleem 2; Eén bestand van 222.218 records werd op die manier overgekopieerd. Een tweede bestand van 323.684 records laat mijn programma na het copieren van record 142827 van het scherm verdwijnen. (De aanpassingen aan het programma zijn verloren indien niet tijdig opgeslagen.) Na het opnieuw starten van het programma vanaf record 142828 verdwijnt het programma opnieuw van het scherm na record 230078.
 
Welkom bij Helpmij.nl

We hebben hier een VB sectie, dus daar gaat de vraag nu heen :)
 
Laatst bewerkt:
hello.

Uehm, je eerste probleem:
Tijdens de testuitvoering stopt het programma op onregelmatige momenten en toont dan de zandloper terwijl in mijn formulier de teller stil blijft staan. Door "Ctrl-Break" te drukken en daarna "F5" zie ik het formulier opnieuw verder tellen.
Bij welke code blijft het stilstaan? Er kan een (kleine) fout zijn waardoor er dus op grote schaal problemen komen. Wat code zou handig zijn.

Eén bestand van 222.218 records werd op die manier overgekopieerd. Een tweede bestand van 323.684 records laat mijn programma na het copieren van record 142827 van het scherm verdwijnen. (De aanpassingen aan het programma zijn verloren indien niet tijdig opgeslagen.) Na het opnieuw starten van het programma vanaf record 142828 verdwijnt het programma opnieuw van het scherm na record 230078.
je was met het programma 222218 bestanden aan het kopieeren? :shocked:
nou, dat is 4,50(...)^-4% van het geheel - opzich niet heel "erg"? Ik bedoel dit niet verkeerd/gemeen/naar, maar mischien heb ik je vraag verkeerd begrepen. Nogmaals, code zou handig zijn.

Succes:thumb:


[edit] je werkt met grote getallen, mischien een overflow van een integer? deze is 16 bits, signed (dus 2 bytes) en loopt niet tot oneindig.
datatypes: http://msdn.microsoft.com/en-us/library/7f5ztkz3(VS.80).aspx[/edit]
 
Laatst bewerkt:
hello.

Uehm, je eerste probleem:

Bij welke code blijft het stilstaan? Er kan een (kleine) fout zijn waardoor er dus op grote schaal problemen komen. Wat code zou handig zijn.


je was met het programma 222218 bestanden aan het kopieeren? :shocked:
nou, dat is 4,50(...)^-4% van het geheel - opzich niet heel "erg"? Ik bedoel dit niet verkeerd/gemeen/naar, maar mischien heb ik je vraag verkeerd begrepen. Nogmaals, code zou handig zijn.

Succes:thumb:


[edit] je werkt met grote getallen, mischien een overflow van een integer? deze is 16 bits, signed (dus 2 bytes) en loopt niet tot oneindig.
datatypes: http://msdn.microsoft.com/en-us/library/7f5ztkz3(VS.80).aspx[/edit]

Er staat wel degelijk EEN BESTAND VAN 222.218 RECORDS
 
hello.

Uehm, je eerste probleem:

Bij welke code blijft het stilstaan? Er kan een (kleine) fout zijn waardoor er dus op grote schaal problemen komen. Wat code zou handig zijn.


je was met het programma 222218 bestanden aan het kopieeren? :shocked:
nou, dat is 4,50(...)^-4% van het geheel - opzich niet heel "erg"? Ik bedoel dit niet verkeerd/gemeen/naar, maar mischien heb ik je vraag verkeerd begrepen. Nogmaals, code zou handig zijn.

Succes:thumb:


[edit] je werkt met grote getallen, mischien een overflow van een integer? deze is 16 bits, signed (dus 2 bytes) en loopt niet tot oneindig.
datatypes: http://msdn.microsoft.com/en-us/library/7f5ztkz3(VS.80).aspx[/edit]

Zoals reeds doorgegeven, gaat het hier wel om RECORDS.
Hier wat code, evenwel zonder dim's of Global's, het zou me te ver lijden.
AantalBG7 as long
andere aantallen as double

Private Sub cmdParAf_Click()
' datbg7 moet verder werken !
Open7
Prompt = "Starten met "
VrRec = InputBox(Prompt, "Afwerken vanaf ...", VrRec)
frmUtil.datPD5.Recordset.Move (VrRec)
cmdParReg5_Click
End Sub

Private Sub cmdParReg5_Click()
'Overdracht gegevens uit Parochieregister 2005/6
'naar bestand 2007.
AantalVelden = frmUtil.datBG7.Recordset.Fields.Count
For I = 0 To AantalVelden
ReDim Preserve Werkveld(I)
If I = 0 Or I = 22 Or I = 32 Then
Werkveld(I) = 0
Else
Werkveld(I) = ""
End If
Next I

Beginner = True ' eerste record staat altijd klaar
For AntRec3 = VrRec To AntLees3

If AntRec3 >= VrRec Or VrRec = 1 Then
If Beginner = False Then
datPD5.Recordset.MoveNext
End If
AantalBG7 = AantalBG7 + 1
frmUtil.txtAantalBG7 = AantalBG7
frmUtil.datBG7.Recordset.AddNew
' recordnummer meegeven
frmUtil.datBG7.Recordset.Fields(0).Value = AantalBG7
'Zet2005
Zet2006
'
InpakVeld
VulHuwId
UitpakVeld
UpdRec
frmUtil.Refresh
Beginner = False ' eerste record is nu voorbij
End If
Next AntRec3
End Sub

Private Sub Zet2006()
' Parochiegegevens 2006 overzetten naar BS
' 2 = doopplaats
datBG7.Recordset.Fields(4).Value = datPD5.Recordset.Fields(1).Value
' 3 = geboortedatum
datBG7.Recordset.Fields(10).Value = datPD5.Recordset.Fields(2).Value
' 4 = doopdatum
datBG7.Recordset.Fields(7).Value = datPD5.Recordset.Fields(3).Value
' 5 = akte/blz
datBG7.Recordset.Fields(6).Value = datPD5.Recordset.Fields(4).Value
' 6 = naam dopeling
datBG7.Recordset.Fields(9).Value = datPD5.Recordset.Fields(5).Value
' 7 = voornaam dopeling
datBG7.Recordset.Fields(8).Value = datPD5.Recordset.Fields(6).Value
' 8 =naam vader
datBG7.Recordset.Fields(19).Value = datPD5.Recordset.Fields(7).Value
' 9 = voornaam vader
datBG7.Recordset.Fields(18).Value = datPD5.Recordset.Fields(8).Value
' 13 = naam moeder
datBG7.Recordset.Fields(29).Value = datPD5.Recordset.Fields(12).Value
' 14 = voornaam moeder
datBG7.Recordset.Fields(28).Value = datPD5.Recordset.Fields(13).Value
' 11 = leeftijd vader
datBG7.Recordset.Fields(22).Value = datPD5.Recordset.Fields(10).Value
' 12 = geboorteplaats vader
datBG7.Recordset.Fields(21).Value = datPD5.Recordset.Fields(11).Value
' 10 = vader afkomstig van (ex)
datBG7.Recordset.Fields(23).Value = datPD5.Recordset.Fields(9).Value
' 16 = leeftijd moeder
datBG7.Recordset.Fields(32).Value = datPD5.Recordset.Fields(15).Value
' 17 = geboorteplaats moeder
datBG7.Recordset.Fields(31).Value = datPD5.Recordset.Fields(16).Value
' 15 = moeder afkomstig van (ex)
datBG7.Recordset.Fields(33).Value = datPD5.Recordset.Fields(14).Value
' 18 = Peter
datBG7.Recordset.Fields(71).Value = datPD5.Recordset.Fields(17).Value
' 19 = meter
datBG7.Recordset.Fields(77).Value = datPD5.Recordset.Fields(18).Value
' 20 = opmerking
datBG7.Recordset.Fields(94).Value = datPD5.Recordset.Fields(19).Value
End Sub

Private Sub InpakVeld()
'AantalVelden = datBG7.Recordset.Fields.Count
For InPak = 0 To AantalVelden - 1
If datBG7.Recordset.Fields(InPak).Value <> "" Then
Werkveld(InPak) = datBG7.Recordset.Fields(InPak).Value
Else
Werkveld(InPak) = ""
End If
Next InPak
End Sub
Private Sub UitpakVeld()

For InPak = 0 To AantalVelden
If Werkveld(InPak) <> "" Then
datBG7.Recordset.Fields(InPak).Value = Werkveld(InPak)
Else
'datBG7.Recordset.Fields(InPak).Value = Null
End If
Next InPak
End Sub

Private Sub LeesPD5()
On Error GoTo ErrorHandler

If AntRec3 <> AntLees3 Then
datPD5.Recordset.MoveNext
'Naam dopeling in textveld plaatsen
frmUtil.txtRecord5 = frmUtil.datPD5.Recordset.Fields(4).Value
AntRec3 = AntRec3 + 1
Else
Leeg3 = True
End If
frmUtil.Refresh
Exit Sub

ErrorHandler:
MsgBox Err.Number & " " & Err.Description
End Sub

Private Sub Schryven()
ZetRecKlaar
UpdRec
End Sub

In MODULE1

Sub ZetRecKlaar()
On Error GoTo ErrorHandler
AantalBG7 = AantalBG7 + 1
If AantalBG7 = 149748 Then
frmUtil.txtAantalBG7 = AantalBG7
End If
frmUtil.txtAantalBG7 = AantalBG7
frmUtil.datBG7.Recordset.AddNew
' recordnummer meegeven
frmUtil.datBG7.Recordset.Fields(0).Value = AantalBG7
For V = 1 To 131 'na aanvulling Corr en oorsprData
'For V = 1 To 129
If LeesSort = 1 Then 'van waar komen de gegevens 5=1, 6=2
frmUtil.datBG7.Recordset.Fields(V).Value = frmUtil.datBG5.Recordset.Fields(V).Value
Else
frmUtil.datBG7.Recordset.Fields(V).Value = frmUtil.datBG6.Recordset.Fields(V).Value
End If
Next V
frmUtil.Refresh
'datBG7.Recordset.Update
Exit Sub

ErrorHandler:
MsgBox Err.Number & " " & Err.Description

End Sub
Sub UpdRec()
On Error GoTo ErrorHandler
frmUtil.datBG7.Recordset.Update
Exit Sub

ErrorHandler:
MsgBox Err.Number & " " & Err.Description
End Sub
 
oh, dit gaat over VBA? (dus vb in excell, word, access of powerpoint?) :)

ik zie zo snel de fout niet...
 
Het helpt in dit soort gevallen om een heel project (dus alle bestanden) te uploaden. Op deze manier 'van het scherm lezen' is het heel lastig om een fout te vinden, want je gebruikt bijvoorbeeld veel functies e.d. die doorverwijzen.

Als je de algemene VB errorhandler op de optie 'stop op alle fouten' zet (ook de fouten die je normaliter afvangt), dan weet je of je met iets als een 'Overflow' error te maken hebt oid.
Die optie zit ergens onder de rechtermuisknop (als je klikt op code).

P.S. Ik heb even geen VB6 tot mijn beschikking en moet dus wat vaag blijven...
 
Het helpt in dit soort gevallen om een heel project (dus alle bestanden) te uploaden. Op deze manier 'van het scherm lezen' is het heel lastig om een fout te vinden, want je gebruikt bijvoorbeeld veel functies e.d. die doorverwijzen.

Als je de algemene VB errorhandler op de optie 'stop op alle fouten' zet (ook de fouten die je normaliter afvangt), dan weet je of je met iets als een 'Overflow' error te maken hebt oid.
Die optie zit ergens onder de rechtermuisknop (als je klikt op code).

P.S. Ik heb even geen VB6 tot mijn beschikking en moet dus wat vaag blijven...

Ik zoek dat verder uit hoe dat zit met die alg.errorhandler!!
Alvast bedankt!
 
Heb net even kunnen kijken in VB6...

De optie zit onder de rechtermuisknop (op code klikken) en dan Toggle > Break on All Errors.

Ook al heb je een 'On Error Goto ...' of 'On Error Resume Next', met deze optie aan zal VB wel een foutmelding geven en kun je daarna debuggen.

Succes!
 
(De aanpassingen aan het programma zijn verloren indien niet tijdig opgeslagen.) .

Als je dan toch de instellingen wijzigt zou ik ook even de volgende wijzigen:
Tools/Options/Environment
When a program starts
Save Changes
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan