All Forums
 Категория Visio
 Форум Вопросы и ответы
 Проблема с обновлением данных
Author Previous Topic Topic Next Topic  

elena

41 Posts

Posted - 03/17/2008 :  10:15:31
Подскажите, где в файле "записываются" данные о связях с источником внешних данных. Проблема следующая: данные нескольких книг Excel были связаны с фигурами на листе Visio, затем подключения к источникам данных были удалены.Но теперь при открытии файла Visio открывается окно "Обновление данных", в котором только один из удаленных источников предлагается обновить, но при этом при обновление подключиться не удается, настройка не активизируется. Просто убрать флажок "Показывать это диалоговое окно при открытии файла" нельзя, поскольку должны быть установлены и обновляться связи с др. источниками. Из образцов все лишние образцы данных удалены.

Tumanov

Russia
1198 Posts

Posted - 03/17/2008 :  16:04:24
Данные о связях должны быть записаны в связанных шейпах либо в связанном мастер-шейпе.
Откройте шейп-лист того шейпа, который теперь должен быть не связанным, и удалите в нем из секции User-defined Cells строку User.ODBCConnection. User.ODBCChecksum тоже не нужна.
Скорее всего при открытии проверяются все ранее подключенные шейпы. После первой же ошибки Add-On останавливается и дальнейших ошибок просто не показывает. Так что после "чистки" одного шейпа у Вас может начать срабатывать следующий и так до тех пор, пока не почистите все. Может быть лучше будет сначала убрать флажок "... при открытии файла" и вручную пощелкать по шейпам для обновления связей. Тогда хоть будет видно, в каких шейпах ошибки. А после их чистки можно будет опять поставить флажок на место.
Go to Top of Page

elena

41 Posts

Posted - 03/19/2008 :  07:39:10
К сожалению, ни в одном из шейпов нет этих строк. Мало того, при связывании такие строки и не появляются, появляются только новые строки в Shape Data, и соответственно новые данные фигуры. Но они никак не мешают.
Go to Top of Page

elena

41 Posts

Posted - 03/24/2008 :  13:21:26
Мало того, после удаления всех шейпов, которые были связаны с внешними данными, все равно запрашивается обновление. Причем только нескольких источников, связи с остальными не осталось.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 03/24/2008 :  15:39:35
Судя по тому, что строки называются "Shape Data", у Вас стоит Visio 2007. Поэтому и мой совет не подошел.
В Visio 2007 связи с БД хранятся не в шейпах, а во встроенных объектах RecordSet. Так что увидеть их, как раньше, в шейп-листе нельзя. Поэтому удаляются связи через Add-On типа визарда.
К сожалению, у меня нет сейчас под рукой установленного Visio 2007, поэтому не могу по пунктам рассказать, на что нажимать. Но там, вроде, все просто было. В тот момент, когда Visio сообщает, что связи не действуют, должна быть доступна кнопка типа "отремонтировать связь". И одно из предложений будет - удалить связи.
Go to Top of Page

elena

41 Posts

Posted - 04/08/2008 :  08:14:07
Очень жаль, что у Вас нет под рукой Visio2007... Я понимаю, что при обновлении связи должна быть возможность изменить настройки, и в моем случае эта кнопка "черная", т.е. якобы активная. Но для работающих связей она действительно активна, т.е. открывает соответствующее окно, а для неработающих - нет.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 04/08/2008 :  17:03:28
Ну так, уже поставил... :)
Пытаюсь смоделировать Вашу ситуацию.
Завел два файла Excel. Выделил в них именованные области (по паре строк).
Состыковал два шейпа с одним файлом, два шейпа с другим файлом.
Сохранил. Закрыл.
Переименовал один из файлов Excel.
Теперь при открытии Visio выскакивает окошко Refresh Data.
В окошке две строки, указывающие каждая на свой файл источник.
Селектирую тот источник, который переименовал и нажимаю Refresh.
После Security уведомления нажимаю OK и мне, естественно, говорят "Unable to connect to the data".
Но внизу есть кнопочка Skip refresh, которая позволяет отказаться от обновления и вернуться на первое окошко Refresh Data.
В этом окошке я могу нажать кнопку Configure и в окошке Configure Refresh нажать Change Data Source и выбрать другой источник данных.
-----
Вот в такой последовательности Вы можете сказать, что у Вас не получается?
-----
Можно еще там, где выскакивает сообщение с ошибкой нажать на кнопку More Info. При этом будет выведено что-то типа
"Error 80004005: The Microsoft Office Access database engine could not find the object 'D:\Documents and Settings\TTT\My Documents\Book2.xlsx'. Make sure the object exists and that you spell its name and the path name correctly".
Что у Вас там печатается?
Go to Top of Page

elena

41 Posts

Posted - 04/11/2008 :  08:45:54
Большое спасибо за внимание к моим мучениям...
В моем случае кнопка More Info не активна, как и Configure...
Так что ничего-то у меня не печатается.
Могу выслать этот "нехороший" документ на экспертизу, если есть интерес и время.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 04/11/2008 :  15:22:18
Можно было бы взглянуть, но без источников данных он может показать совсем другую картину...
Но все равно, пожалуй, пришлите. На ttt@post.rzn.ru
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 04/12/2008 :  15:01:06
Такое впечатление, что в Add-On вкралась какая-то ошибочка. Вы как-то так удалили источник данных, что разработчики не рассчитывали на такой метод :) Теперь при попытке переконфигурировать связь с отсутствующими данными он просто ломается и не производит никаких действий. Кнопочка на самом деле активна, но она ничего не делает.
Если влезть в коллекцию датарекордсетов макросом и поудалять их, лишние связи, естественно, отваливаются и все начинает работать.
Для этого достаточно запустить примерно такой макрос
Sub ttt()
Debug.Print ActiveDocument.DataRecordsets.Count
Dim drs As Visio.DataRecordset
For Each drs In ActiveDocument.DataRecordsets
Debug.Print drs.CommandString
Next
For i = ActiveDocument.DataRecordsets.Count To 1 Step -1
ActiveDocument.DataRecordsets(i).Delete
Next
End Sub
Однако тут надо быть осторожным!!!
1. Этот макрос удалит все коннекты - и рабочие и нерабочие. Так что Вам нужно их как-то различать и удалять только нерабочие. Может быть по CommandString, может еще как-то. Может диалоговое окошко понадобится вставить.
2. Внедрение макроса в документ может сказаться на безопасности. Visio начнет выдавать предупреждения о наличии макросов при следующем открытии документа. Так что может встроить макрос не в нужный, а в другой документ, но тогда работать, естественно, не с ActiveDocument.
А на будущее (пока ребята не исправят ошибочку) наверное лучше будет сначала отключать источник (переконфигурированием), а только потом удалять его. Тогда такая ситуация не возникнет.
Go to Top of Page

elena

41 Posts

Posted - 04/14/2008 :  11:54:34
Большое спасибо!
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)