Выбор записей таблицы по тексту надписи Mapbasic
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 28 июл 2023, 14:08
- Репутация: 0
- Откуда: Tyumen
Выбор записей таблицы по тексту надписи Mapbasic
Здравствуйте.
Товарищи, помогите, пожалуйста, составить запрос для выборки текстовых объектов из таблице с определённым текстом надписи. Что-то на подобие этого
Select * from zz Where ObjectInfo(Obj,OBJ_INFO_TEXTSTRING) = "вода" Into Temp1.
Товарищи, помогите, пожалуйста, составить запрос для выборки текстовых объектов из таблице с определённым текстом надписи. Что-то на подобие этого
Select * from zz Where ObjectInfo(Obj,OBJ_INFO_TEXTSTRING) = "вода" Into Temp1.
-
- Гуру
- Сообщения: 4057
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: Выбор записей таблицы по тексту надписи Mapbasic
если не работает, добавьте ObjectInfo(obj, OBJ_INFO_TYPE) = OBJ_TYPE_TEXT, численные значени кодов в справочнике Мапвасика
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 28 июл 2023, 14:08
- Репутация: 0
- Откуда: Tyumen
Re: Выбор записей таблицы по тексту надписи Mapbasic
Да, по сути этот запрос с двумя условиями и выборка текстовых объектов отрабатывает, а вот вторая часть, нет.
SELECT * FROM zz WHERE int(objectinfo(obj,1))=10 and ObjectInfo(Obj,OBJ_INFO_TEXTSTRING) = "вода" Into Temp1
С численным значением также ошибка о "Несовпадение типов данных в выражение"
SELECT * FROM zz WHERE int(objectinfo(obj,1))=10 and ObjectInfo(Obj,3) = "вода" Into Temp1
SELECT * FROM zz WHERE int(objectinfo(obj,1))=10 and ObjectInfo(Obj,OBJ_INFO_TEXTSTRING) = "вода" Into Temp1
С численным значением также ошибка о "Несовпадение типов данных в выражение"
SELECT * FROM zz WHERE int(objectinfo(obj,1))=10 and ObjectInfo(Obj,3) = "вода" Into Temp1
-
- Гуру
- Сообщения: 4057
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: Выбор записей таблицы по тексту надписи Mapbasic
пример в формате MIF/MID выложите. А для начала уберите лишние преобразования, и скобок добавьте, я не помню, какие у Мапинфы приоритеты операций
SELECT * FROM zz WHERE (objectinfo(obj,1)=10) and (ObjectInfo(Obj,3) = "вода") Into Temp1
SELECT * FROM zz WHERE (objectinfo(obj,1)=10) and (ObjectInfo(Obj,3) = "вода") Into Temp1
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 28 июл 2023, 14:08
- Репутация: 0
- Откуда: Tyumen
Re: Выбор записей таблицы по тексту надписи Mapbasic
Дело в том, что без преобразования не отрабатывает и первая часть запроса objectinfo(obj,1)=10, выдавая туже ошибку "Несовпадение типов данных в выражение". А при добавление функции (Int() - Возвращает целую часть действительного числа) отрабатывает корректно Int(objectinfo(obj,1))=10. Тут мне логика мапа не ясна, но просто высмотрел этот приём в интернете. Скобки даже не знаю какие добавит в условие, главное функции в скобках, а сами условия мап отрабатывает по порядку в запросе.
- Вложения
-
- Гидрография.rar
- (8.63 КБ) 210 скачиваний
-
- Гуру
- Сообщения: 4057
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: Выбор записей таблицы по тексту надписи Mapbasic
проблема понятная, если коротко - то косяк разработчиков Мапинфы, придется делать в два запроса, обойти не порлучится в силу отсутствия ID, и ограничений на длину запроса. Запросы нужно сохранить в текстовые файлы (первый до разделителя, второй после), они грузятся в форму SQL (единственно, могут быть проблемы с русской кодировкой, нужно привести в ту, которая в конкретной Мапинфе)
Код: Выделить всё
Fields {ID, Тип, Название, Примечание, R_N, int(objectinfo(obj,1)) "xxx",str$(ObjectInfo(Obj,3)) "zzz"}
Tables {Гидрография}
Where {int(objectinfo(obj,1))=10}
Group {}
Order {}
Into {temp1}
Browse
-------------------------------------------------------------------------------------------
Fields {ID, Тип, Название, Примечание, R_N}
Tables {temp1}
Where {zzz="вода"}
Group {}
Order {}
Into {temp2}
Browse
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 28 июл 2023, 14:08
- Репутация: 0
- Откуда: Tyumen
Re: Выбор записей таблицы по тексту надписи Mapbasic
Всё отработало, как надо. Спасибо большое за помощь!
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей