Я не уверен, есть ли какая-либо документация в поддержку моего ответа, но согласно документации Microsoft для строкового типа данных :
Вы должны заключить String literal
в кавычках (" "
).
Ваши продолжения не работали, потому что они находились в вашей строке, пока вы не начнете добавлять биты row.Cells(x).Value
.
Для продолжения чтобы быть правильным, согласно документации MS для Visual Basi c Как: разбить и объединить операторы :
Используйте символ продолжения строки, который является подчеркиванием (_
) в точке, в которой вы хотите, чтобы линия разорвалась. Перед символом подчеркивания должен стоять пробел и сразу за ним следует знак конца строки (возврат каретки) или (начиная с версии 16.0) комментарий, за которым следует возврат каретки.
Примечание: Эта документация предназначена для Visual Basic
. Чтобы сделать его релевантным для Visual Basic for Applications
, вы должны объединить (&
) строку с символом продолжения строки, если вы продолжаете строковый литерал на новой строке; например:
"This string will be continued" & _
" on this line."
Чтобы правильно использовать продолжение строки с предоставленной строкой, оно должно выглядеть следующим образом:
Sql = "insert IGNORE into nhc (date,dealer_code,name,area_executive,address1,address2,address3,area_territory_id,area_territory_name,micro_market_id,micro_market_name,town,postcode,state,area_name,distributor,remark,may_2020_ga,may_2020_awtu10,may_2020_sellin,may_2020_awmi10,jun_2020_ga,jun_2020_awtu10," & _
" jun_2020_sellin,jun_2020_awmi10,jul_2020_ga,jul_2020_awtu10,jul_2020_sellin,jul_2020_awmi10,aug_2020_ga,aug_2020_awtu10,aug_2020_sellin,aug_2020_awmi10,dealer_class,may_2020_projected_dealer_class,jun_2020_projected_dealer_class,jul_2020_projected_dealer_class,aug_2020_projected_dealer_class," & _
" current_clas_awtu_target,current_class_sellin_target,current_class_awmi_target,dealer_status,disc_date,ambitious_dealer?_y/n,shopfront_signage,may_2020_mnp_awtu10,jun_2020_mnp_awtu10,jul_2020_mnp_awtu10,aug_2020_mnp_awtu10,may_2020_ereload_sellin,jun_2020_ereload_sellin,jul_2020_ereload_sellin,aug_2020_ereload_sellin,may_2020_hero_sell_through,jun_2020_hero_sell_through,jul_2020_hero_sell_through,aug_2020_hero_sell_through" & _
" ,may_2020_ga_with_ocr,jun_2020_ga_with_ocr,jul_2020_ga_with_ocr,aug_2020_ga_with_ocr)values" & _
" ('" & row.Cells(1).Value & "', '" & row.Cells(2).Value & "','" & row.Cells(3).Value & "', '" & row.Cells(4).Value & "', '" & row.Cells(5).Value & "','" & row.Cells(6).Value & "', '" & row.Cells(7).Value & "', '" & row.Cells(8).Value & "','" & row.Cells(9).Value & "', '" & row.Cells(10).Value & "', '" & row.Cells(11).Value & "','" & _
row.Cells(12).Value & "', '" & row.Cells(13).Value & "', '" & row.Cells(14).Value & "','" & row.Cells(15).Value & "', '" & row.Cells(16).Value & "', '" & row.Cells(17).Value & "','" & row.Cells(18).Value & "', '" & row.Cells(19).Value & "', '" & row.Cells(20).Value & "','" & row.Cells(21).Value & "', '" & row.Cells(22).Value & "', '" & row.Cells(23).Value & "','" & row.Cells(24).Value & "', '" & row.Cells(25).Value & "', '" & _
row.Cells(26).Value & "','" & row.Cells(27).Value & "', '" & row.Cells(28).Value & "', '" & row.Cells(29).Value & "','" & row.Cells(30.Value & "', '" & _
row.Cells(31).Value & "', '" & row.Cells(32).Value & "','" & row.Cells(33).Value & "', '" & row.Cells(34).Value & "', '" & row.Cells(35).Value & "','" & row.Cells(36).Value & "', '" & row.Cells(37).Value & "', '" & row.Cells(38).Value & "','" & _
row.Cells(39).Value & "', '" & row.Cells(40).Value & "', '" & row.Cells(41).Value & "','" & row.Cells(42).Value & "', '" & row.Cells(43).Value & "', '" & row.Cells(44).Value & "','" & row.Cells(45).Value & "', '" & row.Cells(46).Value & "', '" & row.Cells(47).Value & "','" & row.Cells(48).Value & "', '" & row.Cells(49).Value & "', '" & row.Cells(50).Value & "','" & row.Cells(51).Value & "', '" & row.Cells(52).Value & "', '" & row.Cells(53).Value & "','" & row.Cells(54).Value & "', '" & row.Cells(55).Value & "', '" & _
row.Cells(56).Value & "','" & row.Cells(57).Value & "', '" & row.Cells(58).Value & "', '" & row.Cells(59).Value & "','" & row.Cells(60).Value & "', '" & row.Cells(61).Value & "')"
Вы заметите, что теперь каждая строка заключена в кавычки , затем пробел и подчеркивание. При форматировании на SO символ подчеркивания теперь белого цвета, показывая, что он больше не является частью строкового литерала (красный), поскольку он больше не заключен в кавычки.
С учетом всего Я согласен с ответом Brax о том, что было бы «лучше» разбить вашу строку на более мелкие части и объединить более мелкие части вместе, а также использовать параметры для уменьшения размера строки.