Re: Нетерпеливый Excel... как быть?

Возьмем простой пример: создадим отчет в любом месте, в набор данных вывалим таблицу, где порядка 200 строк. Создадим функцию, которая просто пробегает по всем записям этой таблицы и копирует их в другую таблицу. А теперь бланк Excel, к отором укажем служебные слова Источника данных новой таблицы и выполнить эту функцию. Запускаем отчет и что видим: ПУСТОЙ БЛАНК. Дело ясное, эта проблема уже неоднократно обсуждалась, необходимо поставить Sleep. НО!!! Функция работает меньше 1 сек, а бланк начинает формироваться, если поставить задержку порядка 5 сек, и то будет врать, так как пропускает часть данных. Чтобы иметь гарантию, что ничего не потеряется, необходимо поставить задержку порядка 10 сек. А теперь вопрос: у нас есть отчет, в котором функция выполняется порядка 2 минут, при этом стоит Sleep 30000 (30 сек) и все равно ПРОПУСКАЕТ часть данных. Сколько же ставить задержку??? Как обойти эту ситуацию? И хотелось бы знать подробно весь механизм формирования отчета, а то создается печатление, что это ваша недоработка.
P.S. Версия TechnologiCS 4.7.1, WinXP. Простите что не по требованиям, но если нужны подробные примеры, то могу дать

Re: Нетерпеливый Excel... как быть?

Процедура, написанная в базе MS Access, вызывается так:

Call AccessApplication.Run(ИмяПроцедуры)

Процедура Implement вызывается так:

Call ActiveWorkbook.Worksheets(НомерЛиста).Implement

Re: Нетерпеливый Excel... как быть?

Это называется подробно? И где ответ на главный вопрос? Как быть? У нас люди, которые формируют отчет даже и не проверяют его. Они верят, что ТКС не может обмануть  :(

Re: Нетерпеливый Excel... как быть?

Если бы был ответ на вопрос "как быть?", он был бы написан.
Подробно расписывать весь алгоритм формирования это очень долго, да и не к чему для рассматриваемой ситуации, а так же сам алгоритм является ноу-хау. Но отдельные его части можно и подробно расписать, если это поможет справиться с проблемой. Напиши конкретно что подробней хочешь знать?
С базой Access идет работа через ADO, так же на AccessApplication имеет ссылка чтоб вызывать пользовательские функции.
Проблема во взаимодействии приложений: выполнили функцию через AccessApplication, которая сделала изменения в базе, а через ADO эти изменения видны не сразу. Готовы выслушать ваши предложения как справиться с этой проблемой.

Re: Нетерпеливый Excel... как быть?

1. Как мне зацепиться к Access из Implement?
2. А если функция по окончании своей работы создает копию таблицы, которая и будет в служебном поле источник данных?
P.S. Что значит: "изменения видны не сразу" опишите подробнее, желательно с примером

Re: Нетерпеливый Excel... как быть?

Станислав писал(а):
1. Как мне зацепиться к Access из Implement?

Используя библиотеку ADO. Имя базы и путь в листе ComplSheet в именованной области RGN_Data.


Станислав писал(а):
2. А если функция по окончании своей работы создает копию таблицы, которая и будет в служебном поле источник данных?

Это и есть:

Вячеслав Стёпин писал(а):
... изменения в базе

которые не сразу видны через ADO.


Станислав писал(а):
P.S. Что значит: "изменения видны не сразу" опишите подробнее, желательно с примером

Подробнее:

Станислав писал(а):
Возьмем простой пример: создадим отчет в любом месте, в набор данных вывалим таблицу, где порядка 200 строк. Создадим функцию, которая просто пробегает по всем записям этой таблицы и копирует их в другую таблицу. А теперь бланк Excel, к отором укажем служебные слова Источника данных новой таблицы и выполнить эту функцию. Запускаем отчет и что видим: ПУСТОЙ БЛАНК. Дело ясное, эта проблема уже неоднократно обсуждалась, необходимо поставить Sleep. НО!!! Функция работает меньше 1 сек, а бланк начинает формироваться, если поставить задержку порядка 5 сек, и то будет врать, так как пропускает часть данных. Чтобы иметь гарантию, что ничего не потеряется, необходимо поставить задержку порядка 10 сек. А теперь вопрос: у нас есть отчет, в котором функция выполняется порядка 2 минут, при этом стоит Sleep 30000 (30 сек) и все равно ПРОПУСКАЕТ часть данных.

А так же

Станислав писал(а):
эта проблема уже неоднократно обсуждалась

Ничего более добавить не могу.

Re: Нетерпеливый Excel... как быть?

А если в качестве источника данных использовать функцию, которая возвращает готовую таблицу? Будет пропускать без задержки?

Re: Нетерпеливый Excel... как быть?

Станислав писал(а):
1. Как мне зацепиться к Access из Implement?


Sub Implement()

Dim DatConct ' As ADODB.Connection
Dim FullPathMDB

Set DatConct = CreateObject("ADODB.Connection")

FullPathMDB = ActiveWorkbook.Worksheets("ComplSheet").Range("RGN_Data").Value

DatConct.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FullPathMDB
...
End Sub

Станислав писал(а):
А если в качестве источника данных использовать функцию, которая возвращает готовую таблицу? Будет пропускать без задержки?

Я в последнее время так и делаю ИсточникДанных = "GetDataSource MyDS" здесь

please-change-link

Re: Нетерпеливый Excel... как быть?

Пишет: отсутствует лист GetDataSource result!

Re: Нетерпеливый Excel... как быть?

мы удалили REFERENCE))) из-за этого

Re: Нетерпеливый Excel... как быть?

вроде пока не врет :D