www.map-info.ru :: Просмотр темы - Проблема с Add Column
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
b0br0ff



Зарегистрирован: 22.05.2009
Сообщения: 22

СообщениеДобавлено: Ср Сен 16, 2009 9:46 am    Заголовок сообщения: Проблема с Add Column Добавить ответ со ссылкой на данный текст

Мне нужно обновить колонку в таблице данными из другой таблицы, команда Update в Мапифо какая-то урезанная о посредством SQL это сделать не представляется возможным. В хэлпе нашел Add Column, который якобы это должен делать

Add Column
CELLS_3G(latitude)
From COORDS_3G
Set to latitude
Where cellid=cellid

однако же программа вылетает с ошибкой Stack Overflow, не оскажете в чём проблема или как можно подругому решить эту задачу. Заранее благодарен!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alex_47



Зарегистрирован: 01.07.2009
Сообщения: 66
Откуда: Н.Новгород

СообщениеДобавлено: Ср Сен 16, 2009 6:46 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

A если тупо перебрать обе таблицы - выбрать 1-ю строку 1 таблицы извлечь значение из нужной колонки затем выбрать 1-ю строку 2 таблицы и обновить выборку.

ну примерно так:

dim q as string
dim i as integer
i=1
Fetch First From name_table1
Do while Not EOT (name_table1)
q=name_table1.col1
select * from name_table2 where rowid=i into Selection2
Update Selection2 Set col1 = q
Fetch Next From name_table1
i=i+1
Loop
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
spawner



Зарегистрирован: 01.04.2009
Сообщения: 77

СообщениеДобавлено: Чт Сен 17, 2009 6:35 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

хм, update вроде нормально работает на обновление колонки.
1)делаем sql запрос, объединяем 2 таблицы по полю(нескольким), получаем результирующую таблицу QueryX
2)делаем Update нужной колонки QueryX

единственно, если названия колонок в обоих объединяемых таблицах одинаковые, то глючить может Update. Тогда нужно временно одну колонку переименовать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alex_47



Зарегистрирован: 01.07.2009
Сообщения: 66
Откуда: Н.Новгород

СообщениеДобавлено: Чт Сен 17, 2009 6:20 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

a если писать не имя колонки(пример:поле_1,поле_2), а номер колонки(пример:col1,col2)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
spawner



Зарегистрирован: 01.04.2009
Сообщения: 77

СообщениеДобавлено: Вт Сен 22, 2009 9:54 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

если использовать апдейт который из меню (обновить колонку) то там поле выбирается из списка, и одинаковые поля глючат, а кол1, кол2 не сделать Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



Зарегистрирован: 01.07.2009
Сообщения: 224
Откуда: Екатеринбург

СообщениеДобавлено: Вт Сен 29, 2009 10:31 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

а если использовать не меню мапинфо, а команды мапбейсика, то ColN сделать можно.
и если объединить два действия, sql-запрос и обновление колонки, то реализуется это одной командой
Add Column
...
Where Col1=Col1
(где Col1 и Col1 - колонки из двух таблиц, которые используются для объединения)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
XELLGIS



Зарегистрирован: 03.09.2009
Сообщения: 16
Откуда: Краснодар

СообщениеДобавлено: Вт Сен 29, 2009 11:15 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Здраствуйте, у меня схожая проблема.
Создал запрос на добавление в таблицу колонки где в каждой строчке будет тестовая расшифровка идентификатора объектов таблицы.

ADD COLUMN VEGPOLРастительность_полl (Name)
FROM Table_klass2
SET TO B
WHERE Class_id = A

Где VEGPOLРастительность_полl - имя таблицы с объектами, которая будет обновляться. А Name имя колонки с расшифровкой. Table_klass2 таблица содержащая все коды идентификаторов (колонка А) и соответствующие им расшифровки (колонка B).

Во время выполнения сначала пишет что не возможно создать временную колонку Name, а при последующих попытках пишет что выполнение данной операции с колонкой Name не возможно... хотя самой колонки в таблице нет.

Может я вообще иду не по правильному пути? )
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



Зарегистрирован: 01.07.2009
Сообщения: 224
Откуда: Екатеринбург

СообщениеДобавлено: Вт Сен 29, 2009 12:01 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

потому и ругается, что нет такой колонки.
чтоб создалась временная колонка, укажите в скобках не просто ее имя, а еще и тип, например (Name Char (150))
но временные колонки не сохраняются в таблицах, разве что копию полученной временной таблицы сохранять.
так что лучше сначала колонку добавить в таблицу
Alter Table ваша_таблица ( add Name Char(150) )
а следующим действием уже обновить значениями из классификатора.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
XELLGIS



Зарегистрирован: 03.09.2009
Сообщения: 16
Откуда: Краснодар

СообщениеДобавлено: Вт Сен 29, 2009 12:36 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

reasonat писал(а):
потому и ругается, что нет такой колонки.
чтоб создалась временная колонка, укажите в скобках не просто ее имя, а еще и тип, например (Name Char (150))
но временные колонки не сохраняются в таблицах, разве что копию полученной временной таблицы сохранять.
так что лучше сначала колонку добавить в таблицу
Alter Table ваша_таблица ( add Name Char(150) )
а следующим действием уже обновить значениями из классификатора.


Спасибо, после добавления этой строчки все прошло как по маслу.

итог:

Alter Table VEGPOLРастительность_полl ( add Name Char(150) )
ADD COLUMN VEGPOLРастительность_полl (Name)
FROM Table_klass2
SET TO B
WHERE Class_id = A

Осталось добавить части кода для каждой таблицы шаблона, но это уже механическое действие будет.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alex_47



Зарегистрирован: 01.07.2009
Сообщения: 66
Откуда: Н.Новгород

СообщениеДобавлено: Ср Окт 07, 2009 4:10 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

spawner писал(а):
если использовать апдейт который из меню (обновить колонку) то там поле выбирается из списка, и одинаковые поля глючат, а кол1, кол2 не сделать Sad

Никогда не писал имя колонок. Все время там писал например надо добавить впереди первой колонки «н» писал «н»+col1 и все работает.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
spawner



Зарегистрирован: 01.04.2009
Сообщения: 77

СообщениеДобавлено: Чт Окт 08, 2009 11:38 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

н+col1 работает, т.к. это выражение и оно интерпретируется мапбэйсиком.

А вот _выбор поля для обновления_ производится из _списка_ т.е. если 2 поля имеют одинаковые имена, то будет обновлено первое.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru