Приветствую Светлые Головы!
Может оффтоп, но по форуму ответа не нашёл.
Имеется скрипт (фрагмент), который выбирает данные из таблицы Oracle и должен вставить в файл Excel:
Массив данных $aData формируется, но при попытке вставить в ячейку ("A6") ничего не происходит.
Сообщений об ошибках тоже нет.
Насколько я понял (или не понял) из примеров работы с UDF Excel.au3, в частности с _Excel_RangeWrite (Example 3),
всё должно работать.
В чём "собака порылась"?
При вставке элемента массива типа
всё работает.
Может оффтоп, но по форуму ответа не нашёл.
Имеется скрипт (фрагмент), который выбирает данные из таблицы Oracle и должен вставить в файл Excel:
Код:
#include <Array.au3>
#include <ADO.au3>
#include <Excel.au3>
#include <MsgBoxConstants.au3>
#include <Log.au3>
; Create application object
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox(16, "Excel Error", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
; Строим коннект на базу
Local $oConnection = _ADO_Connection_Create()
Local $sConnectionString = 'DRIVER={' & $sODBCDrv & '};DBQ=' & $sODBCDs & ';uid=' & $sODBCu & ';pwd=' & $sODBCp & ';'
;_ODBC_OpenConnection($sConnectionString)
If _ADO_Connection_OpenConString($oConnection, $sConnectionString) Then
_Log_Report($hLog, 'Connected to Oracle')
Else
_Log_Report($hLog, 'Connected to Oracle - FALSE!!!')
Exit
Endif
Local $sSQLMain = "SELECT p1,p2,p3,p4,p5,p6,p_ss," & _
"p1_0100,p1_0200,p1_0400,p1_0800,p1_0900,p1_1000," & _
"p2_0100,p2_0200,p2_0400,p2_0800,p2_0900,p2_1000," & _
"p3_0100,p3_0200,p3_0400,p3_0800,p3_0900,p3_1000," & _
"p4_0100,p4_0200,p4_0400,p4_0800,p4_0900,p4_1000," & _
"p5_0100,p5_0200,p5_0400,p5_0800,p5_0900,p5_1000," & _
"sr_0100,sr_0200,sr_0400,sr_0800,sr_0900,sr_1000," & _
"t_0100,t_0200,t_0400,t_0800,t_0900,t_1000," & _
"d_0100,d_0200,d_0400,d_0800,d_0900,d_1000 " & _
" FROM work_table order by p1,p4"
Local $oArraySqlMain = _ADO_Execute($oConnection, $sSQLMain, False)
Local $aArraySqlMain = _ADO_Recordset_ToArray($oArraySqlMain,False)
Local $aData = $aArraySqlMain[2]
_ArrayDisplay($aData,'Array aData')
; *****************************************************************************
; Open an existing workbook and return its object identifier.
; *****************************************************************************
Local $sWorkbook = @ScriptDir & "\rez_tab.xls"
Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel Error!!!", "Error opening '" & $sWorkbook & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
_Excel_RangeWrite($oWorkbook,"All",$aData,"A6")
;ConsoleWrite("$aData [0][5] =" & $aData [0][5] & @CRLF)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "_Excel_RangeWrite", "Error writing to worksheet." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "_Excel_RangeWrite", "Gotovo!")
_ADO_Connection_Close($oConnection)
Массив данных $aData формируется, но при попытке вставить в ячейку ("A6") ничего не происходит.
Сообщений об ошибках тоже нет.
Насколько я понял (или не понял) из примеров работы с UDF Excel.au3, в частности с _Excel_RangeWrite (Example 3),
всё должно работать.
В чём "собака порылась"?
При вставке элемента массива типа
Код:
_Excel_RangeWrite($oWorkbook,"All",$aData[0][5],"A6")
всё работает.