Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Recordset обращение / 13 сообщений из 13, страница 1 из 1
26.09.2007, 15:48:44
    #34828296
устал...
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset обращение
Никак не могу разобраться - что нужно написать в запросе, для того, чтобы обратиться, скажем к столбцу "D":
rst.Open "SELECT [????] FROM [Sheet1$A1:D50]", cnn
...
Рейтинг: 0 / 0
26.09.2007, 15:55:57
    #34828342
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset обращение
если нет заголовков, то вроде наименование идет как
Код: plaintext
1.
2.
3.
4.
5.
F1 - A
F2 - B
F3 - C
F4 - D
F5 - E
...

и т.д


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
26.09.2007, 17:04:11
    #34828747
LETME
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset обращение
Хорошо, подскажите, пожалуйста - что у меня здесь не так?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Public Sub try()
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=пример.xls;" & _
    "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
            
    rst.Open "SELECT [F2] FROM [Ëèñò1$A1:D50]", cnn
    
    ThisWorkbook.Sheets( 1 ).Range("A30").CopyFromRecordset rst
   
    rst.Close
    cnn.Close
    
    Set rst = Nothing
    Set cnn = Nothing

End Sub

И как мне в Connection правильно обратиться к текущей книге?
...
Рейтинг: 0 / 0
26.09.2007, 17:08:04
    #34828774
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset обращение
если HDR=No, тогда F2
HDR=Yes, тогда то что написано в "B1"
...
Рейтинг: 0 / 0
26.09.2007, 17:10:12
    #34828792
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset обращение
HDR=No
...
Рейтинг: 0 / 0
26.09.2007, 17:10:39
    #34828795
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset обращение
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Public Sub try()
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & ThisWorkbook.FullName & ";" & _
    "Extended Properties=""Excel 8.0;HDR=No;IMEX=1"""
            
    rst.Open "SELECT [F2] FROM [Ëèñò1$A1:D50]", cnn
    
    ThisWorkbook.Sheets( 1 ).Range("A30").CopyFromRecordset rst
   
    rst.Close
    cnn.Close
    
    Set rst = Nothing
    Set cnn = Nothing

End Sub
...
Рейтинг: 0 / 0
26.09.2007, 17:17:01
    #34828830
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset обращение
...
Рейтинг: 0 / 0
26.09.2007, 17:52:15
    #34829019
LETME
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset обращение
vkodor, Вы крут!
Всё заработало...
Однако, остались вопросы:
а как собственно можно присваивать имена столбцам?
и почему в данном случае rst.RecordCount выдаёт значение -1?
...
Рейтинг: 0 / 0
26.09.2007, 18:03:05
    #34829071
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset обращение
LETMEvkodor, Вы крут!
Всё заработало...
Однако, остались вопросы:
а как собственно можно присваивать имена столбцам?
и почему в данном случае rst.RecordCount выдаёт значение -1?
Если я правильно понял про имена, то
Код: plaintext
1.
2.
3.
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=пример.xls;" & _
    "Extended Properties=""Excel 8.0;HDR=No;IMEX=1"""
            
    rst.Open "SELECT Показатель01 FROM [Ëèñò1$A1:D50]", cnn
а RecordCount будет выдавать количество если после строки
Set rst = New ADODB.Recordset
поставить
Код: plaintext
rst.CursorLocation = adUseClient
Код: 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.
Public Sub try()
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    
    rst.CursorLocation = adUseClient
    
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & ThisWorkbook.FullName & ";" & _
    "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
            
    rst.Open "SELECT Показатель01 FROM [Лист1$A1:D50]", cnn
    
    ThisWorkbook.Sheets( 1 ).Range("A30").CopyFromRecordset rst
    
    MsgBox rst.RecordCount
    
    rst.Close
    cnn.Close
    
    Set rst = Nothing
    Set cnn = Nothing

End Sub
...
Рейтинг: 0 / 0
26.09.2007, 18:10:21
    #34829106
LETME
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset обращение
vkodor :)
Всё, последний вопрос и отстану))

Да, теперь количество строк считаются, но rst.EOF не находит :( и значение rst.Fields("F1") выдаёт Null...

Код: plaintext
1.
2.
3.
    Do Until rst.EOF
        Debug.Print rst.Fields("F1")
    Loop

PS: что здесь за фигня такая с рекордсетами... я сравниваю с Access и не понимаю...
...
Рейтинг: 0 / 0
26.09.2007, 18:30:19
    #34829203
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset обращение
? rst.Fields(0)
...
Рейтинг: 0 / 0
27.09.2007, 10:15:50
    #34830153
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset обращение
LETMEvkodor :)
Всё, последний вопрос и отстану))

Да, теперь количество строк считаются, но rst.EOF не находит :( и значение rst.Fields("F1") выдаёт Null...

Код: plaintext
1.
2.
3.
    Do Until rst.EOF
        Debug.Print rst.Fields("F1")
    Loop

PS: что здесь за фигня такая с рекордсетами... я сравниваю с Access и не понимаю...
Плохо сравниваешь.

Курсор двигать будем?
Код: plaintext
1.
2.
3.
    Do Until rst.EOF
        Debug.Print rst.Fields("F1")
        rst.MoveNext
    Loop
опять таки повторюсь если в строке подключения HDR=No, то обращаемся как "F1","F2","F3" и т.д.
т.е. если в селекте ты использовал "F3", то и вывод д.б. rst.Fields("F3")

если в строке подключения HDR=Yes, то обращаемся как "Показатель01"
...
Рейтинг: 0 / 0
27.09.2007, 13:41:53
    #34831122
LETME
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Recordset обращение
...ооо чорт...
Уважаемый vkodor, курсор то я и правда двигать забыл. Стыдно.
А с заголовками теперь полностью разобрался - всё чётко и ясно.
Спасибо за доходчивые объяснения!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Recordset обращение / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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