Class does not support automation or does not support expected interface

NikP
Дата: 30.11.2006 12:20:28
Люди помогите
горю по полной
вчера рекордсет работал, а сегодня вот такую фигню выдает
что делать?
Владимир Саныч
Дата: 30.11.2006 12:21:19
Пододвиньте окно с Аксессом поближе к окну с форумом.
NikP
Дата: 30.11.2006 12:25:03
Владимир Саныч
Пододвиньте окно с Аксессом поближе к окну с форумом.

не совсем понял
если какой рекордсет, то DAO
офис 2003
NikP
Дата: 30.11.2006 12:32:12
если нужен код
прошу сюда
Allll
Дата: 30.11.2006 12:33:05
А чё непонятно-то? Не видать Санычу из Израиля монитор Вашего компьютера.

Мне, из Нижнего Новгорода видно плохо, а уж ему и подавно.

PS: покажите строчку на которой ругается. :)
NikP
Дата: 30.11.2006 12:35:28
    Dim xlApp As Object
    Dim wkb As Workbook
    Dim sht1 As Worksheet
    Dim sht2 As Worksheet

    Set xlApp = CreateObject("excel.application")
    Set wkb = xlApp.Workbooks.Add
    Set sht1 = wkb.Sheets("Лист1")
    Set sht2 = wkb.Sheets("Лист2")

    xlApp.Visible = True
    
    Manager = ""
    
    Set MyDb = CurrentDb
    MySQL = "SELECT q_Otchet.Grup_Grup, q_Otchet.Goods_Goods, q_Otchet.Ed_Goods, Sum(q_Otchet.Kolvo_Zakaz) AS Kolvo_Zakaz, Sum(q_Otchet.Ves) AS Ves" & _
            " FROM (SELECT tbl_Grup.ID_Grup, tbl_Grup.Grup_Grup, tbl_Goods.Goods_Goods, tbl_Goods.Ed_Goods, tbl_Zakaz.Kolvo_Zakaz, [Kolvo_Zakaz]*[Kr_Goods]/1000 AS Ves, tbl_Zavod.ID_Zavod" & _
            " FROM tbl_Zavod INNER JOIN (tbl_Grup INNER JOIN (tbl_Data INNER JOIN (tbl_Goods INNER JOIN tbl_Zakaz ON tbl_Goods.ID_Goods = tbl_Zakaz.Goods_Zakaz) ON tbl_Data.ID_Data = tbl_Zakaz.Data_Zakaz) ON tbl_Grup.ID_Grup = tbl_Goods.Grup_Goods) ON tbl_Zavod.ID_Zavod = tbl_Goods.Zavod_Goods" & _
            " WHERE (" & Manager & "((tbl_Data.Data_Data)=" & CLng(Form_frm_Zakaz.DataZakaz) & ") AND ((tbl_Zavod.ID_Zavod)=" & Form_frm_Zakaz.V_Zavod & "))) AS q_Otchet" & _
            " GROUP BY q_Otchet.Grup_Grup, q_Otchet.Goods_Goods, q_Otchet.Ed_Goods, q_Otchet.ID_Grup, q_Otchet.Goods_Goods" & _
            " ORDER BY q_Otchet.ID_Grup, q_Otchet.Goods_Goods"
    Set TestTable = MyDb.OpenRecordset(MySQL)
    TestTable.MoveLast
    If (TestTable.RecordCount > 0) Then
        TestTable.MoveFirst
' Вставка рекордсета
        MyRow = 2
        MyCol = 1
        sht1.Cells(MyRow, MyCol).CopyFromRecordset TestTable
' Вставка шапки(заголовков) рекордсета
        intFildCount = TestTable.Fields.Count - 1
        For intI = 0 To intFildCount
        sht1.Cells(MyRow - 1, intI + MyCol).Value = TestTable.Fields(intI).Name
        Next intI
    Else: MsgBox "Not Found"
    End If

    TestTable.Close
    MyDb.Close
    Set MyDb = Nothing
Allll
Дата: 30.11.2006 12:36:10
NikP
если нужен код
прошу сюда

"Уж, луше Вы к нам" :)

Жалко одну конкретную строчку сюда скопировать?
Allll
Дата: 30.11.2006 12:41:29
Начинаю телепатить...

Ругается на строчку: sht1.Cells(MyRow, MyCol).CopyFromRecordset TestTable

Угадал?!

Или на sht1.Cells(MyRow - 1, intI + MyCol).Value = TestTable.Fields(intI).Name ?
NikP
Дата: 30.11.2006 12:44:42
ругается на
sht1.Cells(MyRow, MyCol).CopyFromRecordset TestTable
Allll
Дата: 30.11.2006 13:03:47
С Excell'ом не работал, но в Справке Excell 97 написано, что нужен объект Range:
CopyFromRecordset Method

Copies the contents of a DAO Recordset object onto a worksheet, beginning at the upper-left corner of the specified range. If the Recordset object contains fields with OLE objects in them, this method fails.

Syntax

expression.CopyFromRecordset(Data, MaxRows, MaxColumns)

expression Required. An expression that returns a Range object.