Список таблиц в базе

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Mario
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 19.10.2005 (Ср) 13:23
Откуда: Из Новосиба

Список таблиц в базе

Сообщение Mario » 24.09.2008 (Ср) 8:32

Используя ADODC. DAO не катит.

Нужно узнать сколько таблиц и с какими они именами в произвольной базе данных. Причем вывести их нужно без системных!
Помогите пожалуйста.
Кто пил один и втихомолку, тот век земной прожил без толку...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Список таблиц в базе

Сообщение alibek » 24.09.2008 (Ср) 8:41

OpenSchema.
А ADODC лучше выкинь.
Lasciate ogni speranza, voi ch'entrate.

Mario
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 19.10.2005 (Ср) 13:23
Откуда: Из Новосиба

Re: Список таблиц в базе

Сообщение Mario » 24.09.2008 (Ср) 9:43

Как я понял это вот так должно быть.
не работает.
msgbox вообще не появляется

Код: Выделить всё
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim fn As String
Dim count As Integer
 
CommonDialog1.ShowOpen
fn = CommonDialog1.FileName
 
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset

With conn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & fn
.Mode = adModeReadWrite
.CursorLocation = adUseClient
.Open
End With

Set rs = conn.OpenSchema(adSchemaTables)
count = 0

While Not rs.EOF
    count = count + 1
    If rs.Fields("TABLE_TYPE") = "VIEW" Then
      'Combo1.AddItem rs.Fields("TABLE_NAME"), count
      MsgBox rs!TABLE_NAME
      End If
    rs.MoveNext
Wend
Кто пил один и втихомолку, тот век земной прожил без толку...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Список таблиц в базе

Сообщение alibek » 24.09.2008 (Ср) 10:09

Так ты не VIEW ищи, а TABLE.
Lasciate ogni speranza, voi ch'entrate.

Mario
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 19.10.2005 (Ср) 13:23
Откуда: Из Новосиба

Re: Список таблиц в базе

Сообщение Mario » 24.09.2008 (Ср) 10:09

А если быть точнее то так работает, но записываются и системные и скрытые таблицы! А мне нужно что бы их не было.
кто нибуть знает как быть! :cry:

Код: Выделить всё
While Not rs.EOF
    'If rs!TABLE_TYPE = VIEW Then
      Combo1.AddItem (rs!TABLE_NAME)
      Debug.Print rs!TABLE_NAME
     'End If
    rs.MoveNext
Кто пил один и втихомолку, тот век земной прожил без толку...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Список таблиц в базе

Сообщение alibek » 24.09.2008 (Ср) 10:13

Почитай в MSDN.
Там указано, какие столбцы доступны и что они означают.
Lasciate ogni speranza, voi ch'entrate.

Mario
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 19.10.2005 (Ср) 13:23
Откуда: Из Новосиба

Re: Список таблиц в базе

Сообщение Mario » 24.09.2008 (Ср) 10:13

alibek писал(а):Так ты не VIEW ищи, а TABLE.


спасибо огромное

вот рабочий

Код: Выделить всё
While Not rs.EOF
    If rs!TABLE_TYPE = "TABLE" Then
      Combo1.AddItem (rs!TABLE_NAME)
      Debug.Print rs!TABLE_NAME
     End If
    rs.MoveNext
Кто пил один и втихомолку, тот век земной прожил без толку...

Mario
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 19.10.2005 (Ср) 13:23
Откуда: Из Новосиба

Re: Список таблиц в базе

Сообщение Mario » 24.09.2008 (Ср) 13:46

Еще вопросик возник...
про динамическое обновление

как сделать его

вот такой вот у меня код

Код: Выделить всё
Dim fn As String
Dim conn As Adodb.Connection
Dim rs As Adodb.Recordset

'************************************************************************
 
Private Sub closeDB()
conn.Close
End Sub

 
Private Sub openDB()
Set conn = New Adodb.Connection
Set rs = New Adodb.Recordset

With conn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & fn
.Mode = adModeReadWrite
.CursorLocation = adUseClient
.Open
End With

Set rs = conn.OpenSchema(adSchemaTables)
While Not rs.EOF
    If rs!TABLE_TYPE = "TABLE" Then
      Combo1.AddItem (rs!TABLE_NAME)
      'Debug.Print rs!TABLE_NAME
     End If
    rs.MoveNext
Wend

End Sub




'************************************************************************************

Private Sub Command1_Click()
CommonDialog1.ShowOpen
fn = CommonDialog1.FileName

openDB

End Sub

Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
closeDB
conn.Open
With rs
.ActiveConnection = conn
.Source = Combo1.Text
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Open , , , , adCmdTableDirect
End With
'MsgBox Combo1.Text & "asd"
Set TDBGrid1.DataSource = rs
Else
On Error Resume Next
End If

End Sub
Кто пил один и втихомолку, тот век земной прожил без толку...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Список таблиц в базе

Сообщение alibek » 24.09.2008 (Ср) 14:11

Непонятно, что ты хочешь.
Lasciate ogni speranza, voi ch'entrate.

Mario
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 19.10.2005 (Ср) 13:23
Откуда: Из Новосиба

Re: Список таблиц в базе

Сообщение Mario » 24.09.2008 (Ср) 14:16

Динамическое формирование набора колонок таблицы просмотра/редактирования данных.
Кто пил один и втихомолку, тот век земной прожил без толку...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Список таблиц в базе

Сообщение alibek » 24.09.2008 (Ср) 14:32

Понятнее не стало.
Lasciate ogni speranza, voi ch'entrate.

Mario
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 19.10.2005 (Ср) 13:23
Откуда: Из Новосиба

Re: Список таблиц в базе

Сообщение Mario » 24.09.2008 (Ср) 14:53

Например базу открывают два пользователя и каждый по очереди что то меняет!
Нужно что бы это все обновлялось!
типа того как у adodc есть refresh
но у меня без использования adodc.

может как вариант по таймеру отключаться и сразу подключаться к базе с запоминанием положения курсора.
Кто пил один и втихомолку, тот век земной прожил без толку...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Список таблиц в базе

Сообщение alibek » 24.09.2008 (Ср) 15:05

У ADODB.Recordset тоже есть Refresh. И у грида тоже есть Refresh.
Lasciate ogni speranza, voi ch'entrate.

Mario
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 19.10.2005 (Ср) 13:23
Откуда: Из Новосиба

Re: Список таблиц в базе

Сообщение Mario » 24.09.2008 (Ср) 15:15

Буду пробовать! Спасибо Alibek!
Кто пил один и втихомолку, тот век земной прожил без толку...

Mario
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 19.10.2005 (Ср) 13:23
Откуда: Из Новосиба

Re: Список таблиц в базе

Сообщение Mario » 25.09.2008 (Чт) 9:18

Мне вот интересно. Возможно создать подключение к БД с помощью API?
Кто пил один и втихомолку, тот век земной прожил без толку...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Список таблиц в базе

Сообщение alibek » 25.09.2008 (Чт) 9:31

Это и есть API. Если ты не знаешь, как расшифровывается API, то посмотри в словаре.
Lasciate ogni speranza, voi ch'entrate.

Mario
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 19.10.2005 (Ср) 13:23
Откуда: Из Новосиба

Re: Список таблиц в базе

Сообщение Mario » 25.09.2008 (Чт) 9:35

Извиняюсь за глупость свою! :)
Кто пил один и втихомолку, тот век земной прожил без толку...

Mario
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 19.10.2005 (Ср) 13:23
Откуда: Из Новосиба

Re: Список таблиц в базе

Сообщение Mario » 01.10.2008 (Ср) 5:49

А кто нибудь знает можно ли таблицу заполнить данными без использования datacontrol'a?
Кто пил один и втихомолку, тот век земной прожил без толку...

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Список таблиц в базе

Сообщение SLIM » 01.10.2008 (Ср) 8:06

Mario писал(а):А кто нибудь знает можно ли таблицу заполнить данными без использования datacontrol'a?

Можно.
Пишите жизнь на чистовик.....переписать не удастся.....

Mario
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 19.10.2005 (Ср) 13:23
Откуда: Из Новосиба

Re: Список таблиц в базе

Сообщение Mario » 01.10.2008 (Ср) 8:14

А как это сделать подскажите?
Кто пил один и втихомолку, тот век земной прожил без толку...

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Список таблиц в базе

Сообщение SLIM » 01.10.2008 (Ср) 12:00

Данные откуда будут браться? Сам вводить будешь, с текстового файла, с Exel-го, с небес? откуда?
Пишите жизнь на чистовик.....переписать не удастся.....

Mario
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 19.10.2005 (Ср) 13:23
Откуда: Из Новосиба

Re: Список таблиц в базе

Сообщение Mario » 01.10.2008 (Ср) 14:02

Днные будут браться с БД Access
Кто пил один и втихомолку, тот век земной прожил без толку...

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Список таблиц в базе

Сообщение SLIM » 01.10.2008 (Ср) 18:08

А помещать ты их будешь куда?
Пишите жизнь на чистовик.....переписать не удастся.....

Mario
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 19.10.2005 (Ср) 13:23
Откуда: Из Новосиба

Re: Список таблиц в базе

Сообщение Mario » 02.10.2008 (Чт) 6:07

В trueDB grid
Кто пил один и втихомолку, тот век земной прожил без толку...

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Список таблиц в базе

Сообщение SLIM » 02.10.2008 (Чт) 13:18

Если честно не пользовался этим контролом (да и вообще не пользовался контролами для вывода данных из БД и работы с ними). Вообще из БД можно вытянуть в виде любой структуры с помощью ADO (да и DAO тоже, причем помоему быстрее будет). Можно даже в TreeView, в ListBox, в ListView....да хоть куда в любом виде. Также можно даже в TextBox-ы все выносить (присабачить кнопочку для перехода по записям).
Вопрос в другом. Раз я не знаю этот контрол - там скорее всего есть либо адреса ячеек, либо семейство ячеек, либо семейство строк и столбцов (даже понятия не имею). Зная это можно с легкостью выдать данные с помощью ADO
Пишите жизнь на чистовик.....переписать не удастся.....

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Список таблиц в базе

Сообщение Andrey Fedorov » 02.10.2008 (Чт) 15:15

alibek писал(а):OpenSchema.
А ADODC лучше выкинь.


А лучше использовть Tables collection [ADOX] ...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Список таблиц в базе

Сообщение alibek » 02.10.2008 (Чт) 15:45

Так это ADOX подключать надо, лишняя зависимость.
Lasciate ogni speranza, voi ch'entrate.

Mario
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 19.10.2005 (Ср) 13:23
Откуда: Из Новосиба

Re: Список таблиц в базе

Сообщение Mario » 02.10.2008 (Чт) 21:06

А если adodb и любой грид! как не использовать datasource
Кто пил один и втихомолку, тот век земной прожил без толку...


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 266

    TopList