Author |
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 останавливается и дальнейших ошибок просто не показывает. Так что после "чистки" одного шейпа у Вас может начать срабатывать следующий и так до тех пор, пока не почистите все. Может быть лучше будет сначала убрать флажок "... при открытии файла" и вручную пощелкать по шейпам для обновления связей. Тогда хоть будет видно, в каких шейпах ошибки. А после их чистки можно будет опять поставить флажок на место. |
|
|
elena
41 Posts |
Posted - 03/19/2008 : 07:39:10
|
К сожалению, ни в одном из шейпов нет этих строк. Мало того, при связывании такие строки и не появляются, появляются только новые строки в Shape Data, и соответственно новые данные фигуры. Но они никак не мешают. |
|
|
elena
41 Posts |
Posted - 03/24/2008 : 13:21:26
|
Мало того, после удаления всех шейпов, которые были связаны с внешними данными, все равно запрашивается обновление. Причем только нескольких источников, связи с остальными не осталось. |
|
|
Tumanov
Russia
1198 Posts |
Posted - 03/24/2008 : 15:39:35
|
Судя по тому, что строки называются "Shape Data", у Вас стоит Visio 2007. Поэтому и мой совет не подошел. В Visio 2007 связи с БД хранятся не в шейпах, а во встроенных объектах RecordSet. Так что увидеть их, как раньше, в шейп-листе нельзя. Поэтому удаляются связи через Add-On типа визарда. К сожалению, у меня нет сейчас под рукой установленного Visio 2007, поэтому не могу по пунктам рассказать, на что нажимать. Но там, вроде, все просто было. В тот момент, когда Visio сообщает, что связи не действуют, должна быть доступна кнопка типа "отремонтировать связь". И одно из предложений будет - удалить связи. |
|
|
elena
41 Posts |
Posted - 04/08/2008 : 08:14:07
|
Очень жаль, что у Вас нет под рукой Visio2007... Я понимаю, что при обновлении связи должна быть возможность изменить настройки, и в моем случае эта кнопка "черная", т.е. якобы активная. Но для работающих связей она действительно активна, т.е. открывает соответствующее окно, а для неработающих - нет. |
|
|
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". Что у Вас там печатается? |
|
|
elena
41 Posts |
Posted - 04/11/2008 : 08:45:54
|
Большое спасибо за внимание к моим мучениям... В моем случае кнопка More Info не активна, как и Configure... Так что ничего-то у меня не печатается. Могу выслать этот "нехороший" документ на экспертизу, если есть интерес и время. |
|
|
Tumanov
Russia
1198 Posts |
Posted - 04/11/2008 : 15:22:18
|
Можно было бы взглянуть, но без источников данных он может показать совсем другую картину... Но все равно, пожалуй, пришлите. На ttt@post.rzn.ru |
|
|
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. А на будущее (пока ребята не исправят ошибочку) наверное лучше будет сначала отключать источник (переконфигурированием), а только потом удалять его. Тогда такая ситуация не возникнет. |
|
|
elena
41 Posts |
Posted - 04/14/2008 : 11:54:34
|
Большое спасибо!
|
|
|
|
Topic |
|
|
|