Выражение "rowid" в подписях
- ginpetr
- Завсегдатай
- Сообщения: 385
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Выражение "rowid" в подписях
Здравствуйте!
Появилась задача: к объектам таблицы подписями проставить порядковые номера. Но такие, чтоб не были записаны в полях таблицы, а как бы "динамически" создавались при выборе группы объектов. Вроде ничего сложного написать в выражении подписей "rowid", но беда в том что таблица - результат запроса, а во временных таблицах к каждому объекту почему-то подписывает одинаковое число, равное количеству записей в данном запросе. Поэтому "rowid" отпадает (видимо мапинфошный глюк, сохранившийся и в версии 10.5).
Выход вижу в том, чтобы SQL запрос формировал отдельную колонку (полноценную, а не скрытую как rowid) с порядковыми номерами записей таблицы, но как это сделать не знаю. И возможно ли вообще?
Появилась задача: к объектам таблицы подписями проставить порядковые номера. Но такие, чтоб не были записаны в полях таблицы, а как бы "динамически" создавались при выборе группы объектов. Вроде ничего сложного написать в выражении подписей "rowid", но беда в том что таблица - результат запроса, а во временных таблицах к каждому объекту почему-то подписывает одинаковое число, равное количеству записей в данном запросе. Поэтому "rowid" отпадает (видимо мапинфошный глюк, сохранившийся и в версии 10.5).
Выход вижу в том, чтобы SQL запрос формировал отдельную колонку (полноценную, а не скрытую как rowid) с порядковыми номерами записей таблицы, но как это сделать не знаю. И возможно ли вообще?
-
- Активный участник
- Сообщения: 120
- Зарегистрирован: 14 апр 2011, 13:24
- Репутация: 5
- Откуда: Екатеринбург
Re: Выражение "rowid" в подписях
можете привести текст sql-запроса?
впервые слышу о таком глюке, может он только в 10.5 впервые выплыл?
впервые слышу о таком глюке, может он только в 10.5 впервые выплыл?
- ginpetr
- Завсегдатай
- Сообщения: 385
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Выражение "rowid" в подписях
Запрашиваю объекты по какому-либо признаку (вроде "поле"=1, без группировки) (даже просто выбрав вручную), отображаю выборку на карте и в подписях пишу "rowid". Результат - все объекты подписаны одинаково, чаще всего числом равным количеству объектов в выборке. Хотя для базовых таблиц всё работает как положено.
Поэтому я хочу воспользоваться SQL запросом с созданием новой колонки эквивалентной rowid (например "номер"), но не скрытой. Хочу чтобы такая колонка создавалась именно в запросе без дополнительных операций, для возможности сохранения в рабочем наборе. Пробовал добавлять её как временную колонку, но безуспешно, ввиду установленного чёткого порядка команд в рабочем наборе (select строго после open и add column).
Вот я и прошу помощи в написании такого запроса, если это возможно.
Поэтому я хочу воспользоваться SQL запросом с созданием новой колонки эквивалентной rowid (например "номер"), но не скрытой. Хочу чтобы такая колонка создавалась именно в запросе без дополнительных операций, для возможности сохранения в рабочем наборе. Пробовал добавлять её как временную колонку, но безуспешно, ввиду установленного чёткого порядка команд в рабочем наборе (select строго после open и add column).
Вот я и прошу помощи в написании такого запроса, если это возможно.
-
- Активный участник
- Сообщения: 120
- Зарегистрирован: 14 апр 2011, 13:24
- Репутация: 5
- Откуда: Екатеринбург
Re: Выражение "rowid" в подписях
мда..., глюк подтверждаю, так же как и невозможность создания вычиляемой колонки на основе RowId в sql-запросе - она зараза все равно скрытой становится и значение ее при использовании в окне карты невозможно (по крайней мере, не получилось).
Однако. Если операция используется часто, то имеет смысл ее автоматизировать (в смысле заполнения предопределенного поля выборки значениями RowId, добавления выборки в карту и вклячения подписей из этого слоя). Это, кстати, возможно и в рабочем наборе. на самом деле если таблица уже открыта, то ее не имеет смысла открывать - можно исключить из текста команду open - стереть просто.
типа такого:
(в предположении, что в базовой таблице есть поле "Номер", и таблица доступна для редактирования и активным является окно карты и, в конце концов, есть эта самая выборка)
этот код сохранить в текстовом файле с расширением wor и пользоваться им как рабочим набором (выполнив предварительно вышеприведенные условия)
опять таки, по-моему проще этот код откомпилировать в Mapbasice, добавив обработку ошибок и посадив на кнопку, уж больно геморно запускать рабочий набор при частой необходимости.
Однако. Если операция используется часто, то имеет смысл ее автоматизировать (в смысле заполнения предопределенного поля выборки значениями RowId, добавления выборки в карту и вклячения подписей из этого слоя). Это, кстати, возможно и в рабочем наборе. на самом деле если таблица уже открыта, то ее не имеет смысла открывать - можно исключить из текста команду open - стереть просто.
типа такого:
(в предположении, что в базовой таблице есть поле "Номер", и таблица доступна для редактирования и активным является окно карты и, в конце концов, есть эта самая выборка)
Код: Выделить всё
!Workspace
!Version 700
!Charset WindowsCyrillic
' Version подойдет любая из существующих, лишь бы не больше текущей версии работающей MI
dim Выборка as string
Выборка = selectioninfo(2)
update Выборка set Номер = rowid
add map window frontwindow() layer Выборка
set map window frontwindow() layer Выборка label with Номер Visibility On Overlap On Duplicates On Auto On
undim Выборка
опять таки, по-моему проще этот код откомпилировать в Mapbasice, добавив обработку ошибок и посадив на кнопку, уж больно геморно запускать рабочий набор при частой необходимости.
- ginpetr
- Завсегдатай
- Сообщения: 385
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Re: Выражение "rowid" в подписях
Блин, а я надеялся, что просто сделал что-то не так...
Как раз хотел избежать рутинных операций. Лучший вариант был бы с SQL запросом...
Попробую развить Вашу идею, спасибо!
Как раз хотел избежать рутинных операций. Лучший вариант был бы с SQL запросом...
Попробую развить Вашу идею, спасибо!
- ginpetr
- Завсегдатай
- Сообщения: 385
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Re: Выражение "rowid" в подписях
Наткнулся на свой вопрос. Если кому надо, rowid в подписях к выборке работает, если выборка - результат запроса к двум таблицам (н-р запрашиваются объекты лежащие в пределах какой-то территории, объекты в одной таблице, территория - в другой)
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость