«Ошибка преобразования типа данных varchar в числовой» при экспорте данных из Excel в SQL Server с использованием VBA - PullRequest
0 голосов
/ 30 марта 2019

Я создал макрос в Excel для импорта и экспорта данных из SQL Server. Тем не менее, когда я пытаюсь экспортировать данные, он выдает ошибку

[Microsoft] [Драйвер ODBC SQL Server] [SQL Server]
Ошибка преобразования типа данных varchar в числовой

Код работал нормально, когда я экспортировал целые числа. Ошибка возникла, когда я попытался экспортировать реальные числа.

Dim gil, gibnr, gul, fil, fibnr, ful, qil, qibnr, qul, xil, xibnr, xul, oil, oibnr, oul, cil, cibnr, cul, nil, nibnr, nul, bul, hul, lul, indul As Long


conn.Execute "insert into dbo.Intl_LL (UWU,OBU,Profile_ID, Insured_name,   Claim_number,Claim_desc,  Event_Name,   UY, AY, AQ, Date_of_loss,   Region, CCY,    Policy_number,  Branch, LE, MPL,Claim_alert_email,     Comments,   [Large Profile Flag], [Earmark Flag],   [Tracked for Qtrly dev],  [Gross Incurred], [Gross IBNR], [Gross Ultimate], [FAC Incurred],   [FAC IBNR],   [FAC Ultimate],   [QS Incurred],[QS IBNR],[QS Ultimate],[XOL Incurred],[XOL IBNR],[XOL Ultimate],[Ceded OTH Incurred],[Ceded OTH IBNR],[Ceded OTH Ultimate],[Ceded Total Incurred],[Ceded Total IBNR],[Ceded Total Ultimate],[Net Incurred],[Net IBNR],[Net Ultimate],[Booked Ultimate],version)" & _
     "values ('" & sUWU & "', '" & sOBU & "','" & sProfile & "', '" & sInsured & "','" & sClaim & "','" & sClmdesc & "','" & sEvent & "','" & sUY & "','" & sAY & "','" & sAQ & "','" & sDOL & "','" & sRegion & "','" & sCCY & "','" & sPolnum & "','" & sBranch & "','" & sLE & "','" & sMPL & "','" & sClaimalert & "','" & sComm & "','" & sLargeF & "','" & sEarF & "','" & sTrackF & "','" & gil & "', '" & gibnr & "','" & gul & "','" & fil & "','" & fibnr & "','" & ful & "','" & qil & "','" & qibnr & "','" & qul & "','" & xil & "','" & xibnr & "','" & xul & "','" & oil & "','" & oibnr & "','" & oul & "','" & cil & "','" & cibnr & "','" & cul & "','" & nil & "','" & nibnr & "','" & nul & "','" & bul & "', '" & ver & "')"

Я гарантировал, что переменные с типом данных Long в VBA имеют тип numeric(7, 11) в SQL Server.

Не стесняйтесь спрашивать дополнительную информацию о проблеме. Спасибо.

1 Ответ

0 голосов
/ 30 марта 2019

MySQL должен предполагать, что значения должны быть того же типа, что и столбец "mycol", и преобразовывать их без вывода сообщений.- То же самое происходит при попытке сравнить INT со строкой.

Однако вы должны стараться не заключать в кавычки значения, которые должны быть числами.Даже если MySQL автоматически преобразует некоторые из них, это стоит несколько циклов, и поведение может быть непоследовательным.

Итог: всегда оставляйте числа без кавычек и используйте только строки и даты в кавычках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...