I’m writing VBA code for an Access DB. I’m using DAO.QueryDef to insert values I read from a file. Heres the insert:
Public Const sqlInsertPtfValues As String = "INSERT INTO EPtfValues ([AVIPortfolio], [Aggregation], [CubeType], [ValuationDate], [SensitivityType], [SensitivityLevel], [SourceType], [SourceComment], [VariableName], [VariableValue], [Timestamp]) " _
& "VALUES (" _
& "[ptf], " _
& "[aggr], " _
& "[ct], " _
& "[vd], " _
& "[st], " _
& "[sl], " _
& "[srctype], " _
& "[srcComment], " _
& "[vn], " _
& "[vv], " _
& "[ts]);"
(This is set as a global const string in VBA, working fine in various functions.)
Now, the parameter sl is a positive or negative integer. In my import function, I calculate three different values and want to insert them to the current stress level AND the negative thereof.
Here’s the crucial part:
Set insertSensi = db.CreateQueryDef(vbNullString, sqlInsertPtfValues)
...
(other parameters are set in between)
insert.Parameters("vn") = "XXX"
insert.Parameters("vv") = xxx
insert.Parameters("sl") = lvl
insert.Execute
insert.Parameters("sl") = -1 * lvl
insert.Execute
insert.Parameters("vn") = "YYY"
insert.Parameters("vv") = yyy
insert.Parameters("sl") = lvl
insert.Execute
insert.Parameters("sl") = -1 * lvl
insert.Execute
insert.Parameters("vn") = "ZZZ"
insert.Parameters("vv") = zzz
insert.Parameters("sl") = lvl
insert.Execute
insert.Parameters("sl") = -1 * lvl
insert.Execute
Now what is odd:
I works fine for XXX, but for all other variables, only the positve level is being inserted.
For XXX I see lvl and -lvl with value xxx in the DB, but for YYY and ZZZ I only see level lvl.
What is going on?
Best,
YeOldHinnerk
PS: As this is from productive code, my sample will be altered – do not assume, that everything is 1:1.