powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Запрос внутри Excel
11 сообщений из 11, страница 1 из 1
Запрос внутри Excel
    #34589921
Фотография natalitvinenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Win98, Excel97
Почему может не работать таковая незамысловатая процедура
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub qqq()
Dim cnn As New ADODB.Connection, rst As New ADODB.Recordset
strNameFile = "C:\Мои документы\Программирование\1\TelDenga"
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strNameFile & _
"; Extended Properties=""Excel 8.0;HDR=No;IMEX=1"""
cnn.Open strConnect
rst.Open "select f2 from [PeopleTel$A1:E300] where f5='326-50-13'", cnn
Dim a As String
a = rst.Fields("f2")
'ThisWorkbook.Sheets("Лист2").Range("A5").Value = a 
ThisWorkbook.Sheets("Лист2").Cells.Clear
ThisWorkbook.Sheets( 2 ).Range("A5").CopyFromRecordset rst
End Sub
Ругается на последней строке (где CopyFromRecordset)- пишет "Класс не поддерживает программирование объектов", ошибка выполнения 430
Мыслю - а не старая ли у меня версия dll ? Дык вроде 2.1
А какие вообще нужно библиотеки прикручивать?
...
Рейтинг: 0 / 0
Запрос внутри Excel
    #34589987
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот это a = rst.Fields("f2") попробуйте убрать
2.1 должно хватать, хотя сейчас уже 2.8 есть.
...
Рейтинг: 0 / 0
Запрос внутри Excel
    #34589990
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natalitvinenkoМыслю - а не старая ли у меня версия dll ? Дык вроде 2.1
А какие вообще нужно библиотеки прикручивать?ADO 2.1? Вообще-то это действительно староватая версия. Уже много лет как 2.8 используется в большинстве систем.
А вот кто виноват Excel97 или MDAC 2.1 что не работает CopyFromRecordset я не уверен...
Но можно начать с выкачивания более свежего MDAC'а...
...
Рейтинг: 0 / 0
Запрос внутри Excel
    #34590762
Фотография natalitvinenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeвот это a = rst.Fields("f2") попробуйте убрать
2.1 должно хватать, хотя сейчас уже 2.8 есть.

Оно вообще - то как раз работало... Закомментировала вместе с соответсвующим dim. Не пашет.
Выкачала 2.8. Не помогло.
Предполагаю, что Excel 97 просто не поддерживает метод CopyFromRecordset (а жаль, его весь форум юзает, он такой удобный, судя по опять же по форуму) - такой вывод я сделала отсюда How to transfer data from an ADO Recordset to Excel with automation
...
Рейтинг: 0 / 0
Запрос внутри Excel
    #34590936
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если указать тип открываемого рекордсета и тип открываемого конекта?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim cnn As New ADODB.Connection, rst As New ADODB.Recordset
strNameFile = "C:\Мои документы\Программирование\1\TelDenga"
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strNameFile & _
"; Extended Properties=""Excel 8.0;HDR=No;IMEX=1"""

'устанавливаем тип курсора
cnn.CursorLocation = adUseClient

cnn.Open strConnect

'открываем рекордсет
rst.Open "select f2 from [PeopleTel$A1:E300] where f5='326-50-13'", cnn, adOpenForwardOnly, adLockReadOnly 

ЗЫЖ вполне может хватить и указания типа курсора

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Запрос внутри Excel
    #34590944
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не посмотрел версию вашего Excell
в таком случае вам надо использовать не ADO, а DAO (по вашей ссылке)

Код: plaintext
CopyFromRecordset in Excel 97 supports only DAO recordsets

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Запрос внутри Excel
    #34590964
Фотография natalitvinenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKotа если указать тип открываемого рекордсета и тип открываемого конекта?

Не помогло...
А можно ли то же самое сделать через DAO? Вроде таких примеров на форуме не было.. Есть такая мысль, что через DAO может и получится:"Имейте в виду, что Excel 97 поддерживает работу метода CopyFromRecordset только для простых наборов данных DAO" ( http://www.visual.2000.ru/develop/ms-vb/tips/0106.htm#tip383 )
...
Рейтинг: 0 / 0
Запрос внутри Excel
    #34591019
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
после того как я установил на свой комп Internet Explorer 6-ая версия,
OLE объекты Excel-я стали доступными
...
Рейтинг: 0 / 0
Запрос внутри Excel
    #34591071
Фотография natalitvinenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKotне посмотрел версию вашего Excell

А можно выциганить пример? Я на форуме не нашла. Я вчера долго ковырялась в том, что спрашивали до меня - и такое не попалось.
...
Рейтинг: 0 / 0
Запрос внутри Excel
    #34591088
Фотография natalitvinenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
klen_после того как я установил на свой комп Internet Explorer 6-ая версия,

Уже шестой.
...
Рейтинг: 0 / 0
Запрос внутри Excel
    #34591206
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natalitvinenko HandKotне посмотрел версию вашего Excell

А можно выциганить пример? Я на форуме не нашла. Я вчера долго ковырялась в том, что спрашивали до меня - и такое не попалось.
msdn
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim dbsNorthwind As Database
	Dim rstEmployees As Recordset
	

	Set dbsNorthwind = OpenDatabase("Northwind.mdb")
	Set rstEmployees = dbsNorthwind.OpenRecordset( _
		"SELECT FirstName, LastName FROM Employees " & _
		"ORDER BY LastName", dbOpenSnapshot)
потом copyfromrecordset
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Запрос внутри Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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