Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Выбор таблиц из списка доступных в БД Добавлено: 23.09.08 18:21  

Автор вопроса:  Михаил
но условие такое, что мы не знаем названия этих таблиц!
есть adodc и true DBGrid.

в настройках (через custom\record source\ table or stored procedure name если указано в command type 2) adodc можно выбирать таблицы, но как сделать это в run-time.

подскажите пожалуйста!!

Ответить

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

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



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #1 Добавлено: 24.09.08 08:08
Подключаешь в References библиотеку Microsoft DAO 3.6 Object Library
  1.     Dim t As TableDef
  2.     Dim db As Database
  3.     Set db = OpenDatabase(App.Path & "\work.mdb")
  4.     For Each t In db.TableDefs
  5.         MsgBox t.Name
  6.     Next t

Ответить

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



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #2 Добавлено: 24.09.08 08:18
P.S. Дает все таблицы, включая скрытые системные.
Можно и по-другому: попробовать считать данные из таблицы msysobjects, но там с правами доступа заморочка может возникнуть.

Ответить

Номер ответа: 3
Автор ответа:
 Михаил



Вопросов: 1
Ответов: 4
 Профиль | | #3 Добавлено: 24.09.08 08:21
Простите! Забыл сказать что мне нужно на ADO.
И скрытае и системные нужно откунуть.

Ответить

Номер ответа: 4
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #4 Добавлено: 24.09.08 08:29
ну так список получишь, и работай с ними в адо на здоровье. :) названия скрытых таблиц начинаются с msys*
чисто на адо - я не знаю как. только считать таблицу msysobjects, получится - дерзай.

Ответить

Номер ответа: 5
Автор ответа:
 Михаил



Вопросов: 1
Ответов: 4
 Профиль | | #5 Добавлено: 24.09.08 10:24
Вот вроде бы нашел решение! Но не работает. Подскажите а тоя уже совсем не соображаю!

Public Sub OpenSchemaX()
  ;Dim cnn1 As New ADODB.Connection
  ;Dim rstSchema As ADODB.Recordset
  cnn1.Open "Provider=Microsoft.Jet.OLEDB.4.0; _
      ;Data Source=C:\VB-DB\Nwind.mdb;"
  Set rstSchema = cnn1.OpenSchema(adSchemaTables)
    ;Do Until rstSchema.EOF
    If rstSchema.Fields("TABLE_TYPE";) = "VIEW" Then
      MsgBox "View name: " & rstSchema.Fields _
         ;("TABLE_NAME";) & vbCr
    End If
    rstSchema.MoveNext
  Loop
  rstSchema.Close
  cnn1.Close
End Sub

Ответить

Номер ответа: 6
Автор ответа:
 Михаил



Вопросов: 1
Ответов: 4
 Профиль | | #6 Добавлено: 24.09.08 11:14
  1. While Not rs.EOF
  2.     If rs!TABLE_TYPE = "TABLE" Then
  3.       Combo1.AddItem (rs!TABLE_NAME)
  4.       Debug.Print rs!TABLE_NAME
  5.      End If
  6.     rs.MoveNext


вот это работает

Ответить

Номер ответа: 7
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #7 Добавлено: 24.09.08 11:30
пятый пост выглядит отпадно. :)

Ответить

Номер ответа: 8
Автор ответа:
 Михаил



Вопросов: 1
Ответов: 4
 Профиль | | #8 Добавлено: 24.09.08 11:31
Ага! Забыл в код включить

Ответить

Страница: 1 |

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



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