26.09.2003, 15:35 | #1 |
Участник
|
RunOn=Server Проблема
Есть класс, один из методов которого возвращает ccadoconnection
ccadoconnection get(str constr) { ccadoconnection cn; ; cn = new ccadoconnection(); cn.open(constr); return cn; } Если установить для класса RunOn=Client, все работает отлично. Если RunOn=Server, то строка comm.activeConnection(cn); вызывает падение Axapta. Вот AxaptaCrash.log Axapta Crash Dump File for Axapta build 1951.17 (Oct 9 2002 11:51:44) Dumped : Fri Sep 26 15:31:36 2003 Crash : Exception 0xc0000005 caught (unspecified) in thread 0x370 of process 0x66c. ------------------------------------------------------------- --# FV EIP----- RetAddr- FramePtr StackPtr Symbol 0 .V 008123d6 00000000 00000009 0012e6e4 Mod: ax32[ax32.exe], base: 00400000h Stackdump exit code 487 (Attempt to access invalid address) |
|
01.10.2003, 18:00 | #2 |
Участник
|
В продолжение темы
если написать для класса метод, который возвращает ccadorecordset, то он прекрасно выполняется и на сервере. |
|
01.10.2003, 19:12 | #3 |
Модератор
|
ну не шмогла я, не шмогла.. (с)
Не перенесся некий COM, созданный на клиенте, со всеми своими свойствами и методами на сервер. Да и как такое в принципе могло произойти? |
|
02.10.2003, 10:15 | #4 |
Участник
|
COM я создаю на сервере, пытаюсь вернуть ссылку на него в клиентскую программу.
В случае ccadorecordset все OK, ccadoconnection возвращает не понятно что, и подозрительно быстро(т.е. сразу, наверное даже не пытаеться получить коннект). |
|
02.10.2003, 10:27 | #5 |
Модератор
|
А можно на код взглянуть? Интересно ведь
|
|
02.10.2003, 10:48 | #6 |
Участник
|
Код? Легко.
PRM_ADOGetConnect.getRS(str строка_запроса) --> Возвращает RecordSet (нормально возвращает) PRM_ADOGetConnect.new(str строка_соединения) PRM_ADOGetConnect2.getconn(str constr)-->Возвращает Connection(только когда класс RunOn=Client, если RunOn=Server падает Axapta) |
|
03.10.2003, 13:17 | #7 |
Модератор
|
Посмотрел.
Сделал пример. Если трассировать его в трехзвенке и закомментировать проверку PHP код:
PHP код:
Почему? cmd (CMDADOCommand) у нас создан на клиенте (в job-е) cn (CCADOConnection) - создан на сервере ( ибо у создавшего его класса RunOn = Server). В принципе, неважно, кто где, важно, что в трехзвенке они оказываются на разных машинах. и, в отличие от классов и таблиц аксапты, не могут перемещаться между клиентом и AOS-ом. Попробуйте либо отказаться от ADO, либо создавать и работать со всеми необходимыми CCADO* классами в одном объекте |
|
06.10.2003, 13:30 | #8 |
Участник
|
Спасибо.
Буду возвращать RecordSet через getRS(). Он работент как надо. |
|
|
|