MapInfo. Помогите с выборкой чайнику

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
Dartix
Участник
Сообщения: 78
Зарегистрирован: 05 апр 2014, 17:13
Репутация: 5

MapInfo. Помогите с выборкой чайнику

Сообщение Dartix » 06 апр 2014, 17:21

Написал код процедуры выборки с объединением из 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]

juffin_h
Завсегдатай
Сообщения: 265
Зарегистрирован: 22 окт 2012, 08:35
Репутация: 50
Откуда: Нижний Новгород

Re: MapInfo. Помогите с выборкой чайнику

Сообщение juffin_h » 07 апр 2014, 07:31

Для aaaa типа String выражение aaaa.col1 не допустимо.
Чтобы обратится к колонке, надо использовать тип Alias.
Кроме того здесь: aaaa = PathToTableName$(FileOpenDlg("","","TAB","Выберите таблицу 1")), Вы получаете имя таблицы, но таблицу не открываете.

Dartix
Участник
Сообщения: 78
Зарегистрирован: 05 апр 2014, 17:13
Репутация: 5

Re: MapInfo. Помогите с выборкой чайнику

Сообщение Dartix » 07 апр 2014, 10:03

Сделал так
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")), Вы получаете имя таблицы, но таблицу не открываете.
Да подразумевается, что таблица уже открыта. Просто не знаю как сделать так, чтобы таблица ещё и открывалась при выполнении процедуры, если он закрыта. Если не затруднит, не могли бы рассказать.

Sibit
Активный участник
Сообщения: 216
Зарегистрирован: 21 окт 2009, 13:29
Репутация: 28
Откуда: Новосибирск

Re: MapInfo. Помогите с выборкой чайнику

Сообщение Sibit » 07 апр 2014, 10:37

Код: Выделить всё

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
Ну и алиас вы неправильно используете

juffin_h
Завсегдатай
Сообщения: 265
Зарегистрирован: 22 окт 2012, 08:35
Репутация: 50
Откуда: Нижний Новгород

Re: MapInfo. Помогите с выборкой чайнику

Сообщение juffin_h » 07 апр 2014, 10:57

На будущее.
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
...

Dartix
Участник
Сообщения: 78
Зарегистрирован: 05 апр 2014, 17:13
Репутация: 5

Re: MapInfo. Помогите с выборкой чайнику

Сообщение Dartix » 07 апр 2014, 15:48

А как использовать оператор "<>" вместо "=" в выделенном жирным месте?
Select aaaa.col1, aaaa.col2 from aaaa, bbbb where aaaa.col3 = bbbb.col3 into qq
либо обратить выборку в таблице аааа и вывести на экран получившуюся

Sibit
Активный участник
Сообщения: 216
Зарегистрирован: 21 окт 2009, 13:29
Репутация: 28
Откуда: Новосибирск

Re: MapInfo. Помогите с выборкой чайнику

Сообщение Sibit » 08 апр 2014, 04:34

Dartix писал(а):А как использовать оператор "<>" вместо "=" в выделенном жирным месте?

Код: Выделить всё

select * from aaaa where col3 <> all(select col3 from bbbb) into qq
или в меню выбрать - "Обратить выборку"

PS А еще лучше прочитать руководство по MapBasic, там все довольно подробно описано.

Ответить

Вернуться в «Я новичок!»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость