Как найти и закрыть все пустые таблицы из MapBasic
-
- Интересующийся
- Сообщения: 26
- Зарегистрирован: 29 апр 2021, 10:38
- Репутация: 1
- Откуда: Москва
Как найти и закрыть все пустые таблицы из MapBasic
Добрый день.
Собственно, вопрос в теме. Как закрыть пустые (открытые) таблицы из MapBasic?
Собственно, вопрос в теме. Как закрыть пустые (открытые) таблицы из MapBasic?
Последний раз редактировалось grandred75 05 май 2023, 09:06, всего редактировалось 1 раз.
- MI user
- Участник
- Сообщения: 63
- Зарегистрирован: 14 янв 2013, 17:08
- Репутация: 33
- Откуда: Оренбург
Re: Как закрыть пустые таблицы
Проверить количество записей в таблице:
Код: Выделить всё
TableInfo(ИМЯТАБЛИЦЫ, 8)
Код: Выделить всё
Close Table ИМЯТАБЛИЦЫ
Код: Выделить всё
Open Table "world"
' ... when done using the WORLD table,
' close it by saying:
Close Table world
-
- Интересующийся
- Сообщения: 26
- Зарегистрирован: 29 апр 2021, 10:38
- Репутация: 1
- Откуда: Москва
Re: Как закрыть пустые таблицы
Честно говоря, не понял как это можно применить к моей задаче ... Тем не менее собрал вот такой код. Код работает, но как-то не до конца. Программа вылетает где-то в середине процесса. Почему, не могу разобраться
Dim n, count as Integer
Dim CurrentTable as string
For n = 1 to NumTables( )
CurrentTable = TableInfo(n , TAB_INFO_NAME)
Select * from CurrentTable
If SelectionInfo(SEL_INFO_NROWS) = 0 then
print CurrentTable
Close Table CurrentTable Interactive
else
End If
Next
Dim n, count as Integer
Dim CurrentTable as string
For n = 1 to NumTables( )
CurrentTable = TableInfo(n , TAB_INFO_NAME)
Select * from CurrentTable
If SelectionInfo(SEL_INFO_NROWS) = 0 then
print CurrentTable
Close Table CurrentTable Interactive
else
End If
Next
-
- Гуру
- Сообщения: 4064
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1061
- Ваше звание: программист
- Откуда: Казань
Re: Как найти и закрыть все пустые таблицы из MapBasic
попробуйте
Код: Выделить всё
Dim n, count, CurNum as Integer
Dim CurrentTable as string
For n = 1 to NumTables( )
CurrentTable = TableInfo(n , TAB_INFO_NAME)
CurNum = TableInfo(n , TAB_INFO_NROWS)
If CurNum = 0 then
print CurrentTable
Close Table CurrentTable Interactive
End If
Next
-
- Интересующийся
- Сообщения: 26
- Зарегистрирован: 29 апр 2021, 10:38
- Репутация: 1
- Откуда: Москва
Re: Как найти и закрыть все пустые таблицы из MapBasic
попробовал. ошибка та же. Таблица 19 (или еще какая-нибудь) не найдена.
-
- Гуру
- Сообщения: 4064
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1061
- Ваше звание: программист
- Откуда: Казань
Re: Как найти и закрыть все пустые таблицы из MapBasic
ясно, проблема в том, что при закрытии таблиц их число уменьшается. По хорошему, нужно сначала список имен пустых таблиц сделать, потом закрывать по списку, но я не помню, можно ли создать динамический массив в Мапвасике. Так что делаем тупо в лоб, будет дольше, но должно сработать
Код: Выделить всё
Dim n, count, CurNum, found as Integer
Dim CurrentTable as string
Do
found = 0
For n = 1 to NumTables( )
CurrentTable = TableInfo(n , TAB_INFO_NAME)
CurNum = TableInfo(n , TAB_INFO_NROWS)
If CurNum = 0 then
print CurrentTable
Close Table CurrentTable Interactive
found = 1
Exit For
End If
Next
Loop Until found = 0
-
- Интересующийся
- Сообщения: 26
- Зарегистрирован: 29 апр 2021, 10:38
- Репутация: 1
- Откуда: Москва
Re: Как найти и закрыть все пустые таблицы из MapBasic
Да! Это то, что нужно! Спасибо, выручили
-
- Активный участник
- Сообщения: 106
- Зарегистрирован: 09 окт 2009, 16:49
- Репутация: 10
Re: Как найти и закрыть все пустые таблицы из MapBasic
Можно просто сделать цикл с numtables до 1
И закрывать последовательно
И закрывать последовательно
-
- Гуру
- Сообщения: 4064
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1061
- Ваше звание: программист
- Откуда: Казань
Re: Как найти и закрыть все пустые таблицы из MapBasic
Кто его знает, что там происходит при закрытии и как все это перенумеруется. В лоб надежнее ...
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость