Рабочий набор ругается на переменную
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Рабочий набор ругается на переменную
Здравствуйте
Составил запрос Select с применением переменной Dim X as Integer, если выборку не закрыть и сохранить рабочий набор то при его открытии пишет что "Не определена переменная X рабочий набор открыт не полностью". Как корректно составить запрос?
Составил запрос Select с применением переменной Dim X as Integer, если выборку не закрыть и сохранить рабочий набор то при его открытии пишет что "Не определена переменная X рабочий набор открыт не полностью". Как корректно составить запрос?
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Рабочий набор ругается на переменную
Для ответа нужет фрагмент, а лучше весь до ошибки и чуть дальше, рабочий набор. Ну и пример запроса, где без переменной не удалось обойтись.
Сама мапинфо применяет переменные в рабочем наборе, так что надо проверить, записала она туда Dim или нет. Если нет - записать самому. Рабочий набор же текстовый, в конце по хорошему должен стоять UnDim.
Сама мапинфо применяет переменные в рабочем наборе, так что надо проверить, записала она туда Dim или нет. Если нет - записать самому. Рабочий набор же текстовый, в конце по хорошему должен стоять UnDim.
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Re: Рабочий набор ругается на переменную
Привожу пример упрощенного кода:
Имеется 2 слоя Layer1 и Layer2 содержат только полигоны. Хочу получить список пересечения селектированного полигона на слое Layer1 с полигонами на слое Layer2. В список выводится площадь пересечения.
Код: Выделить всё
Set Area Units "hectare"
Dim ID As Integer
ID = Selection.ID
Select Round(AreaOverlap(Layer1.obj, Layer2.obj),0.1) "Пересечение_Га"
From Layer1, Layer2 Where (Layer1.ID = ID) and (Layer1.obj Intersects Layer2.obj) Into Selection
Browse * From Selection
Undim ID
-
- Активный участник
- Сообщения: 120
- Зарегистрирован: 14 апр 2011, 13:24
- Репутация: 5
- Откуда: Екатеринбург
Re: Рабочий набор ругается на переменную
Попробуйте НЕ использовать имя переменной, совпадающее с именем поля таблицы в запросах. Глюк старый, не исправляющийся от версии к версии (до 8.0). Особенность синтаксического анализатора Mapinfo.
Последний раз редактировалось SergS 24 авг 2011, 09:32, всего редактировалось 1 раз.
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Re: Рабочий набор ругается на переменную
За место имени переменной ID пробовал писать peremennaya, SID и SelectionID, ничего не изменилось =(
-
- Активный участник
- Сообщения: 120
- Зарегистрирован: 14 апр 2011, 13:24
- Репутация: 5
- Откуда: Екатеринбург
Re: Рабочий набор ругается на переменную
Знаете, попровал приведенный Вами текст - работает. без ошибок
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Re: Рабочий набор ругается на переменную
Выполните данный запрос и сохраните запрос в рабочем наборе потом откройте рабочий набор, интересно что скажет?
-
- Активный участник
- Сообщения: 120
- Зарегистрирован: 14 апр 2011, 13:24
- Репутация: 5
- Откуда: Екатеринбург
Re: Рабочий набор ругается на переменную
да так и сделал, только добавил в рабочий набор строки
dim id as integer
id=selection.id
...
undim id
dim id as integer
id=selection.id
...
undim id
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Re: Рабочий набор ругается на переменную
Я не знаю решит ли пользователь сохранять рабочий набор, может он выполнит запрос и закроет программу, а потом выберет "Восстановить прошлый сеанс". И что теперь эту переменную записывать во все рабочие наборы?
Есть ли другой вариант составления запроса без редактирования (руками) рабочего набора?
Есть ли другой вариант составления запроса без редактирования (руками) рабочего набора?
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Рабочий набор ругается на переменную
То есть вопрос плавно расширился до следующего: "Можно ли стандартными средствами сохранить в рабочий набор объявление переменных, использованных в сеансе? "
Полагаю, что нет.
Но ведь все равно надо еще и значение переменной сохранить? Или нет?
Если все это все равно приходиться писать в виде макроса, но следует добавить и отдельный макрос на сохранение.
Надо только проверить, если переменную один раз описать в рабочем наборе при пересохранении рабочего набора пользователем она там оставется?
Если нет, то придеться отслеживать сеанс закрытия рабочего набора и дописывать ее туда.
Полагаю, что нет.
Но ведь все равно надо еще и значение переменной сохранить? Или нет?
Если все это все равно приходиться писать в виде макроса, но следует добавить и отдельный макрос на сохранение.
Надо только проверить, если переменную один раз описать в рабочем наборе при пересохранении рабочего набора пользователем она там оставется?
Если нет, то придеться отслеживать сеанс закрытия рабочего набора и дописывать ее туда.
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Re: Рабочий набор ругается на переменную
Да, получается надо сохранять переменную и её значение, а это не то что надо и фиг его знает как.
Не нашел ничего лучше как отстегнуть галочку "Сохранять Запросы в Рабочем наборе".
Не нашел ничего лучше как отстегнуть галочку "Сохранять Запросы в Рабочем наборе".
-
- Активный участник
- Сообщения: 120
- Зарегистрирован: 14 апр 2011, 13:24
- Репутация: 5
- Откуда: Екатеринбург
Re: Рабочий набор ругается на переменную
мда, что-то у вас сложно получается...
я так понял, вы заставляете пользователя выполнить все эти команды в окне мапбасика?
и на каждый запрос, необходимый в работе составляете такой набор команд?
а не лучше (вам конечно лучше знать, но все таки...) откомпилировать эти же самые команды в модули mbx,
повесить каждый из них на кнопку (или пункт меню), обозвать по человечески и отдать в пользование?
кстати, при этом снимается проблема возникновения переменных в запросах, сохраняемых в рабочих наборах - вместо них подставятся их значения.

я так понял, вы заставляете пользователя выполнить все эти команды в окне мапбасика?
и на каждый запрос, необходимый в работе составляете такой набор команд?
а не лучше (вам конечно лучше знать, но все таки...) откомпилировать эти же самые команды в модули mbx,
повесить каждый из них на кнопку (или пункт меню), обозвать по человечески и отдать в пользование?
кстати, при этом снимается проблема возникновения переменных в запросах, сохраняемых в рабочих наборах - вместо них подставятся их значения.
нет, не останетсяBoris писал(а):Надо только проверить, если переменную один раз описать в рабочем наборе при пересохранении рабочего набора пользователем она там оставется?

- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Re: Рабочий набор ругается на переменную
Да ну что вы??? =))
Никого я не заставляю, наоборот автоматизирую. Вся автоматизация в связке Delphi + OLE MapInfo. Пользователь нажимает на "те же" кнопки только в моей программе.
Скорей всего никак это не сделать. Как обеспечить сохранность записи для сохраненного значения в переменной? Открыл рабочий набор воспользовался запросом - все что надо и куда надо сохранилось. Открыл просто таблицу удалил эту запись, потом открыл рабочий набор значение переменной есть, а записи нет и опять приехали...

Скорей всего никак это не сделать. Как обеспечить сохранность записи для сохраненного значения в переменной? Открыл рабочий набор воспользовался запросом - все что надо и куда надо сохранилось. Открыл просто таблицу удалил эту запись, потом открыл рабочий набор значение переменной есть, а записи нет и опять приехали...
-
- Завсегдатай
- Сообщения: 257
- Зарегистрирован: 10 июн 2009, 12:21
- Репутация: 0
- Откуда: Екатеринбург
- Контактная информация:
Re: Рабочий набор ругается на переменную
если все что надо сохраняется куда надо, то запрос из мапинфо сразу лучше удалить, чтоб потом пользователь не сохранял его в рабочем наборе, если ему все же понадобится рабочий набор.
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Рабочий набор ругается на переменную
сразу не получиться - тогда пользователь н еувидит результата запроса. может проще подменить кнопку и строку меню "запись в рабочий набор"?
Кто сейчас на конференции
Сейчас этот форум просматривают: Ahrefs [Bot] и 4 гостя