Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel->ADO->SQL / 10 сообщений из 10, страница 1 из 1
08.05.2006, 07:24
    #33714886
SaVaS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel->ADO->SQL
всем привет!! подскажите мона ли брать таблиццы из EXcel и экспортировать их в sql при этом делать выборку по столбцам =)) спасибо
...
Рейтинг: 0 / 0
08.05.2006, 13:00
    #33715058
timur999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel->ADO->SQL
А как хотите из XL читать через ADO или XL?
...
Рейтинг: 0 / 0
08.05.2006, 13:49
    #33715105
Ламер Ламерович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel->ADO->SQL
Можно прчитать данные так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Sub getXLData(ByVal vstrWorkbookFullName As String, _
              ByVal vstrWorksheetName As String, _
              Optional ByVal vstrColumns As String = "*", _
              Optional ByVal vstrRange As String = "")
    Dim conn As Object
    Dim rs As Object
    Dim strConnString As String
    Dim strSQL As String

    Set conn = CreateObject("ADODB.Connection")
    strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";" _
                    & "Data Source=" & vstrWorkbookFullName
    conn.Open strConnString
    
    Set rs = CreateObject("ADODB.Recordset")

    strSQL = "SELECT " & vstrColumns & " FROM [" & vstrWorksheetName & "$" & vstrRange & "]"
    rs.Open strSQL, conn, adOpenStatic, adLockReadOnly

    rs.Close
    Set rs = Nothing
    conn.Close
    Set conn = Nothing
End Sub
Примеры вызова:
Взять данные первого столбца:
getXLData "c:\book1.xls", "Sheet1" , "F1"
для всех
getXLData "c:\book1.xls", "Sheet1"

Можно и адрес Range указать
...
Рейтинг: 0 / 0
08.05.2006, 22:42
    #33715590
barrabas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel->ADO->SQL
Условие WHERE тоже не мешало бы добавить :)
_____________________________________
А я хочу Брежнева, чтобы все было по прежнему... "Стволы"
...
Рейтинг: 0 / 0
11.05.2006, 05:36
    #33719191
Excel->ADO->SQL
А если надо данные в запрос из определенных столбцов отобрать, в соответствии с заголовками в первой строке? Можно без кода, подкиньте просто идею, если можно.
...
Рейтинг: 0 / 0
11.05.2006, 10:45
    #33719674
barrabas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel->ADO->SQL
так и составляй запрос и какой нужно
тут тонкость есть одна
HDR=No - заголовки не читаюся, т.е
имякол-во летИван 15Петр20
если не указан vstrRange, что нужно брать записи со второй строки например = "А2:В10" то "имя" и "коли-во лет" тоже попадут в таблицу причем второй столбец станет текстовым, т.к. берется тип данных первой строки, для того чтобыэтого избежать нужно или указывать рэндж или HDR=YES, но во втором случае поля в рекордсете будут иметь имена из первой строки, а в первом F1,F2 и тд
С этим разобрался?
теперь просто пиши нужную тебе strSQL = "SELECT ..."
...
Рейтинг: 0 / 0
11.05.2006, 10:49
    #33719693
Ламер Ламерович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel->ADO->SQL
ИгорьЧерниенкоА если надо данные в запрос из определенных столбцов отобрать, в соответствии с заголовками в первой строке? Можно без кода, подкиньте просто идею, если можно.
должно быть HDR=Yes:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Sub getXLData(ByVal vstrWorkbookFullName As String, _
              ByVal vstrWorksheetName As String, _
              Optional ByVal vstrColumns As String = "*", _
              Optional ByVal vstrRange As String = "", _
              Optional ByVal vfUseHeader As Boolean)
    
    Const adOpenStatic =  3 
    Const adLockReadOnly =  1 
    
    Dim conn As Object
    Dim rs As Object
    Dim strConnString As String
    Dim strSQL As String
    On Error GoTo HandleError
    Set conn = CreateObject("ADODB.Connection")
    strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=""Excel 8.0;HDR=" & IIf(vfUseHeader, "Yes", "No") & ";IMEX=1"";" _
                    & "Data Source=" & vstrWorkbookFullName
    conn.Open strConnString
    
    Set rs = CreateObject("ADODB.Recordset")

    strSQL = "SELECT " & vstrColumns & " FROM [" & vstrWorksheetName & "$" & vstrRange & "]"
    rs.Open strSQL, conn, adOpenStatic, adLockReadOnly
    'что-то читаем, передаем данные
    rs.Close
    Set rs = Nothing
    conn.Close
    Set conn = Nothing
HandleExit:
    Exit Sub
HandleError:
    MsgBox "Error# " & Err.Number & vbCrLf & Err.Description
    Resume HandleExit
End Sub
...
Рейтинг: 0 / 0
11.05.2006, 11:43
    #33719915
barrabas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel->ADO->SQL
условие добавить опять забыл
мне кажетсяч лучше сделать это функцией а возвращать она будет рекордсет
_____________________________________
А я хочу Брежнева, чтобы все было по прежнему... "Стволы"
...
Рейтинг: 0 / 0
11.05.2006, 12:37
    #33720102
Ламер Ламерович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel->ADO->SQL
barrabas
мне кажетсяч лучше сделать это функцией а возвращать она будет рекордсет

Тогда нельзя закрывать Connection.
...
Рейтинг: 0 / 0
11.05.2006, 12:51
    #33720158
barrabas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel->ADO->SQL
Ламер Ламерович barrabas
мне кажетсяч лучше сделать это функцией а возвращать она будет рекордсет

Тогда нельзя закрывать Connection.
а ну да
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel->ADO->SQL / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]