Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: db1.mdb Добавлено: 15.04.07 20:30  

Автор вопроса:  Stars
В базе лежит таблица!

Пример:

--------------------------------------------------
  Фамилия ! Имя ! ......
--------------------------------------------------
      1 ! 1 ! ......
--------------------------------------------------
      2 ! 2 ! ......
--------------------------------------------------
      3 ! 3 ! ......
--------------------------------------------------

До подключения её к VB надо както узнать названия колонок ну там (Фамилия,Имя и до и т д.)

Как это можно сделать?

Ответить

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

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 15.04.07 20:47
До подключения её к VB надо както узнать названия колонок
Ну можно попробовать помедитировать, там телепатию применить... Но зачем это тебе?

Ответить

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



Вопросов: 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;Data PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=db1.mdb;"
  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
Автор ответа:
 HACKER


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #3 Добавлено: 15.04.07 21:11
А сначала подключится, потом сделать запрос на получение колонок таблицы, а потом опираясь на эти данные сделать уже запрос на получение данных из таблицы?

Ответить

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



Вопросов: 41
Ответов: 239
 Профиль | | #4 Добавлено: 15.04.07 21:16
Исходя из моего кода можешь мне помочь? Я в базах мало понимаю.. Плиз

Ответить

Номер ответа: 5
Автор ответа:
 Stars



Вопросов: 41
Ответов: 239
 Профиль | | #5 Добавлено: 15.04.07 21:19
А сначала подключится, потом сделать запрос на получение колонок таблицы, а потом опираясь на эти данные сделать уже запрос на получение данных из таблицы?


Както надо в Ячейки$ программно указать имена столбцов, а как это сделать я не знаю

Ответить

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


 

Разработчик 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;Data Source=" & DBPath$ & ";" & _
        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
    ;DescriptionLastError = Err.Description
    On Error GoTo 0: On Error Resume Next
    Set rs = Nothing
    Set cmd = Nothing
    Set cn = Nothing
End Function

Ответить

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



Вопросов: 41
Ответов: 239
 Профиль | | #7 Добавлено: 16.04.07 11:06
Блин HACKER Спасибо огромное тютильку в тютильку как часы работает!
Выручил!

Ответить

Страница: 1 |

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



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