Как определить список таблиц в MS Access и как узнать какая таблица активна? - VB

Узнай цену своей работы

Формулировка задачи:

Как определить список таблиц в MS Access и как узнать какая таблица активна (т.е. открыта юзером из Accessa или из проги на VB) в данной базе данных?

Решение задачи: «Как определить список таблиц в MS Access и как узнать какая таблица активна?»

textual
Листинг программы
  1. Function ListTablesADO(ByVal dbConn As ADODB.Connection, ByRef myTables() As String, _
  2.                        ByRef myFields() As String) As String
  3.     ' ***
  4.    ' *** Функция возвращает: через массивы, переданные по ссылке, - список таблиц и
  5.    ' *** список полей в каждой таблице, через себя - пустую строку или же текст ошибки.
  6.    ' *** На вход функция получает ОТКРЫТОЕ подключение к источнику данных (ADODB).
  7.    ' ***
  8.    
  9.     Dim TablesSchema As ADODB.Recordset
  10.     Dim ColumnsSchema As ADODB.Recordset
  11.     Dim i As Integer, j As Integer, k As Integer, m As Integer, mem As Integer
  12.    
  13.     Dim tmpTables(1 To 100)
  14.     Dim tmpFields(1 To 100, 1 To 10000)
  15.     i = 0
  16.     mem = 0
  17.    
  18.     On Error GoTo ErrorHandler
  19.    
  20.     ' Выбираем все таблицы:
  21.    Set TablesSchema = dbConn.OpenSchema(adSchemaTables)
  22.    
  23.     Do While Not TablesSchema.EOF
  24.        
  25.         ' Выбираем все поля:
  26.        Set ColumnsSchema = dbConn.OpenSchema(adSchemaColumns, _
  27.                             Array(Empty, Empty, '' & TablesSchema('TABLE_NAME')))
  28.        
  29.         If ColumnsSchema.EOF Then
  30.             ' это системная таблица
  31.            If Check1.Value = 0 Then
  32.                 ' не игнорируем системные таблицы - должны вывести их тоже:
  33.                i = i + 1
  34.                 tmpTables(i) = TablesSchema('TABLE_NAME')
  35.                tmpFields(i, 1) = 'Это системная таблица'
  36.            End If
  37.         Else
  38.             ' это обычная таблица
  39.            i = i + 1
  40.         End If
  41.        
  42.         Do While Not ColumnsSchema.EOF
  43.             If ColumnsSchema('COLUMN_NAME') <> '' Then
  44.                j = j + 1
  45.                 tmpTables(i) = TablesSchema('TABLE_NAME')
  46.                tmpFields(i, j) = ColumnsSchema('COLUMN_NAME')
  47.            End If
  48.             ColumnsSchema.MoveNext
  49.         Loop
  50.        
  51.         TablesSchema.MoveNext
  52.         If j > mem Then mem = j
  53.         j = 0
  54.        
  55.     Loop
  56.    
  57.     ListTablesADO = ''
  58.    If i > 0 Then
  59.         ReDim myTables(1 To i)
  60.         ReDim myFields(1 To i, 1 To mem)
  61.         For k = 1 To i
  62.             For m = 1 To mem
  63.                 myTables(k) = tmpTables(k)
  64.                 myFields(k, m) = tmpFields(k, m)
  65.             Next m
  66.         Next k
  67.     Else
  68.         ReDim myTables(0 To 0)
  69.         ReDim myFields(0 To 0, 0 To 0)
  70.     End If
  71.    
  72.     On Error GoTo 0
  73.     Exit Function
  74.    
  75. ErrorHandler:
  76.     ListTablesADO = Err.Description
  77. End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы