Выгружаем в EXCEL с помощью ADO

Наверное уже многие знают что с помощью технологии ADO можно быстро читать большие объемы информации из книг excel. Но ведь с помощью данной технологии можно так же легко создавать и заполнять файлы excel.
Неверите ? Смотрите …

Скачать ПримерADO.epf (6.91 kb)

Итак, постановка задачи: Создать с помощью механизма ADO файл excel и выгрузить в него из справочника номенклатура код и наименование.

    ИмяФайлаЭксель = "D:\Export.xls"; // Имя создаваемого файла
    
    // Собираем строку подключения
    СтрокаПодключения = "
    |Provider=Microsoft.Jet.OLEDB.4.0;
    |Data Source="+ИмяФайлаЭксель+";
    |Extended Properties=""Excel 8.0;HDR=No;"";";
    
    // Создаем объект ADOX.Catalog
    Catalog = Новый COMОбъект("ADOX.Catalog");
    Catalog.ActiveConnection = СтрокаПодключения;
    
    // Создаем таблицу и добавляем в неё два столбца
    Table = Новый COMОбъект("ADOX.Table");
    Table.Name = "Table";
    
    Table.Columns.Append("Code");
    Table.Columns.Append("Description");
    
    // Присоединяем таблицу
    Catalog.Tables.Append(Table);
    
    Table = Неопределено;
    Catalog = Неопределено;
    // Создаем соединение
    Connection = Новый COMОбъект("ADODB.Connection");    
    Connection.Open(СтрокаПодключения);
    
    Command = Новый COMОбъект("ADODB.Command");
    Command.ActiveConnection = Connection;
    Command.CommandType = 1;
        // Получаем номенклатуру для выгрузки    Запрос = Новый Запрос("
    |ВЫБРАТЬ
    |    Номенклатура.Код,
    |    Номенклатура.Наименование
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура");
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    
    // Заполняем таблицу данными выборки
    Пока Выборка.Следующий() Цикл
        Command.CommandText = "
        |INSERT INTO [Table] VALUES ('"+Выборка.Код+"','"+Выборка.Наименование+"')";
        Command.Execute();
    КонецЦикла; 
         
    // Закрываем соединение
    Command = Неопределено;
    Connection.Close();
    Connection = Неопределено;

Все, готово !

Плюсы данного способа формирования файла excel:

- Большая скорость

- Не требуется запуск самого процесса excel.exe, как это происходит в случае использования OLE-сервера excel.application, а следовательно нет необходимости отслеживать и перехватывать ошибки. Те кто использовал OLE-cоединение – тот поймет о чем я говорю, мало радости когда в случае программной или пользовательской ошибки процесс excel остается висеть в памяти.

- Не требуется самого приложения EXCEL, достаточно что бы на компьютере был установлен OLEDB провайдер Microsoft.Jet.OLEDB.4.0

Минусы тоже имеются:

- Нельзя красиво оформить ячейки – шрифт, рамки и т.д.

P.S. Возможен "комбинированный" способ: с помощбю ADO формируется файл, а затем с помощью OLE "наводится марафет".

Источник: http://infostart.ru/public/65045/

Asus-ные вопросы: XP на ноутбук Asus и другие проблемы Asus - читай на www.ROM.by.. земельные участки в калужской области. перевозки алматы, грузоперевозки казахстан. квартиры в новостройках подмосковья, продажа новостроек в подмосковье.

1С: вставка картинки в печатную форму програмно

января 26, 2010 by admin · Комментариев нет
Filed under: Новости на сайте 

Задача крайне проста — в нашем распоряжении имеется энное количество изображений (растровых или векторных, не суть важно), и мы хотим “на лету” вставить в табличный документ одно из этих изображений. Само собой, изображения хранятся в виде отдельных файлов соответствующих форматов, а имя нужного файла станет известно только в самый последний момент.
Что делать?
Можно потратить некоторое количество времени на борьбу со встроенным объектом “Картинка” и даже, чем черт не шутит, добиться какого-то положительного результата. Но можно и не добиться. Во всяком случае, я не добился.
Можно и по-другому. В глобальном модуле пишем функцию:

Функция Рисунок ( Куда,Откуда ) Экспорт  Куда.Загрузить(Откуда);КонецФункции

В шаблоне таблицы организуем “посадочное место” для картинки (это делается так: F10-Таблица-Вставить рисунок-Картинка-растянуть до нужного размера-Отмена). В свойствах полученного объекта прописываем вызов своей функции (предполагается, что Таб — это имя таблицы, а Путь — переменная процедуры печати):

Рисунок(Таб.ТекущийОбъект,Путь);

После всего этого в процедуре печати остается определить, какой графический файл нам нужен:

Путь="C:\My_NonXXX_Pix\025.jpg";
Таб.ВывестиСекцию("КартинаМаслом");

Что делать, если база данных под MS SQL ушла в Suspect Mode?

октября 28, 2009 by admin · Комментариев нет
Filed under: 1C Программирование 

Если базу силой 1С не восстановить

Восстановление путем тестирования самого SQL.

Вот некоторые команды:

DBCC CHECKDB (’database’, REPAIR_FAST)

DBCC CHECKDB (’database’, REPAIR_REBUILD)

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

DBCC CHECKDB (’database’, REPAIR_ALLOW_DATA_LOSS)

Если команда не выполняется из-за не однопользовательского режима, тогда перейти можно по команде

alter database db-name set SINGLE_USER

В своей работе столкнулся с ситуацией, когда рабочая база данных в конце дня ушла в режим "Suspect Mode". А архив был за много часов до этого. Перевести ее нормальный режим, пока не произведена починка базы, не получалось. DBCC checkdb тоже отказывалась запускаться, т.к. база в этом режиме. Замкнутый круг?

Для начала необходимо перевести базу данных в режим EMERGENCY:

EXEC sp_resetstatus ‘database’;
ALTER DATABASE database SET EMERGENCY

Потом выполнять тестирование базы:

DBCC checkdb(’database’)
ALTER DATABASE databaseSET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB (’database’, REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE database SET MULTI_USER

  • Облако

    Облако тегов требует для просмотра Flash Player 9 или выше.

  • На сайте

  • Реклама