У меня есть таблица Excel со столбцами name, value и Date.Я хочу поместить эти значения и даты в базу данных.Мне удалось создать соединение с базой данных с помощью следующего кода.Стратегия в этом коде состоит в том, чтобы войти в базу данных с именем, а затем на следующем шаге перейти к основной таблице с уникальным идентификатором этого имени.Затем с этим идентификатором обновите значения и дату в базовой таблице.Проблема состоит в том, чтобы связать таблицу Excel так, чтобы она принимала значения и даты из этой таблицы Excel с заданным именем.
Name Value Date
12345_ABC_DefGeh 12345678 01.11.2018
...... около 15 значений.
Sub fixing()
Dim pReference As String
Dim pFixingValue As Double
Dim pFixingdate As Date
Dim pReferenceUnderlying As String
Dim Con As ADODB.Connection
Dim Q As New AblSQLQuery
Dim SQL As String
Dim uniqueid As Long ' uniqueid is the unique code of this instrument
Dim uniqueidUnderlying As Long
Dim QuoteType As Long
Dim Numero As Long
Dim Stmt As ADODB.Recordset
Dim bInsert As Boolean
Dim Ins As SR2COM.Instrument
Dim InsUnderlying As SR2COM.Instrument
Dim Ins2 As SR2COM.Instrument
'
If isDeveloper() = True Then
pReference = "12345_ABC_DefGeh"
End If
'
Engine.Risque.Initialise
Pref.GetUserID Operator, OperatorGroup
Set Con = Engine.xvz.ConnectADO
' get uniqueid and set instrument
uniqueid = Engine.Instrument(pReference).Code
Set Ins = Engine.Instrument(uniqueid)
If pReferenceUnderlying <> vbNullString Then
UniqueidUnderlying = Engine.Instrument(pReferenceUnderlying).Code
End If
' select latest fixing entry
SQL = "SELECT *" & _
" FROM ABV_local_fixings a" & _
" WHERE Code = " & uniqueid
If SicovamUnderlying <> 0 Then
SQL = SQL & _
" AND underlying = " & uniqueUnderlying
End If
SQL = SQL & _
" AND observation = (SELECT MAX(observation)" & _
" FROM ABV_local_fixings b" & _
" WHERE b.code = a.code"
If UniqueidUnderlying <> 0 Then
SQL = SQL & _
" AND b.underlying = a.underlying"
End If
SQL = SQL & _
")" & _
" ORDER BY numero DESC"
Set Stmt = Con.Execute(SQL)
' End If
Numero = Stmt!Numero
QuoteType = Stmt!QuoteType
UniqueidUnderlying = Stmt!Underlying
Set InsUnderlying = Engine.Instrument(UniqueidUnderlying)
If pReferenceUnderlying = vbNullString Then
pReferenceUnderlying = InsUnderlying.Reference
End If
check if insert or update
SQL = "SELECT *" & _
" FROM ABV_local_fixings a" & _
" WHERE Code = " & uniqueid
If UniqueidUnderlying <> 0 Then
SQL = SQL & _
" AND underlying = " & UniqueidUnderlying
End If
SQL = SQL & _
" AND observation = TO_DATE('" & Format(pFixingdate, "ddmmyyyy") & "', 'DDMMYYYY')"
Set Stmt = Con.Execute(SQL)
If Stmt.EOF Then
bInsert = True
End If
' insert/update fixing
If bInsert = True Then
SQL = "INSERT INTO ABV_local_fixings" & _
" (numero, code, observation, underlying, value, quotetype)" & _
" VALUES (" & Numero + 1 & _
"," & Uniqueid & _
",TO_DATE('" & Format(pFixingdate, "ddmmyyyy") & "', 'DDMMYYYY')" & _
"," & UniqueidUnderlying & _
"," & pFixingValue & _
"," & QuoteType & _
")"
Else
SQL = "UPDATE ABV_local_fixings" & _
" SET value = " & pFixingValue & _
" WHERE numero = " & Numero & _
" AND code = " & Uniqueid & _
" AND observation = TO_DATE('" & Format(pFixingdate, "ddmmyyyy") & "', 'DDMMYYYY')" & _
" AND underlying =" & UniqueidUnderlying
End If
End Sub>
Проблема в том, чтобы подключить таблицу Excel, я взял этот код из аналогичного предыдущего проекта.Но это прекрасно работает, чтобы войти в базу данных и добраться до базовой таблицы.Я уверен, что небольших модификаций будет достаточно, я потратил слишком много времени, но все еще не смог решить проблему.