powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Recordset обращение
13 сообщений из 13, страница 1 из 1
Recordset обращение
    #34828296
устал...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никак не могу разобраться - что нужно написать в запросе, для того, чтобы обратиться, скажем к столбцу "D":
rst.Open "SELECT [????] FROM [Sheet1$A1:D50]", cnn
...
Рейтинг: 0 / 0
Recordset обращение
    #34828342
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если нет заголовков, то вроде наименование идет как
Код: 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
Recordset обращение
    #34828747
LETME
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, подскажите, пожалуйста - что у меня здесь не так?

Код: 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
Recordset обращение
    #34828774
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если HDR=No, тогда F2
HDR=Yes, тогда то что написано в "B1"
...
Рейтинг: 0 / 0
Recordset обращение
    #34828792
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HDR=No
...
Рейтинг: 0 / 0
Recordset обращение
    #34828795
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Recordset обращение
    #34828830
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Recordset обращение
    #34829019
LETME
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodor, Вы крут!
Всё заработало...
Однако, остались вопросы:
а как собственно можно присваивать имена столбцам?
и почему в данном случае rst.RecordCount выдаёт значение -1?
...
Рейтинг: 0 / 0
Recordset обращение
    #34829071
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Recordset обращение
    #34829106
LETME
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Recordset обращение
    #34829203
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
? rst.Fields(0)
...
Рейтинг: 0 / 0
Recordset обращение
    #34830153
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Recordset обращение
    #34831122
LETME
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...ооо чорт...
Уважаемый vkodor, курсор то я и правда двигать забыл. Стыдно.
А с заголовками теперь полностью разобрался - всё чётко и ясно.
Спасибо за доходчивые объяснения!
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Recordset обращение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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