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

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

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



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

СообщениеДобавлено: Чт Мар 18, 2010 9:49 am    Заголовок сообщения: Update значения в таблице Добавить ответ со ссылкой на данный текст

Доброго времени суток, господа форумчане.
Столкнулся со следующей проблемой: имеем 2 таблицы - parcel_itk и _1. Требуется взять значение поля А из _1 и поместить его в поле Номер_Земельного_Участка таблицы parcel_itk, где parcel_itk.учетный_номер = _1.В.
Делаю так:
Код:

Set Table parcel_itk FastEdit    
dim a as string
dim b as string   
select * from _1
fetch first from selection
a=selection.A
b=Chr$(34)+selection.B+Chr$(34)
update parcel_itk set Номер_земельного_участка=a
where parcel_itk.Учетный_номер = b

В результате выполнения MapInfo ругается на последнюю строчку: "Результатом выражения не является имя колонки или таблицы".
Укажите на ошибку пожалуйста.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



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

СообщениеДобавлено: Чт Мар 18, 2010 12:12 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Вам нужна не Update, а Add Column.
А в приведенном коде mapbasic ругается скорее всего из-за неправильного типа. Кроме того, тут берется значение из первой строки одной таблицы (=a) и пытается присвоиться всем строкам другой таблицы.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
nexys



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

СообщениеДобавлено: Чт Мар 18, 2010 1:06 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

reasonat писал(а):
Вам нужна не Update, а Add Column.

Действительно, видимо это то, что мне действительно нужно.
Переделал код в соответствии с оператором Add Column:
Код:

Fetch First from parcel_itk
 Do While Not EOT(parcel_itk)
add column parcel_itk (Номер_земельного_участка)
from _1 set to A
where parcel_itk.Учетный_номер=_1.В
  Fetch Next From _1
Loop

На строчку where parcel_itk.Учетный_номер=_1.A MapBasic все равно ругается - результатом выражения не является имя колонки или таблицы.
Поля в условии имеют тип данных "Символьное".
Поясните пожалуйста, что Вы имели ввиду под неправильным типом?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Arhara



Зарегистрирован: 18.02.2009
Сообщения: 400
Откуда: Moscow, RF

СообщениеДобавлено: Пт Мар 19, 2010 2:53 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

в самом первом коде был нарушен ситаксис выражения Update
Код:

Update table Set column = expr [, column = expr, ...]
   [ Where RowID = idnum ]

т.к. в Update и имеет только выборку по RowId
---
во втором случае должен ругаться на
Код:

from _1 set to A

т.к. A должно быть _1.А.

И во-втором примере вы циклы используете без пользы. Написанное выражение уже обрабатывает все строки таблицы.

Если возникают проблемы такого рода - выполните команду, которую хотите в MapInfo - "Обновить колонку", задав в ней связь между двумя таблицами. При выполнении команды ее полный синтаксис будет выведен в окно MapBasic.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Нестеров Валерий



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

СообщениеДобавлено: Пн Мар 22, 2010 3:24 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Еще... у вас имя одной из таблиц начинается с цифры, переименуйте, чтобы первой шла буква. MapInfo не любит таблицы с именами с цифрой в первой позиции.
_________________
Жизнь прекрасна!i
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
reasonat



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

СообщениеДобавлено: Пн Мар 22, 2010 3:42 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

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



Зарегистрирован: 18.02.2009
Сообщения: 400
Откуда: Moscow, RF

СообщениеДобавлено: Вт Мар 23, 2010 8:46 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

reasonat писал(а):
но символ подчеркивания она же кушает?

она его не "кушает", а добавляет, что бы имя не начиналось с цифры. Если же у вас в реальности таблица начинается с подчеркивания, то тут вообще возможны любые накладки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



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

СообщениеДобавлено: Вт Мар 23, 2010 9:26 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

2 Arhara, Нестеров Валерий:
А можно, не в тему, узнать, чем чревато использование таблиц с цифровым началом? Я достаточно поработала с такими, мапинфа действительно добавляет сама знак подчеркивания, и к таблицам, и к полям таблицы. все, что Alias, должно начинаться не с цифры. Но что я сама называю фактически таблицу с подчеркивания, часто, чтоб в списке по алфавиту не терялась, что открываю таблицы, названные просто 101,102,103,..., что экспортирую в таблицы с номерным названием, все было без проблем пока. И из MapInfo, и через MapBasic..
Название файла определяется без проблем по имени таблицы, выборки нормально работают, сохраняется, обновляется все как обычно.. Может просто не сталкивалась с такими случаями?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Arhara



Зарегистрирован: 18.02.2009
Сообщения: 400
Откуда: Moscow, RF

СообщениеДобавлено: Вт Мар 23, 2010 2:27 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Я знаю, что внутренняя логика MapBasic'a в MapInfo небезупречна и противоречива. Учитывая, что система сама добавляет вместо неправильных символов подчеркивание, использование этого подчеркивания в начале имени, кажеться мне потенциально опасным. Как в плане того, что можно и самому попутать таблицы, которые начинаются с цифры и с подчеркивание+цифра, так и влане того, что это сделает MapInfo. В самом банальном случае - она просто затрет таблицу. Про то, что нельзя начинать таблицы с числа - я не говорил. У меня самого этих таблиц, которые начинаются с номера планшета, миллионы.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



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

СообщениеДобавлено: Вт Мар 23, 2010 2:36 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Мапинфа откроет таблицу 1 под именем _1, а таблицу _1 под именем _1_2, и, по-идее, ничего не перепутает. Пока пользователь не начнет самодеятельничать с пересохранением. Но и тогда, поверх открытой таблицы нельзя будет записать другую, похожую. Кажется, тут у мапинфы все продумано, по крайней мере мне до сих пор не страшно Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



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

СообщениеДобавлено: Пт Мар 26, 2010 4:19 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

На практике были реальные проблемы. Я сейчас не вспомню уже, просто помню, что это грабли и стараюсь обходить. Чего и вам желаю.
Даже если MapInfo сама как-то разрулит работу с такими таблицами, то за зоопарк MapBasic-программ, которые вы используете вряд ли кто-то ответит - а они могут напортачить с такими таблицами. Надо оно вам?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
reasonat



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

СообщениеДобавлено: Пт Мар 26, 2010 4:36 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

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

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


Top.Mail.Ru