Ik heb een textfile waarin op 1 regel een hele (~620.000 posities) zijn weggeschreven. Deze textfile wil ik inlezen in een acces database waarin steeds delen van de regel worden weggeschreven als record, net zo lang tot de hele regele verwerkt is. Ik heb hiervoor de volgende code geklust:
Het stukje code doet precies wat het moet doen, dus functioneel gaat alles goed. Maarrrr de performance is nogal beroerd. Ik heb hem een nachtje (~8 uur) laten aanstaan en toen had 'ie slechts 7000 records (van 64 posities) weggeschreven.
Ik vermoed dat het komt doordat 'ie een dergelijk lange string moet inlezen, maar weet niet zo goed hoe ik de performance kan verbeteren. Ik heb al geprobeer om niet een MyFile.Close te doen om zo de regel ingelezen te houden, maar dan krijg ik een error in het readline statement.
Tips?
code:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
| Option Compare Database
Private Sub Draai_query_Click()
MsgBox ("Het ophalen van de data start, dit kan geruime tijd duren")
Dim RCS As DAO.Recordset
Dim DBS As DAO.Database
Dim Teller As String
Dim Tekst As String
Dim Rekening As String
Dim Controlegetal1 As String
Dim Controlegetal2 As String
Dim Naam As String
Dim Zakenpartner As String
Dim fso, MyFile
Set DBS = CurrentDb()
Set RCS = DBS.OpenRecordset("Resultaat")
Set fso = CreateObject("Scripting.FileSystemObject")
Teller = 2049
'MsgBox (Tekst)
Do While Not Teller > 620545
Set MyFile = fso.OpenTextFile("C:\ANC.txt")
Tekst = MyFile.Readline
Rekening = Nz(Mid(Tekst, Teller, 7))
Controlegetal1 = Nz(Mid(Tekst, Teller + 7, 1))
Controlegetal2 = Nz(Mid(Tekst, Teller + 8, 1))
Naam = Nz(Mid(Tekst, Teller + 16, 32))
Zakenpartner = Nz(Mid(Tekst, Teller + 48, 16))
RCS.AddNew
RCS!Rekening = Rekening
RCS!Controlegetal1 = Controlegetal1
RCS!Controlegetal2 = Controlegetal2
RCS!Naam = Naam
RCS!Zakenpartner = Zakenpartner
RCS.Update
MyFile.Close
Teller = Teller + 64
Loop
RCS.Close
MsgBox ("Ophalen gegevens voltooid")
End Sub |
Het stukje code doet precies wat het moet doen, dus functioneel gaat alles goed. Maarrrr de performance is nogal beroerd. Ik heb hem een nachtje (~8 uur) laten aanstaan en toen had 'ie slechts 7000 records (van 64 posities) weggeschreven.
Ik vermoed dat het komt doordat 'ie een dergelijk lange string moet inlezen, maar weet niet zo goed hoe ik de performance kan verbeteren. Ik heb al geprobeer om niet een MyFile.Close te doen om zo de regel ingelezen te houden, maar dan krijg ik een error in het readline statement.
Tips?