Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 23 сен 2019, 22:42

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Как сослаться на несуществующее свойство?
СообщениеДобавлено: 03 апр 2019, 15:32 
Не в сети
Постоянный участник

Зарегистрирован: 16 окт 2016, 12:41
Сообщений: 78
Использую Visio c: 2016
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Здравствуйте! Прошу вашей помощи. Есть два шейпа. Хочу в одном (в первом) из них прописать ссылку на Shap Data другого шейпа, но этого свойства у шейпа (второго) ещё не существует, но появиться позже. Такую формулу не даёт даже ввести:
Код:
=IF(FORMULAEXIST(Sheet.1!Prop.Позиция), "Свойство есть", "Свойства нет")

Свойство Sheet.1!Prop.Позиция пока не существует. Почему я подумал, что это возможно - потому что, формула следующего вида вполне работает:
Код:
IF(FORMULAEXISTS(CONTAINERSHEETREF(1)!Prop.ПОЗИЦИЯ),"Свойство есть","Свойства нет")


Зачем мне это нужно. Шейп будет подключён к базе данных, и соответственно будут появляться определённые свойства, заранее задавать их шейпу нет желания.
Пока не прикладываю файл, думаю и так понятно о чём речь, но если надо обязательно сделаю


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сослаться на несуществующее свойство?
СообщениеДобавлено: 03 апр 2019, 16:00 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3685
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
Функция FORMULAEXISTS проверяет наличие формулы в ячейке, а не наличие самой ячейки !


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сослаться на несуществующее свойство?
СообщениеДобавлено: 03 апр 2019, 16:03 
Не в сети
Постоянный участник

Зарегистрирован: 16 окт 2016, 12:41
Сообщений: 78
Использую Visio c: 2016
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
Функция FORMULAEXISTS проверяет наличие формулы в ячейке, а не наличие самой ячейки !

Согласен с вами, однако вариант с контейнером работает, даже когда нет контейнера


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сослаться на несуществующее свойство?
СообщениеДобавлено: 03 апр 2019, 16:08 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3685
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
точнее проверяет на пустоту (No formula) в ячейкеИзображение
Machestro писал(а):
однако вариант с контейнером работает, даже когда нет контейнера
не пробовал


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сослаться на несуществующее свойство?
СообщениеДобавлено: 03 апр 2019, 16:20 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1479
Очков репутации: 100597

Добавить очки репутацииУменьшить очки репутации
Цитата:
...заранее задавать их шейпу нет желания...

На автоматику надеетесь? Это - зря. Она Вам подсунет потом совсем не то, что хотелось бы.
А по сути вопроса - даже если бы было можно (ссылку на несуществующую ячейку), то лучше так не делать. По уставу не положено.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сослаться на несуществующее свойство?
СообщениеДобавлено: 03 апр 2019, 16:33 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3685
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
а можно хоть посмотреть где это в контейнерах сидит ?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сослаться на несуществующее свойство?
СообщениеДобавлено: 03 апр 2019, 16:49 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1479
Очков репутации: 100597

Добавить очки репутацииУменьшить очки репутации
Цитата:
Такую формулу не даёт даже ввести:

Ну, такое поведение еще вроде бы можно обмануть... Например, устанавливать формулу с помощью функции SetF.
Типа формула
=SETF(GetRef(Scratch.B1),"Prop.Pos")
установит в ячейку Scratch.B1 ссылку на свойство Pos.
Правда, ссылка появится только после того, как свойство появится :) Даже чуть попозже, потому как такую формулу еще чем-то толкнуть нужно будет. Но в принципе, все уже будет на взводе.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сослаться на несуществующее свойство?
СообщениеДобавлено: 03 апр 2019, 17:31 
Не в сети
Постоянный участник

Зарегистрирован: 16 окт 2016, 12:41
Сообщений: 78
Использую Visio c: 2016
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
а можно хоть посмотреть где это в контейнерах сидит ?

В приложенном файле есть контейнер и шейп, и у каждого из них есть данные. Если шейп занести в контейнер, то он возьмёт данные из контейнера, причем будет двусторонняя связь между данными - меняем у контейнера меняется у шейпа, и так же в обратную сторону


Вложения:
DOC1.vsdx [44.04 Кб]
Скачиваний: 11
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сослаться на несуществующее свойство?
СообщениеДобавлено: 03 апр 2019, 17:41 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1479
Очков репутации: 100597

Добавить очки репутацииУменьшить очки репутации
Функция CONTAINERSHEETREF(1) находит главный контейнер на странице. Или возвращает ошибку.
Цитата:
If the shape is not a member of a container, or if there is no container that matches both the specified index number and the category, CONTAINERSHEETREF returns #REF!.

Функция FORMULAEXISTS от ошибки скорее всего говорит False.
То есть по логике все верно. Если у контейнера есть нужное свойство, то до него можно добраться. Если свойства нет или контейнера нет, получаем вполне допустимое значение логической переменной.
Возможно, похожего результата можно добиться, поиграв с функцией ISERROR или с ее разновидностями.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сослаться на несуществующее свойство?
СообщениеДобавлено: 03 апр 2019, 17:58 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1479
Очков репутации: 100597

Добавить очки репутацииУменьшить очки репутации
А в приложенном файле сверху накладывается "проталкивающая" функция SetAtRef.
То есть, если круг попадает в контейнер, то CONTAINERSHEETREF(1) вернет не ошибку и значение из шейпа будет проталкиваться в контейнер (в момент изменения этого значения в круге. А в остальное время - из контейнера в круг).
Если круг не в контейнере, будет ошибка и SetAtRef не сможет сделать ничего.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [bot] и гости: 1


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB