Как определить список таблиц в MS Access и как узнать какая таблица активна? - VB
Формулировка задачи:
Как определить список таблиц в MS Access и как узнать какая таблица активна (т.е. открыта юзером из Accessa или из проги на VB) в данной базе данных?
Решение задачи: «Как определить список таблиц в MS Access и как узнать какая таблица активна?»
textual
Листинг программы
Function ListTablesADO(ByVal dbConn As ADODB.Connection, ByRef myTables() As String, _ ByRef myFields() As String) As String ' *** ' *** Функция возвращает: через массивы, переданные по ссылке, - список таблиц и ' *** список полей в каждой таблице, через себя - пустую строку или же текст ошибки. ' *** На вход функция получает ОТКРЫТОЕ подключение к источнику данных (ADODB). ' *** Dim TablesSchema As ADODB.Recordset Dim ColumnsSchema As ADODB.Recordset Dim i As Integer, j As Integer, k As Integer, m As Integer, mem As Integer Dim tmpTables(1 To 100) Dim tmpFields(1 To 100, 1 To 10000) i = 0 mem = 0 On Error GoTo ErrorHandler ' Выбираем все таблицы: Set TablesSchema = dbConn.OpenSchema(adSchemaTables) Do While Not TablesSchema.EOF ' Выбираем все поля: Set ColumnsSchema = dbConn.OpenSchema(adSchemaColumns, _ Array(Empty, Empty, '' & TablesSchema('TABLE_NAME'))) If ColumnsSchema.EOF Then ' это системная таблица If Check1.Value = 0 Then ' не игнорируем системные таблицы - должны вывести их тоже: i = i + 1 tmpTables(i) = TablesSchema('TABLE_NAME') tmpFields(i, 1) = 'Это системная таблица' End If Else ' это обычная таблица i = i + 1 End If Do While Not ColumnsSchema.EOF If ColumnsSchema('COLUMN_NAME') <> '' Then j = j + 1 tmpTables(i) = TablesSchema('TABLE_NAME') tmpFields(i, j) = ColumnsSchema('COLUMN_NAME') End If ColumnsSchema.MoveNext Loop TablesSchema.MoveNext If j > mem Then mem = j j = 0 Loop ListTablesADO = '' If i > 0 Then ReDim myTables(1 To i) ReDim myFields(1 To i, 1 To mem) For k = 1 To i For m = 1 To mem myTables(k) = tmpTables(k) myFields(k, m) = tmpFields(k, m) Next m Next k Else ReDim myTables(0 To 0) ReDim myFields(0 To 0, 0 To 0) End If On Error GoTo 0 Exit Function ErrorHandler: ListTablesADO = Err.Description End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д