8.
victuan
4255
14.05.10 07:00
Сейчас в теме
Обнаружил вторую ошибку - если в с выгружаемом значении присутствует апостроф ('), то тоже происходит ошибка. Это и понятно, т.к. апостроф используется при АДО для указания операндов. Предлагю перед выгрузкой заменять апостроф на другой символ (напр. на двойную кавычку).
В качестве пустой даты предлагаю выгружать любую дату ранее "начала времен".
Вот мой код для исправления обработки:
нСтр = Тз.КоличествоСТрок(); //<------- добавил
Для счУ=1 по Тз.КоличествоСТрок() Цикл
СтрокаИнсерт="";
Для СчХ=1 по Тз.КоличествоКолонок() Цикл
Тип=ТипыКолонок[СчХ];
ЗнНач=Тз.ПолучитьЗначение(СчУ,СчХ);
Если Тип="Ч" Тогда
Зн=СтрЗаменить(Строка(ЗнНач),".",",");
ИначеЕсли Тип="Д" тогда
Зн=СокрЛП(Строка(ЗнНач));
ИначеЕсли Тип="П" тогда
Зн=СтрЗаменить(СокрЛП(Строка(ЗнНач)),"'",""""); //<------- добавил СтрЗаменить(...
ИначеЕсли Тип="д" тогда //<------- добавил
Зн=?(ПустоеЗначение(ЗнНач)=0,СокрЛП(Строка(ЗнНач)),"30.12.99"); //<------- добавил
Иначе
Зн=СокрЛП(Строка(ЗнНач));
КонецЕсли;
СтрокаИнсерт=СтрокаИнсерт+","+"'"+Зн+"'";
КонецЦикла;
СтрокаИнсерт=Сред(СтрокаИнсерт,2);
//попытка
Command.CommandText = "
|INSERT INTO [TempAdoTable] VALUES ("+СтрокаИнсерт+")";
Command.Execute();
//исключение
// сообщить("строка "+счУ+" " +СтрокаИнсерт,"!!")
//конецПопытки;
Если прав(счУ,2) = "00" Тогда //<------- добавил для информирования долгого процесса
состояние("Записано в Excel "+счУ+" строк из "+нСтр);
КонецЕсли;
Конеццикла;