22.06.2005, 08:22 | #21 |
Участник
|
Странно но какие бы параметры не передавал все равно возникает ошибка ???
Может кто подскажет где же еще надо подстроить чтобы все это работало при трехзвенке??? |
|
25.06.2005, 23:49 | #22 |
Участник
|
2velk
Прочтайте внимательно и, думаю, найдете ответ на половину ваших вопросов. Описано для Axapta 3.0 SP 3
1. Запустите Excel, вид\панели инструментов\visual basic 2. Войдите в редактор васика (первая пиктограмма слева на появившейся панели) 3. insert module 4. введите код, не забывая, что одиночная кавычка означает комментарий Sub main() Dim Axapta ' As AxaptaCOMConnector.Axapta2 Dim AxaptaQuery ' As AxaptaCOMConnector.IAxaptaObject Dim accnum Dim name Dim AxaptaDataSource ' As AxaptaCOMConnector.IAxaptaObject Dim CustTableBuffer ' As AxaptaCOMConnector.IAxaptaRecord ' Log on to Axapta Set Axapta = CreateObject("AxaptaCOMConnector.Axapta2") Axapta.Logon "", "", "", "" ' Table ID CustTable = 77 Set AxaptaQuery = Axapta.CreateObject("Query") Set AxaptaDataSource = AxaptaQuery.Call("AddDataSource", CustTable) Set AxaptaQueryRun = Axapta.CreateObject("QueryRun", AxaptaQuery) I = 1 While (AxaptaQueryRun.Call("Next")) Set CustTableBuffer = AxaptaQueryRun.Call("GetNo", 1) accnum = CustTableBuffer.field("AccountNum") name = CustTableBuffer.field("Name") MsgBox CStr(accnum) + " " + name I = I + 1 Wend ' Log off Axapta.Logoff Set Axapta = Nothing End Sub Это слегка модифицированный пример из мануала. 5. Запустите server manager и АОС (статус AOS = running, при этом в течение минимум 20 сек. он не падает) 6. в конфигурации клиента установите галку connect to Axapta Object Server(AOS) 7. Нажмите settings и убедитесь, что в Axapta Object Server Host Names что-то есть (или в Axapta Object Server IP Adress masks, здесь еще надо проверить наличие такого IP с сети) + запомните это имя 8. В окне васика нажмите F8, потом для трассировки нажимайте shift+f8 9. Если у вас все правильно настроено, то строка Axapta.Logon "", "", "", "" выполнится без ошибок. Данная строка работает следующим образом: берутся текущие настройки клиента. Если, например, во втором параметре указать запомненное вами имя, то данный скрипт будет всегда коннектиться через указанный АОС,т.е. настройка ложится поверх настроек клиента. Иногда здесь возникаю ошибки, об этом читайте далее. 10. Если все успешно работает и custtable содержит несколько клиентов, то у вас выскочит несколько msgbox'ов. 11. По окончании работы скрипта попытайтесь остановить AOS(не сервер manager!!!) Он у вас будет долгое время висеть в stop pending. Это значит, что он не может остановиться. Наиболее вероятная причина - COM созданный в васике - еще жив!!!. 12. Останавливаем AOS через server manager. 13. Запускаем и то, и другое. 14. Пробуем вновь запустить скрипт. На строке логина имеем ошибку WINAPI 80020009 в шестнадцатеричном формате. Дело в том, что васик в экселе кеширует COM соединение, вместо того, чтобы его создавать заново!!! 12. Закрываем васик, можно сохраниться. 13. Открываем и запускаем скрипт. И он снова работает. Вывод, Delphi, по-видимому, также кеширует COM соединение. |
|