Я использую следующий код для извлечения некоторой информации из базы данных oracle. Я использовал этот тип соединения Oracle и SQL-скрипт много раз, но этот конкретный скрипт генерирует определенную Приложением или объектно-зависимую ошибку. В отчете отображается 7625 строк до появления ошибки.Excel VBA - Определенная пользователем или объектная ошибка
Любые идеи?
Sub SQL_CDS()
Sheets("CDS Data").Select
Dim SQL As String
Dim orasession As Object
Dim oradatabase As Object
Dim dyprod As Object
Dim Row As Integer
Application.ScreenUpdating = False
Set orasession = CreateObject("OracleInProcServer.XOraSession") 'Create the OraSession Object. (Oracle)
Set oradatabase = orasession.DbOpenDatabase("sid_cnded", "bo_bca_rep/bobcarep01", 0&) 'Create the OraDatabase Object by opening a connection to Oracle.
SQL = SQL & "SELECT selection_no as one, "
SQL = SQL & "selection_status as two, "
SQL = SQL & "onhand_cds as three, "
SQL = SQL & "allocated_cds as four, "
SQL = SQL & "nr_date as five, "
SQL = SQL & "last_8_weeks_shipped as six, "
SQL = SQL & "reorder_weeks_shipped as seven, "
SQL = SQL & "reorder_status_shipped as eight "
SQL = SQL & "FROM RPAT.BBC_CDS"
Set dyprod = oradatabase.CreateDynaset(SQL, 0&)
Sheets("CDS Data").Select
Row = 2
If Not dyprod.EOF And Not dyprod.bof Then
dyprod.movefirst
Do Until dyprod.EOF
Sheets("CDS Data").Cells(Row, 1).Select
ActiveCell.Value = dyprod.Fields("one").Value
Sheets("CDS Data").Cells(Row, 2).Select
ActiveCell.Value = dyprod.Fields("two").Value
Sheets("CDS Data").Cells(Row, 3).Select
ActiveCell.Value = dyprod.Fields("three").Value
Sheets("CDS Data").Cells(Row, 4).Select
ActiveCell.Value = dyprod.Fields("four").Value
Sheets("CDS Data").Cells(Row, 5).Select
ActiveCell.Value = dyprod.Fields("five").Value
Sheets("CDS Data").Cells(Row, 6).Select
ActiveCell.Value = dyprod.Fields("six").Value
Sheets("CDS Data").Cells(Row, 7).Select
ActiveCell.Value = dyprod.Fields("seven").Value
Sheets("CDS Data").Cells(Row, 8).Select
ActiveCell.Value = dyprod.Fields("eight").Value
dyprod.movenext
Row = Row + 1
Loop
End If
Range("A2").Select
End Sub
Благодаря SMORF
Какая линия имеет место ошибка? Зачем использовать ActiveCell? Почему бы просто не поставить значение? – PaulFrancis
Ошибка возникает в строке «ActiveCell.Value = dyprod.Fields (« пять »). Значение« ... Я всегда использовал ActiveCell ... никогда не было проблемы раньше? – SMORF
Если вы используете '? ActiveCell.Value' в области VBE Immediate, вы получаете сообщение об ошибке? Что относительно '? Dyprod.Fields (« пять »). Value'? –