Страница: 1 |
Вопрос: db1.mdb | Добавлено: 15.04.07 20:30 |
Автор вопроса: ![]() |
В базе лежит таблица!
Пример: -------------------------------------------------- Фамилия ! Имя ! ...... -------------------------------------------------- 1 ! 1 ! ...... -------------------------------------------------- 2 ! 2 ! ...... -------------------------------------------------- 3 ! 3 ! ...... -------------------------------------------------- До подключения её к VB надо както узнать названия колонок ну там (Фамилия,Имя и до и т д.) Как это можно сделать? |
Ответы | Всего ответов: 7 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #1 | Добавлено: 15.04.07 20:47 |
До подключения её к VB надо както узнать названия колонок Ну можно попробовать помедитировать, там телепатию применить... Но зачем это тебе?
|
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() Вопросов: 41 Ответов: 239 |
Профиль | Цитата | #2 | Добавлено: 15.04.07 21:02 |
Вот процедура вызова
Public TimeActiv As Long
Public WithEvents adoPrimaryRS As Recordset Private Sub Form_Load() Dim db As Connection Set db = New Connection db.CursorLocation = adUseClient db.Open "PROVIDER=MSDataShape ![]() ![]() Set adoPrimaryRS = New Recordset Имя_таблицы_в_базе$ = "База" Ячейки$ = "Фамилия,Имя,Отчество" adoPrimaryRS.Open "SHAPE {select " + Ячейки$ + " from " + Имя_таблицы_в_базе$ + "} AS ParentCMD APPEND ({select " + Ячейки$ + " from " + Имя_таблицы_в_базе$ + " } AS ChildCMD RELATE Имя TO Имя ) AS ChildCMD", db, adOpenStatic, adLockOptimistic Set grdDataGrid.DataSource = adoPrimaryRS End Sub Проблема такая: База может миняться со временем тоесть там может миняться количество колонок а соответственно при подключении базы в VB указываются названия! типа как я делал (Ячейки$ = "Фамилия,Имя,Отчество") в коде который выше |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #3 | Добавлено: 15.04.07 21:11 |
А сначала подключится, потом сделать запрос на получение колонок таблицы, а потом опираясь на эти данные сделать уже запрос на получение данных из таблицы? |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() Вопросов: 41 Ответов: 239 |
Профиль | Цитата | #4 | Добавлено: 15.04.07 21:16 |
Исходя из моего кода можешь мне помочь? Я в базах мало понимаю.. Плиз |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() Вопросов: 41 Ответов: 239 |
Профиль | Цитата | #5 | Добавлено: 15.04.07 21:19 |
А сначала подключится, потом сделать запрос на получение колонок таблицы, а потом опираясь на эти данные сделать уже запрос на получение данных из таблицы?
Както надо в Ячейки$ программно указать имена столбцов, а как это сделать я не знаю |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #6 | Добавлено: 15.04.07 23:00 |
Чем помочь? Как на ADO узнать название столбцов в таблице? - Могу. С этого и надо было начинать вопрос.
Public DescriptionLastError As String
Public Type ColumnInfo sValue As String sType As ADOX.KeyTypeEnum sName As String End Type Public Function GetListStolbec(DBPath As String, DBTable As String, _ ReturnArray() As ColumnInfo, Optional Password As String) As Long '+ 'Âîçâðàùàåò ìàññèâ ñòîëáöîâ â òàáëèöå ' ñëó÷àå óñïåõà ôóíêöèÿ ïðèíèìàåò çíà÷åíèå 0, èíà÷å íîìåð îøèáêè Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command Dim rs As New ADODB.Recordset On Error GoTo e cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0 ![]() IIf(Trim(Password) <> "", "Jet OLEDB:Database Password=" & Trim$(Password$) & ";", "" ![]() cn.Open If cn.state = 0 Then cn.Open Set cmd.ActiveConnection = cn cmd.CommandText = "[" & DBTable & "]" cmd.CommandType = adCmdTable Set rs = cmd.Execute MyFieldCount = rs.Fields.Count ReDim ReturnArray(MyFieldCount - 1) For myIndex = 0 To MyFieldCount - 1 ReturnArray(myIndex).sName = rs.Fields(myIndex).Name ReturnArray(myIndex).sType = rs.Fields(myIndex).Type ReturnArray(myIndex).sValue = rs.Fields(myIndex).Value Next GetListStolbec = 0 Set rs = Nothing Set cmd = Nothing Set cn = Nothing Exit Function e: Select Case Err.Number Case 94, 3021 Resume Next End Select ReDim ReturnArray(0) Debug.Print Err.Description GetListStolbec = Err.Number ![]() On Error GoTo 0: On Error Resume Next Set rs = Nothing Set cmd = Nothing Set cn = Nothing End Function |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() Вопросов: 41 Ответов: 239 |
Профиль | Цитата | #7 | Добавлено: 16.04.07 11:06 |
Блин HACKER Спасибо огромное тютильку в тютильку как часы работает!
Выручил!
|
Страница: 1 |
|