На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> Как убрать ошибку одновременного доступа "OLE error 800AC472" при работе с Excel , Проблема возникает при одновременной работе программ с 1 файлом
    Помогите решить проблему :
    Задача: готовое приложение (А) - поставщик данных, экспортирует их или в Excel через DDE или по ODBC. На выбор.
    Второе приложение (Б) работает с текстовыми файлами , считывает один файл и пишет результаты в другой.
    Третье приложение (В) - генерирует команды (вызов процедур с передачей данных) которые через OLE передаю на Сервер ом (приложение -(С)).
    Приложения (А) , (Б) и (В) не мои с ними ничего не сделаещь.
    Сервер, который реализовал как ActiveX - exe, должен на базе данных из программ (А) , (Б) и (В) производить расчеты и записывать результаты в текстовый файл. (с которым работает приложение (Б)).
    Так как все данные представляют из себя строки с несколькими данными то вся работа идет с таблицами.
    Использовал Excel через OLE (не через компонент). Вроде все работает, но проблема возникновения ошибок при попытке:
    Использовал Excel через OLE (не через компонент). Вроде все работает, но проблема возникновения ошибок при попытке
    1) 2-х программ (А) и Сервера работать с страницами одной книги Excel которая является фактически базой данных. Ошибка : "Фильтр сообщений выдал диагностику о занятости приложения"
    2) Попыток пользователя что либо делать руками с ячейками Excel на любом листе. При этом ведь всегда адресую ячейки не через ActiveCell а напрямую типа Sheet1.Cells[1,2].Value, тем не менее ошибка вида:
    "OLE error 800AC472"
    Эти ошибки, не то чтоб останавливают программу, но забивает весь экран сообщенями (об ошибках). Наверное можно все сообщения убрать через try но это как-то не нормально, ведь ошибка то остается ? Хотя вроде требуемые действия программа исполняет.
    Как с этим боротся (если не отказываться от Excel) ?
    - думаю может поможет если Сервер будет работат с Excel через DDE (писать все в буфер и скидывать буфер в зависимости от требований или в Cells или Range? Или это я ошибаюсь и это не устранит проблемму?
    Excel выбирался как вариант базы данных с возможностью (и необходимостью) легкого изменения формул расчета различных переменных которые используют данные получаемые из различных источников.
      Excel - это НЕ база данных, со всеми вытекающими. Отказывайся от одновременнной работы нескольких программ с одним файлом Excel'я, ни к чему хорошему это не приведет.
        А что еще использовать учитывая что у меня в файле Excel 24 страницы с данными и каждая страница - это нужно делать отдельную базу , так как наборы столбцов - разные.
        У меня не большой опыт програмирования и мне сложно представить чем заменить Excel с его листовым методом организации данных, и какую базу можно быстро освоить чтоб реализовать вывод в нее данных ( как уже писал можно от поставщика данных получать их и по DDE и ODBC)
        И Excel это возможность оперативно менять разные параметры и формулы расчета (обработки данных)
          OBDC драйвера есть практически под все базы данных.
          Я кстати не говорил, что нужно совсем отказаться от EXcel'я. К тому же ты сам сказал, что
          Цитата cheska @
          Приложения (А) , (Б) и (В) не мои с ними ничего не сделаещь.


          так что тут ты ничего не сможешь изменить. Я лишь сказал, что тебе нужно отказаться
          Цитата jack128 @
          от одновременнной работы нескольких программ с одним файлом Excel'я
            Сделал пока через DDE. Так вроде переписывать ничего особо не нужно, и шлет устойчиво, изгалялся как мог, вроде ничего не падает.
            ExpandedWrap disabled
              {Экспортируем данные в Excel}
                    if DdeClientConv1.SetLink('EXCEL', 'D:\[test001.xls]L002')
                    and DdeClientConv1.OpenLink then
                    begin
                      try
                      xlRange:='R'+inttostr(fRow)+'C1:R'+Inttostr(eRow)+'C11';
                      DDEClientItem1.DdeItem :=xlRange;
                      DdeClientConv1.PokeData(DDEClientItem1.DdeItem, PChar(Buffer));
                      finally
                      DdeClientConv1.CloseLink;
                      end;
                    end;

            Вопрос остался нужно ли (и зачем если нужно) обрамлять это все командами в начале процедуры DdeClientConv1.Create(Self) а в конце DdeClientConv1.Destroy.
            И как часто стоит делать DdeClientConv1.OpenLink {... } DdeClientConv1.CloseLink . Как я понимаю только если меняю Link ?
              Скажите, а никто не знает как "перевести" механизм DDE например в ODBC?

              Есть программа "А", которая умеет выдавать данные только по DDE.
              Есть программа "Б", которая умеет принимать данные по SNMP, ODBC, текстовый-файл

              Нада их поддружить
                Цитата Mikola_17 @
                Нада их поддружить

                ну напиши третью программу, которая будет уметь принемать данные от программы A и передовать их программе Б
                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0533 ]   [ 15 queries used ]   [ Generated: 18.07.25, 01:14 GMT ]