Страницы: 1
RSS
CopyRecordset. Ошибка в методе
 
Sub RecordS()  
 
With Worksheets("Лист1").Range("А1")  
.Recordset = OpenDatabase("O:\Sales.mdb")  
.OpenRecordset ("Клиент")  
.CopyFromRecordset ("Клиент")  
End With  
 
End Sub  
 
Говорит что Sub or Function Not Defined указывая на метод OpenDatabase.  
 
Что не так?
 
Sub RecordS()  
 
With Worksheets("Лист1").Range("А1")  
.Recordset = OpenDatabase("O:\Sales.mdb")  
.OpenRecordset ("Клиент")  
.CopyFromRecordset ("Клиент")  
End With  
 
End Sub  
 
Говорит что Sub or Function Not Defined указывая на метод OpenDatabase.  
 
Что не так?
 
потому что методы ADO работают с объектами ADO  
а не с объектами экселя  
 
 
'Объявление объектов подсоединение к базе данных и таблица бд.  
 
Dim Cn As ADODB.Connection, Rs As ADODB.Recordset  
     
Dim MyConn, sSQL As String  
'ссылка на файл бд  
MyConn = "C:\AAA\db1.mdb"  
'SQL запрос  
sSQL = "SELECT Table1.Data, Table1.Count FROM Table1;"  
 
   'Создаем таблицу БД с которой можем работать из экселя  
   Set Cn = New ADODB.Connection  
   With Cn  
       .Provider = "Microsoft.Jet.OLEDB.4.0"  
       .Open MyConn  
       Set Rs = .Execute(sSQL)  
   End With  
 
поскольку с ADO не работал дальше разбирайтесь сами
 
Спасибо!
 
cnnConn As ADODB.Connection  
 
Пишет ошибку User-defined type not defined
 
cnnConn As ADODB.Connection  
 
Пишет ошибку User-defined type not defined
 
{quote}{login=}{date=18.02.2008 01:00}{thema=}{post}cnnConn As ADODB.Connection  
 
Пишет ошибку User-defined type not defined{/post}{/quote}  
 
Нужно в редакторе VB в tolls/referenses  
подключит библиотеку ADO  
microsoft activex data objects 2.8 library  
 
(2.8 это версия)
 
{quote}{login=}{date=18.02.2008 01:00}{thema=}{post}cnnConn As ADODB.Connection  
 
Пишет ошибку User-defined type not defined{/post}{/quote}  
 
Нужно в редакторе VB в tolls/referenses  
подключит библиотеку ADO  
microsoft activex data objects 2.8 library  
 
(2.8 это версия)
 
лоханулся, извиняюсь  
речь шла о DAO  
 
через некоторое время поправлюсь
 
лоханулся, извиняюсь  
речь шла о DAO  
 
через некоторое время поправлюсь
 
Спасибо. Все разобрался с помощью вас и справки. Код выглядет примерно так  
 
Option Explicit  
Sub MakinRecordset()  
 
Dim cnnConn As ADODB.Connection  
Dim cmdCommand As ADODB.Command  
Dim Rs As ADODB.Recordset  
Dim MyConn As String  
Dim sSQL As String  
Dim objPivotCache As Variant  
 
' Определение переменных    
MyConn = "O:\Sales.mdb"  
sSQL = "SELECT Клиент, [Сумма руб] FROM Sales;"
 
' Создание связи с БД  
Set cnnConn = New ADODB.Connection  
With cnnConn  
.Provider = "Microsoft.Jet.OLEDB.4.0"  
.Open MyConn  
End With  
 
' Создание комманды, приравненной к переменной sSQL (SQL запроса)  
Set cmdCommand = New ADODB.Command  
Set cmdCommand.ActiveConnection = cnnConn  
With cmdCommand  
   .CommandText = sSQL  
   .CommandType = adCmdText  
   .Execute  
End With  
 
' Открытие рекордсета  
Set Rs = New ADODB.Recordset  
Set Rs.ActiveConnection = cnnConn  
Rs.Open cmdCommand  
 
' еренос данных из рекордсета в сводную таблицы (например)  
Set objPivotCache = ActiveWorkbook.PivotCaches.Add( _  
   SourceType:=xlExternal)  
Set objPivotCache.Recordset = Rs  
With objPivotCache  
   .CreatePivotTable TableDestination:=Range("A3"), _  
       TableName:="Ïðîäàæè"  
End With  
 
' Закрытие связи ADO  
cnnConn.Close  
 
 
 
End Sub
 
Спасибо. Все разобрался с помощью вас и справки. Код выглядет примерно так  
 
Option Explicit  
Sub MakinRecordset()  
 
Dim cnnConn As ADODB.Connection  
Dim cmdCommand As ADODB.Command  
Dim Rs As ADODB.Recordset  
Dim MyConn As String  
Dim sSQL As String  
Dim objPivotCache As Variant  
 
' Определение переменных    
MyConn = "O:\Sales.mdb"  
sSQL = "SELECT Клиент, [Сумма руб] FROM Sales;"
 
' Создание связи с БД  
Set cnnConn = New ADODB.Connection  
With cnnConn  
.Provider = "Microsoft.Jet.OLEDB.4.0"  
.Open MyConn  
End With  
 
' Создание комманды, приравненной к переменной sSQL (SQL запроса)  
Set cmdCommand = New ADODB.Command  
Set cmdCommand.ActiveConnection = cnnConn  
With cmdCommand  
   .CommandText = sSQL  
   .CommandType = adCmdText  
   .Execute  
End With  
 
' Открытие рекордсета  
Set Rs = New ADODB.Recordset  
Set Rs.ActiveConnection = cnnConn  
Rs.Open cmdCommand  
 
' еренос данных из рекордсета в сводную таблицы (например)  
Set objPivotCache = ActiveWorkbook.PivotCaches.Add( _  
   SourceType:=xlExternal)  
Set objPivotCache.Recordset = Rs  
With objPivotCache  
   .CreatePivotTable TableDestination:=Range("A3"), _  
       TableName:="Ïðîäàæè"  
End With  
 
' Закрытие связи ADO  
cnnConn.Close  
 
 
 
End Sub
 
спасибо что выложили результат.  
просто всё равно остаётся вопрос с использованием встроенных методов  
для коллекции книг  
Workbooks.OpenDatabase("C:\AAA\db1.mdb")  
для ячейки  
range.CopyFromRecordset  
а вот метод  
.OpenRecordset("employees") формально относиться к dao database  
но как его применять в экселе непонятно  
встретил только для querytable.recordset  
With Worksheets(1).QueryTables(1)  
   .Recordset = OpenDatabase("c:\Nwind.mdb").OpenRecordset("employees")  
   .Refresh  
End With
 
спасибо что выложили результат.  
просто всё равно остаётся вопрос с использованием встроенных методов  
для коллекции книг  
Workbooks.OpenDatabase("C:\AAA\db1.mdb")  
для ячейки  
range.CopyFromRecordset  
а вот метод  
.OpenRecordset("employees") формально относиться к dao database  
но как его применять в экселе непонятно  
встретил только для querytable.recordset  
With Worksheets(1).QueryTables(1)  
   .Recordset = OpenDatabase("c:\Nwind.mdb").OpenRecordset("employees")  
   .Refresh  
End With
Страницы: 1
Наверх