Добрый день при Insert столкнулась с проблемой выгрузки данных. В частности с конвертацией данных.
Вопрос, можно ли избежать конвертации данных, так как в таблице много столбцов, все разных типов...
Вот что я имею:
Вопрос, можно ли избежать конвертации данных, так как в таблице много столбцов, все разных типов...
Вот что я имею:
Код |
---|
Sub DWH_Update_12() 'Выгружаем в DWH 'Производит подключение к БД и выполняет какой-либо скрипт без подключение библиотеки ACTIVEX data ojects 6.0 ' Dim cn As Object Dim cmd As Object Dim strSQL As String Dim sh1 As Worksheet Dim iRow As Long Dim ADOErr, r Set cn = CreateObject("ADODB.Connection") 'cn.Provider = "Microsoft.Jet.OLEDB.4.0" cn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=usr;Data Source=dc1-findb01\fin;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=MP1806SV;Use Encryption for Data=False;Tag with column collation when possible=False" On Error GoTo CnErrorHandler cn.Open 'Явно начинаем транзакцию во избежание режима AutoCommit=ON cn.BeginTrans 'Создаем команду Set cmd = CreateObject("ADODB.Command") cmd.ActiveConnection = cn ' Workbooks("Pushkin_card.xlsm").Activate Set sh1 = ActiveWorkbook.Sheets("Встречи") sh1.[A1].Select Set r = ActiveCell.CurrentRegion ' For iRow = 2 To r.Rows.Count cmd.CommandText = "Insert into usr.supr.checkin_b(" _ & "kod,kod_prm,MR,OC,locality,adress,Open_PRM,number_of_windows_b,Format ,Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9,Col10,Col11,Col12,Col13,Col14,Col15, Col16, Col17, Col18, Col19, Col20, Col21, Col22, Col23, Col24, Col25, Col26, Col27, Col28, Col29, Col30, Col31, Col32" _ & ")Values (" _ & "convert(float,(replace('" & Cells(iRow, 1).Value & "',',','.')))," & "convert(float,(replace('" & Cells(iRow, 2).Value & "',',','.')))," '" & .Cells(iRow, 3) &, "'& "convert(datetime,(replace('" & Cells(iRow, 3).Value & "','dd.mm.yyyy','yyyy-mm-dd')),103)," & "convert(float,(replace('" & Cells(iRow, 5).Value & "',',','.'))))" ' 'MsgBox cmd.CommandText 'test = r.Cells(iRow, 2).Value 'MsgBox "Iter: " & iRow & " " & test ' cmd.Execute ' Next iRow ' cn.CommitTrans ' cn.Close ' Exit Sub ' CnErrorHandler: For Each ADOErr In cn.Errors 'Отладчик ошибок подключения MsgBox "№ ошибки " & ADOErr.Number & Chr(10) & _ "Описание: " & ADOErr.Description & Chr(10) & _ "Источник: " & ADOErr.Source, vbCritical Debug.Print "№ ошибки " & ADOErr.Number & Chr(10) & _ "Описание: " & ADOErr.Description & Chr(10) & _ "Источник: " & ADOErr.Source Next cn.Close Set cn = Nothing ' End Sub |