Как найти и закрыть все пустые таблицы из MapBasic
- 
				grandred75
- Интересующийся
- Сообщения: 32
- Зарегистрирован: 29 апр 2021, 10:38
- Репутация: 1
- Откуда: Москва
Как найти и закрыть все пустые таблицы из MapBasic
Добрый день. 
Собственно, вопрос в теме. Как закрыть пустые (открытые) таблицы из MapBasic?
			
			
													Собственно, вопрос в теме. Как закрыть пустые (открытые) таблицы из MapBasic?
					Последний раз редактировалось grandred75 05 май 2023, 09:06, всего редактировалось 1 раз.
									
			
						
										
						- 
				MI user
- Участник
- Сообщения: 65
- Зарегистрирован: 14 янв 2013, 17:08
- Репутация: -1238093703
- Откуда: *рг
Re: Как закрыть пустые таблицы
Проверить количество записей в таблице:
Код: Выделить всё
TableInfo(ИМЯТАБЛИЦЫ, 8)Код: Выделить всё
Close Table ИМЯТАБЛИЦЫКод: Выделить всё
Open Table "world" 
' ... when done using the WORLD table,
' close it by saying: 
Close Table world- 
				grandred75
- Интересующийся
- Сообщения: 32
- Зарегистрирован: 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
- 
				gamm
- Гуру
- Сообщения: 4177
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
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- 
				grandred75
- Интересующийся
- Сообщения: 32
- Зарегистрирован: 29 апр 2021, 10:38
- Репутация: 1
- Откуда: Москва
Re: Как найти и закрыть все пустые таблицы из MapBasic
попробовал. ошибка та же. Таблица 19 (или еще какая-нибудь) не найдена.
			
			
									
						
										
						- 
				gamm
- Гуру
- Сообщения: 4177
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
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
- 
				grandred75
- Интересующийся
- Сообщения: 32
- Зарегистрирован: 29 апр 2021, 10:38
- Репутация: 1
- Откуда: Москва
Re: Как найти и закрыть все пустые таблицы из MapBasic
Да! Это то, что нужно! Спасибо, выручили 
			
			
									
						
										
						- 
				spawner
- Активный участник
- Сообщения: 110
- Зарегистрирован: 09 окт 2009, 16:49
- Репутация: 13
Re: Как найти и закрыть все пустые таблицы из MapBasic
Можно просто сделать цикл с numtables до 1 
И закрывать последовательно
			
			
									
						
										
						
И закрывать последовательно
- 
				gamm
- Гуру
- Сообщения: 4177
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: Как найти и закрыть все пустые таблицы из MapBasic
Кто его знает, что там происходит при закрытии и как все это перенумеруется. В лоб надежнее ...
			
			
									
						
										
						Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей