Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: просмотр состава таблиц в базе данных через ADO Добавлено: 04.10.06 07:35  

Автор вопроса:  Сергей
Достаточно давно работаю с ADO, но не могу сделать простой вещи: как просмотреть имена таблиц допустим в базе Access. То есть мне надо перед обращением к таблице типа:
  
  recordset.open "Имя таблицы", connection,....

узнать это "Имя таблицы". Как это сделать?

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Hunter2003



ICQ: 287314254 

Вопросов: 14
Ответов: 72
 Профиль | | #1 Добавлено: 05.10.06 08:15
Юзай ADOX - библа для работы со схемой БД. Подробнее узнаешь в Microsoft Data Access SDK

Ответить

Номер ответа: 2
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #2 Добавлено: 05.10.06 23:11
Public Function GetTableArray(DataBasePath As String, Password As String, _
                              ReturnArray() As String) As Long '+
'Возвращаем массив ReturnArray с именами таблиц
'В случае успеха функция принимает значение 0, иначе номер ошибки

Set dbObj = New ADODB.Connection
Dim rsSchema As ADODB.Recordset
Dim dbConnectionString As String

On Error GoTo e
dbConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DataBasePath$ & ";" & _
 IIf(Trim(Password) <> "", "Jet OLEDB:Database Password=" & Trim$(Password$) & ";", "";)

    ReDim ReturnArray(0)
    dbObj.Open dbConnectionString
    
    If dbObj.state = adStateOpen Then
        Set rsSchema = dbObj.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "TABLE";))
        If Not rsSchema Is Nothing Then
            Do While Not rsSchema.EOF
                If UCase(Left(rsSchema!Table_name, 4)) <> "MSYS" Then
                    If UCase(Left(rsSchema!Table_name, 11)) <> "SWITCHBOARD" Then
                        NewTableName = rsSchema!Table_name
                        ReturnArray(UBound(ReturnArray)) = NewTableName
                        ReDim Preserve ReturnArray(UBound(ReturnArray) + 1)
                    End If
                End If
                rsSchema.MoveNext
            Loop
        End If
    End If
    'ReDim Preserve ReturnArray(UBound(ReturnArray) - 1)
    GetTableArray = 0
    rsSchema.Close
    Set rsSchema = Nothing
    Set dbObj = Nothing
    Exit Function
e:
    GetTableArray = Err.Number
    Debug.Print Err.Description
    ;DescriptionLastError = Err.Description
    On Error GoTo 0: On Error Resume Next
    Set rsSchema = Nothing
    Set dbObj = Nothing
End Function

Ответить

Номер ответа: 3
Автор ответа:
 Сергей



Вопросов: 5
Ответов: 7
 Профиль | | #3 Добавлено: 06.10.06 11:53
Офигеть! Спасибо огромное!

Ответить

Номер ответа: 4
Автор ответа:
 Сергей



Вопросов: 5
Ответов: 7
 Профиль | | #4 Добавлено: 06.10.06 12:23
Еще раз спасибо HACKER! Листинг работает, но ты бы не мог объяснить что такое :
            
             rsSchema!Table_name

я понимаю, что rsSchema - это рекордсет, а что это за приставка через "!"? почему она именно так называется Table_name?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам