26.05.2003, 15:16 | #1 |
Участник
|
ADO + SQL + Trace
Пытаюсь создать свой построитель отчетов в Excel
для построения отчетов в Excel использую COM компоненты, данные компоненты принимают ADO recordsetы и выводят данные в шаблон Excel 1. Можно ли как нибуль получить ADO рекордсет 2. Я использую для выборки Query из AOT, как можно получить SQL запрос сформированный в Query, X++ запрос получить можно из query.Datasource(1).toString() 3. Если нельзя получить SQL то можно ли использовать трассировку и через них получить SQL запрос trace = xSession::getSysTraceActive(); xSession::setSysTraceActive(True); select firstonly * from cust; xSession::setSysTraceActive(trace); как получить информацию о SQL команде ? |
|
26.05.2003, 16:53 | #2 |
Banned
|
Мутантик какой-то получается. Если с трассировкой - то два идентичных запроса подряд. Некрасиво. С другой стороны, можно создать запрос nofetch. Тогда запрос при активизированной трассировке можно считывать из таблицы SysTraceTableSQL. Из файла на диске вдвойне некрасиво.
Из Query запрос, очевидно, не извлекается. Вы, скорее всего, знаете два других варианта:
|
|
26.05.2003, 17:20 | #3 |
Участник
|
Без компонентов трудно так как в них заложен функционал достаточный, и они упрощают создавать отчеты в Ексел. С буфером компоненты не работают.
На счет двух идентичных запросов, я хотел запустить Query без Range сохранить SQL запрос в таблицу потом при запуске отчета считать ее.. и добавить к SQL дополнительные условия Range от запроса я покапался чуть - чуть, заполнение таблицы SysTraceTableSQL происходит через метод sysTrace объекта Application который вызывается из ядра системы. А что необходимо установить что б он вызывался ? |
|
26.05.2003, 17:23 | #4 |
Участник
|
На счет мутантика абсалютно согласен :
|
|
26.05.2003, 17:54 | #5 |
Banned
|
А вы изучите форму SysUserSetup. Там активно работают с полем userInfo.traceInfo, состоящим из серии битовых флагов, а потом, похоже, вызывают магический метод SysUserInfo::resetTraceSetup().
|
|
26.05.2003, 18:07 | #6 |
Участник
|
Я смотрел эти методы но там ничего магического нет кроме как устанавливают внутр. переменную traceExecutionPlanInitialized класса ClassFactory, эта переменная внутр. и нигде не используется
|
|
26.05.2003, 18:16 | #7 |
Banned
|
Но ведь она - трассировка - из этой формы оперативно включается! Значит, рыть надо там. Может быть, все начинается в момент сохранения записи UserInfo.
|
|
26.05.2003, 18:54 | #8 |
Участник
|
методом комментирования найдена
infolog.getUserSetup().setUserSetup(userinfo); спасибо, дальше надеюсь лучше пойдет.. |
|
|
|