Страница 1 из 1
MapInfo. Помогите с выборкой чайнику
Добавлено: 06 апр 2014, 17:21
Dartix
Написал код процедуры выборки с объединением из 2х таблиц
Не могу понять что неправильно в процедуре
Sub proc
dim aaaa as string
dim bbbb as string
aaaa = PathToTableName$(FileOpenDlg("","","TAB","Выберите таблицу 1"))
bbbb = PathToTableName$(FileOpenDlg("","","TAB","Выберите таблицу 2'"))
Select aaaa.col1, aaaa.col2, bbbb.col1, bbbb.col2 from aaaa, bbbb where aaaa.col3 = bbbb.col3 into qq
End Sub
В ошибке пишет
Found [.] while searching for [A string constant]
Found [end] while searching for [from]
Re: MapInfo. Помогите с выборкой чайнику
Добавлено: 07 апр 2014, 07:31
juffin_h
Для aaaa типа String выражение aaaa.col1 не допустимо.
Чтобы обратится к колонке, надо использовать тип Alias.
Кроме того здесь: aaaa = PathToTableName$(FileOpenDlg("","","TAB","Выберите таблицу 1")), Вы получаете имя таблицы, но таблицу не открываете.
Re: MapInfo. Помогите с выборкой чайнику
Добавлено: 07 апр 2014, 10:03
Dartix
Сделал так
Sub proc
dim aaaa as alias
dim bbbb as alias
aaaa = PathToTableName$(FileOpenDlg("","","TAB","Выберите таблицу 1"))
bbbb = PathToTableName$(FileOpenDlg("","","TAB","Выберите таблицу 2'"))
Select aaaa.col1, aaaa.col2, bbbb.col1, bbbb.col2 from aaaa, bbbb where aaaa.col3 = bbbb.col3 into qq
End Sub
Ничего не поменялось, такая же ошибка
Кроме того здесь: aaaa = PathToTableName$(FileOpenDlg("","","TAB","Выберите таблицу 1")), Вы получаете имя таблицы, но таблицу не открываете.
Да подразумевается, что таблица уже открыта. Просто не знаю как сделать так, чтобы таблица ещё и открывалась при выполнении процедуры, если он закрыта. Если не затруднит, не могли бы рассказать.
Re: MapInfo. Помогите с выборкой чайнику
Добавлено: 07 апр 2014, 10:37
Sibit
Код: Выделить всё
Sub proc
dim a1 as string
dim b1 as string
a1 = PathToTableName$(FileOpenDlg("","","TAB","Выберите таблицу 1"))
b1 = PathToTableName$(FileOpenDlg("","","TAB","Выберите таблицу 2'"))
' Не забудем открыть таблицы! ;)
select * from a1 into aaaa
select * from b1 into bbbb
Select aaaa.col1, aaaa.col2, bbbb.col1, bbbb.col2 from aaaa, bbbb where aaaa.col3 = bbbb.col3 into qq
End Sub
Ну и алиас вы неправильно используете
Re: MapInfo. Помогите с выборкой чайнику
Добавлено: 07 апр 2014, 10:57
juffin_h
На будущее.
Alias должен содержать ссылку на колонку, а не таблицу.
Код: Выделить всё
...
dim a1, a2 as alias
dim aaaa as string
aaaa = PathToTableName$(FileOpenDlg("","","TAB","Выберите таблицу 1"))
a1 = aaaa + "COL1"
a2 = aaaa + "COL2"
...
Еще временное имя таблицы можно задать при открытии.
Код: Выделить всё
...
a1 = PathToTableName$(FileOpenDlg("","","TAB","Выберите таблицу 1"))
Open Table a1 As aaaa
...
Re: MapInfo. Помогите с выборкой чайнику
Добавлено: 07 апр 2014, 15:48
Dartix
А как использовать оператор "<>" вместо "=" в выделенном
жирным месте?
Select aaaa.col1, aaaa.col2 from aaaa, bbbb where aaaa.col3 = bbbb.col3 into qq
либо обратить выборку в таблице аааа и вывести на экран получившуюся
Re: MapInfo. Помогите с выборкой чайнику
Добавлено: 08 апр 2014, 04:34
Sibit
Dartix писал(а):А как использовать оператор "<>" вместо "=" в выделенном
жирным месте?
Код: Выделить всё
select * from aaaa where col3 <> all(select col3 from bbbb) into qq
или в меню выбрать - "Обратить выборку"
PS А еще лучше прочитать руководство по MapBasic, там все довольно подробно описано.