Знатокам MapBasic. Помогите
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 21 мар 2008, 13:08
- Репутация: 0
- Откуда: Ханты-Мансийск
Знатокам MapBasic. Помогите
Почему вот такая конструкция работает:
Dim TableName, TableName_New, Statement as String
TableName="Гидрография"
TabName_New=TabName+"_POINT"
Select * from TabName Where Название Not Like "" into TabName_New
А вот такая конструкция не работает:
Dim TableName, TableName_New, Statement as String
TableName="Гидрография"
TabName_New=TabName+"_POINT"
Statement="Название"
Select * from TabName Where Statement Not Like "" into TabName_New
В первом примере выделяются объекты у которых поле Название не пустое. А во втором случае выделяются все объекты... хотя я хочу чтоб тоже не пустые выделялись..
Переменную Statement я делал = "Название Not Like""""", но результат тот же. Что я не так делаю....
Dim TableName, TableName_New, Statement as String
TableName="Гидрография"
TabName_New=TabName+"_POINT"
Select * from TabName Where Название Not Like "" into TabName_New
А вот такая конструкция не работает:
Dim TableName, TableName_New, Statement as String
TableName="Гидрография"
TabName_New=TabName+"_POINT"
Statement="Название"
Select * from TabName Where Statement Not Like "" into TabName_New
В первом примере выделяются объекты у которых поле Название не пустое. А во втором случае выделяются все объекты... хотя я хочу чтоб тоже не пустые выделялись..
Переменную Statement я делал = "Название Not Like""""", но результат тот же. Что я не так делаю....
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: Знатокам MapBasic. Помогите
Все молчат, тогда попробую ответить я. Точного ответа я не знаю, но мне не нравится, что вы обращаетесь к таблице через строковую переменную:Владимир писал(а):Почему вот такая конструкция работает:
...
А вот такая конструкция не работает:
...
В первом примере выделяются объекты у которых поле Название не пустое. А во втором случае выделяются все объекты... хотя я хочу чтоб тоже не пустые выделялись..
для таких целей в MapBasic есть специальный тип данных - Alias (у меня нет под рукой MapBasic'а, поэтому за подробностями отсылаю в справку). Мне кажется, что такой код должен был бы сработать:Владимир писал(а): Dim Statement as String
Statement="Название"
Select * from TabName Where Statement Not Like "" into TabName_New
Попробуйте.Dim Statement as Alias
Statement="Название"
Select * from TabName Where Statement Not Like "" into TabName_New
PS а почему используете like? Ведь для ваших целей (отфильтровать пустые записи) достаточно: Statement <> ""
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 21 мар 2008, 13:08
- Репутация: 0
- Откуда: Ханты-Мансийск
-
- Интересующийся
- Сообщения: 18
- Зарегистрирован: 15 сен 2005, 10:57
- Репутация: 0
МapBasic - это интерпретатор, в котором sql-подобный синтаксис, скажем так, подразумевает раннее связывание, поэтому чтобы сделать позднее, как в вашем случае, нужно срздавать строку команды (select/intersect .. etc.) а потом использовать оператор Run Command <Текс_команды>. Это пригождается, когда динамически получаешь имена таблиц/колонок и т.п. параметры команд MapBasic.
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 21 мар 2008, 13:08
- Репутация: 0
- Откуда: Ханты-Мансийск
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 17 гостей