Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Доступ к базе данных Excel Добавлено: 12.05.09 23:48  

Автор вопроса:  Zahar | Web-сайт: partnerka-ru.info
При доступе к таблице Excel через DAO или ADO получается, что именам полей (Filds.Name) присваются значения первых ячеек соответствующих столбцов листа Excel, а если первая ячейка пуста, то полю присваивается имя F?, где ? - номер соответствующего столбца.
Можно ли как-то осуществить доступ к Excel, чтобы полям присваивались заранее известные номера (например F1, F2, ... F100), не зависимо от содержимого верхних ячеек?.
P.S. Конечно, можно принудительно вставлять пустой ряд в соответствующий лист книги Excel перед тем, как осущесвить соединение с базой данных. Но, хотелось бы надеяться, что есть какое-либо более простое и изящное решение, скажем посредством особого SQL-запроса или настроек DAO(ADO).

Ответить

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

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



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #1 Добавлено: 13.05.09 03:37
Без вариантов, придется готовить таблицы самому имхо.

Ответить

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



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #2
Добавлено: 13.05.09 04:04
  1.   Dim cnn As ADODB.Connection
  2.   Dim rs As ADODB.Recordset
  3.   Set cnn = New ADODB.Connection
  4.   cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  5.   "Data Source=D:\11.xls;" & _
  6.   "Extended Properties=""Excel 8.0;HDR=No;IMEX=1"""
  7.   Set rs = New ADODB.Recordset
  8.   With rs
  9.     Set .ActiveConnection = cnn
  10.     .Source = "select * from [Sheet1$]"
  11.     .Open
  12.   End With
  13.   Debug.Print rs.Fields(0).Value
  14.   Debug.Print rs.Fields(0).Name
  15.   rs.Close
  16.   cnn.Close

Типо как то так имя поля F1

Ответить

Номер ответа: 3
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #3
Добавлено: 13.05.09 09:05
Вопрос: зачем задавать имена типа F1, F2... F255, не проще ли сразу обращаться к полям по их индексу, игнорируя имена полей? В программе можно создать константное перечисление внутренних имен полей и обращаться к полям по значащему имени, например так:
  1. Option Explicit
  2. Public Enum BaseTab1
  3.     tb1Code = 0
  4.     tb1Name = 1
  5.     tb1Description = 2
  6.     tb1Reference = 3
  7. End Enum
  8.  
  9. Sub qwe()
  10.     Dim Field1 As BaseTab1
  11.     Field1 = tb1Code
  12.     Debug.Print rs.Fields(Field1).Value
  13.     Debug.Print rs.Fields(tb1Name).Value
  14.     Debug.Print rs.Fields(tb1Description).Value
  15. End Sub

Ответить

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



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #4
Добавлено: 13.05.09 11:34
 mc-black, Ответ: имена полей задаются автоматически, вопроса дальнейшей обработки не стояло. Да согласен, твой вариант для дальнейшей обработки удобен, но он не единственный

Ответить

Страница: 1 |

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



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