Потеря длинных целых чисел при вставке Excel VBA SQL в базу данных Access - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть CSV, содержащий длинные числа (например, 3-4 миллиарда), которые я хотел бы вставить их в базу данных доступа через ADOBD sql в Excel. Код работает, но все эти числа становятся пустыми, когда я открываю таблицу в базе данных Access.

Я дважды проверил в Designed View в Access, что тип доступа "Double" в доступе, и я понятия не имею, почему длинные интергеры будут потеряны. Могу ли я попросить вашего руководства по этому вопросу, пожалуйста? Код был упрощен, но ключевой момент заключается в том, как я мог бы что-то сделать в строке INSERT INTO, чтобы заставить ее считывать длинные числа в базу данных доступа? Большое спасибо.

Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rst As ADODB.Recordset
Dim MyConn
Dim strSQL, strSQL2, strSWL3 As String
Dim InsertDate As Date
Dim FileDate As String

Set cnn = New ADODB.Connection
MyConn = ThisWorkbook.Path & Application.PathSeparator & TARGET_DB

Set cnn = New ADODB.Connection
With cnn
  .Provider = "Microsoft.ACE.OLEDB.12.0"
  .Open MyConn
End With

Set cmd = New ADODB.Command
Set cmd.ActiveConnection = cnn

Set rst = New ADODB.Recordset
rst.Open "SELECT [Date] FROM [Text;DATABASE=C:\].[Source.csv];", cnn, adOpenDynamic, adLockOptimistic

strSQL = "INSERT INTO [Daily] "
strSQL = strSQL & "SELECT [Date] As WDate, Code, [#Sold] As QtySold"
strSQL = strSQL & "  FROM [Text;DATABASE=C:\].[TargetDB.csv]"
cmd.CommandText = strSQL
cmd.Execute

Set cmd = Nothing
rst.Close
Set rst = Nothing
cnn.Close
Set cnn = Nothing
...