Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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
---
во втором случае должен ругаться на
т.к. 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, и, по-идее, ничего не перепутает. Пока пользователь не начнет самодеятельничать с пересохранением. Но и тогда, поверх открытой таблицы нельзя будет записать другую, похожую. Кажется, тут у мапинфы все продумано, по крайней мере мне до сих пор не страшно |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Пт Мар 26, 2010 4:19 pm Заголовок сообщения: |
|
|
На практике были реальные проблемы. Я сейчас не вспомню уже, просто помню, что это грабли и стараюсь обходить. Чего и вам желаю.
Даже если MapInfo сама как-то разрулит работу с такими таблицами, то за зоопарк MapBasic-программ, которые вы используете вряд ли кто-то ответит - а они могут напортачить с такими таблицами. Надо оно вам? |
|
Вернуться к началу |
|
|
reasonat
Зарегистрирован: 01.07.2009 Сообщения: 224 Откуда: Екатеринбург
|
Добавлено: Пт Мар 26, 2010 4:36 pm Заголовок сообщения: |
|
|
нее лучше учесть, конечно. |
|
Вернуться к началу |
|
|
|