Ik heb een stukje code in MS Access VBA dat een aantal variabelen in een zelf-gedefinieerde type vult en die naar een recordset overzet om in een tabel te inserten.
Werkte allemaal perfect met de laatste 32 bits Office versie, de 64 bits Office versie crasht.
Wat blijkt het probleem: een van de variabelen vul ik niet. Die is dan met een lege string gevuld. Als ik die aan de recordset toeken dan crasht Access.
Maar als ik die variabele specifiek met een lege string vul, dan gaat het wel goed.
Dit gaat fout, met een crash op .Fields("Status") = dh.Status.
dh.Status is gevuld met "" (een lege string).
Als ik de comment bij 'dh.Status = "" weghaal en die dus expliciet met een lege string vul gaat het goed.
Iemand bekend met dit gedrag? Moet je nu in 64 bits VBA altijd alle variabelen specifiek vullen voordat je ze aan een recordset toekent?
Werkte allemaal perfect met de laatste 32 bits Office versie, de 64 bits Office versie crasht.
Wat blijkt het probleem: een van de variabelen vul ik niet. Die is dan met een lege string gevuld. Als ik die aan de recordset toeken dan crasht Access.
Maar als ik die variabele specifiek met een lege string vul, dan gaat het wel goed.
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
| Type DELIV_HEAD_type
ID As LongLong
Delivery_ref As String
cust_nr As String
Country As String
Ship_type As String
Destination As String
Order_ref As String
Status As String
End Type
Dim dh As DELIV_HEAD_type
dh.Delivery_ref = Trim(Mid(sLine, 1, 8))
dh.cust_nr = Trim(Mid(sLine, 12, 10))
dh.Country = Trim(Mid(sLine, 23, 4))
dh.Ship_type = Trim(Mid(sLine, 28, 4))
dh.Destination = Trim(Mid(sLine, 33, 50))
'dh.Status = ""
Set rs = New ADODB.Recordset
rs.Open "DELIV_HEAD", CurrentProject.Connection, adOpenDynamic, adLockPessimistic, adCmdTable
With rs
.AddNew
.Fields("Delivery_ref") = dh.Delivery_ref
.Fields("cust_nr") = dh.cust_nr
.Fields("Country") = dh.Country
.Fields("Ship_type") = dh.Ship_type
.Fields("Destination") = dh.Destination
.Fields("Status") = dh.Status
.Update
End With |
Dit gaat fout, met een crash op .Fields("Status") = dh.Status.
dh.Status is gevuld met "" (een lege string).
Als ik de comment bij 'dh.Status = "" weghaal en die dus expliciet met een lege string vul gaat het goed.
Iemand bekend met dit gedrag? Moet je nu in 64 bits VBA altijd alle variabelen specifiek vullen voordat je ze aan een recordset toekent?
Signatures zijn voor boomers.



