Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

Mapbasic перестал работать

Тема в разделе "MapInfo", создана пользователем yeti, 22 фев 2017.

  1. yeti

    Форумчанин

    Регистрация:
    24 апр 2014
    Сообщения:
    60
    Симпатии:
    0
    Была у меня небольшая программка которая сортировала точки по координате Х

    Код:
    sel_region = CommandInfo(CMD_INFO_CUSTOM_OBJ)  ' запоминаем выбранный регион
    win_name = FrontWindow()                       ' верхнее окно
    layer_id = 1                                                ' 1й слой карты
    tab_start = LayerInfo(win_name, layer_id, LAYER_INFO_NAME)  ' его имя
    Set CoordSys Table tab_start                                                                ' работаем с сист.коор из tab_start
    Select col1,centroidX(obj),centroidY(obj) From tab_start Where sel_region Contains obj into tab_temp Order By 2 ' выбрать из tab_start объекты попадающие в sel_region, сортировать по X, записать в tab_temp
    
    и вдруг она мне теперь пишет:
    Результатом выражения не является имя колонки или таблицы.

    Может кто знает чё это она, а?
     
    #1
  2. MaksNik

    Форумчанин

    Регистрация:
    3 июн 2013
    Сообщения:
    64
    Симпатии:
    30
    ну если еще актуально, то:
    1. При запросе данных из таблицы, определять лучше имя таблицы а не слоя (вместо LayerInfo() использовать TableInfo()).
    2. При сортировке записей в таблице (Order By) необходимо указывать имя, а не номер колонки.
     
    #2
  3. yeti

    Форумчанин

    Регистрация:
    24 апр 2014
    Сообщения:
    60
    Симпатии:
    0
    До сих пор актуально...
    Все никак не разберусь в чем причина
    пока поменял только определение выбранной таблицы
    Код:
    win_name = FrontWindow()                                    ' верхнее окно
    layer_id = 1                                                ' 1й слой карты
    tab_start = LayerInfo(win_name, layer_id, LAYER_INFO_NAME)  ' его имя
    на такой
    Код:
    tab_start=SelectionInfo(SEL_INFO_TABLENAME)
    а что менять в запросе Select
    --- Сообщения объединены, 23 июн 2017, Оригинальное время сообщения: 23 июн 2017 ---
    если расписать запрос так
    Код:
    Select col1,centroidX(obj),centroidY(obj)
        From tab_start
        Where sel_region Contains obj
        into tab_temp
        Order By 2
    то ругается на Order By, как его правильно записать? col2 тоже не работает, а имя колонки я не знаю
     
    #3
  4. trir

    Форумчанин

    Регистрация:
    25 ноя 2014
    Сообщения:
    3.253
    Симпатии:
    931
    Адрес:
    gnomtrir@mail.ru
    Код:
    Select col1,centroidX(obj) "oX",centroidY(obj)
        From tab_start
        Where sel_region Contains obj
        into tab_temp
        Order By oX
     
    #4
  5. yeti

    Форумчанин

    Регистрация:
    24 апр 2014
    Сообщения:
    60
    Симпатии:
    0
    что то нет, не хочет, пойду mapinfo переустановлю
    и вернул способ выбора имени таблицы, ото там надо сначала точки выделять
    --- Сообщения объединены, 23 июн 2017, Оригинальное время сообщения: 23 июн 2017 ---
    ничего не помогает, раньше работала как часы, а теперь только ошибки выдает
    mapinfo 12.5.
    mapbasic был 11.5 сейчас 12.5 вернул 11.5
    никаких изменений
    вот файл

    может кто посмотрит, что там не так
     

    Вложения:

    #5
  6. Passenger

    Форумчанин

    Регистрация:
    29 июл 2013
    Сообщения:
    160
    Симпатии:
    50
    Мапбэйсик коварен)) в коде, в tab_temp нужно убрать подчеркивание и написать например tabtemp. Возможно в каких то версиях мапинфо работает с подчеркиванием не знаю. Я в коде все поменял у меня заработало. Интересная прога кстати!
     
    #6
  7. yeti

    Форумчанин

    Регистрация:
    24 апр 2014
    Сообщения:
    60
    Симпатии:
    0
    У меня упорно не хочет. Убрал подчеркивания в названиях таблиц, но он мне это...
    ошибка.jpg

    :Cray::Cray::Cray:
     
    #7
  8. Passenger

    Форумчанин

    Регистрация:
    29 июл 2013
    Сообщения:
    160
    Симпатии:
    50
    У вас теперь вот в чем проблема... В строке 9 Global tab_start,tab_dir,tab_temp as String, по всей видимости вы тоже убрали подчеркивание. Работать не будет, потому что имя таблицы не нужно объявлять как строковую переменную. должно быть просто Global tab_start,tab_dir as String. А мапинфо автоматически создает таблицу с заданным именем во время работы оператора selection ..... into. То есть таблица не является переменной. Почему ранее работало - неизвестно, может быть зависит от версии мапинфо или разрядности виндовс.
     
    #8
    yeti нравится это.
  9. yeti

    Форумчанин

    Регистрация:
    24 апр 2014
    Сообщения:
    60
    Симпатии:
    0
    Все!!! наконец заработало!!! Да, я бы до этого не додумался. Подчеркивания в итоге на работу не влияют, а название переменной я скорее всего внес позже, когда появилась какая то очередная ошибка.
     
    #9

Поделиться этой страницей

  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление