|
|
|
VB6+Crystal Reports 9 - запуск с параметрами?
|
|||
|---|---|---|---|
|
#18+
Всем хорошего дня! Коллеги, если кто-то имеет успешный опыт запуск отчетов Crystall Reports 9 с параметрами из VB6, не могли бы вы поделиться секретами мастерства? Или дайте пожалуйста ссылки, где про сие безобразие можно почитать? Пытаюсь огранизовать это через "кристаловский" Print Engine в соответствии с примерами, описанными в книжке Маклакова и Матвеева "Анализ данных. Генератор отчетов Crystall Reports.", издание БХВ-Петербург, 2003 год. Вроде все делаю так, как написано, но не работает. Ругается на модули самого "кристала" - global32.bas и crwrap.bas, якобы там не описаны всякие переменные. Ошибки у штатовцев? Кто-нибудь с этим сталкивался? Помогите. если можно... Заранее спасибо огромное! Юрий. Кто знает жизнь, тот не торопится... Удачи на дорогах! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 13:46:09 |
|
||
|
VB6+Crystal Reports 9 - запуск с параметрами?
|
|||
|---|---|---|---|
|
#18+
Кидай ссылку на примеры, смотреть надо.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 18:43:26 |
|
||
|
VB6+Crystal Reports 9 - запуск с параметрами?
|
|||
|---|---|---|---|
|
#18+
guestyyyКидай ссылку на примеры, смотреть надо.. Собственно говоря, код проги такой: '#USES "C:\Program Files\CR9\crwrap.bas" '#USES "C:\Program Files\CR9\global32.bas" Global g_nLoc As Long 'Variable for the current language. Global oModels As Object 'List of selected models. Global oCurrentModel As Object 'Current model contained in the list oModells. Sub Main Dim nPrintJob As Integer Dim vParamInfo As PEParameterFieldInfo Dim CRFileName As String Dim result% g_nLoc = SelectedLanguage() ErrLog="" Set oModels = SelectedModels() Set oCurrentModel = oModels.Get(0) CRFileName = "c:\temp\reglament1.rpt" If PEOpenEngine Then nPrintJob = PEOpenPrintJob(CRFileName) If nPrintJob = 0 Then MsgBox("Ошибка открытия отчета") Else vParamInfo.StructSize = PE_SIZEOF_PARAMETER_FIELD_INFO vParamInfo.CurrentValue = oCurrentModel.GUID result% = PESetNthParameterField(nPrintJob, 0, vParamInfo) result% = PEOutputToWindow(nPrintJob, CRFileName, 0, 0, 0, 0, WS_MAXIMIZE + WS_MINIZEBOX + WS_MAXIMIZEBOX + WS_SYSMENU, 0) result% = PEStartPrintJob(nPrintJob, True) PEClosePrintJob(nPrintJob) End If PECloseEngine End If End Sub Но на него VB не жалуется (или не успевает). Визг и писк начинается, сразу же, когда подключаются crwrap.bas и global32.bas. Вот, к примеру, ошибка: Row 74: Unexpected text. Смотрим crwrap.bas. В строке написано следующее: #If Win16 Then 'Word for DOS & WordPerfect (DLL: "uxfdoc.dll") Global Const crUXFWordDosType% = 1 Global Const crUXFWordPerfectType% = 2 'Quattro Pro (DLL: "uxfqp.dll") Global Const crUXFQP5Type% = 0 #End If Что не так? Что значит символ '#', что на него плюются? И Win16 - это переменная? Но она нигде не описана... Сорри, если вопросы дурацкие, но я в VB новичок... Юрий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 14:24:03 |
|
||
|
VB6+Crystal Reports 9 - запуск с параметрами?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Т.е. можно написать код который будет весь компилится для двух разных версий форточек или к примеру офиса, в зависимости от установок переменных времени компиляции. #Win16 - такая переменная и есть. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 14:59:08 |
|
||
|
VB6+Crystal Reports 9 - запуск с параметрами?
|
|||
|---|---|---|---|
|
#18+
Magnus23 Код: plaintext Т.е. можно написать код который будет весь компилится для двух разных версий форточек или к примеру офиса, в зависимости от установок переменных времени компиляции. #Win16 - такая переменная и есть. Magnus Спасибо. :) А где она задается? Я ее описываю и задаю в вызывающей процедуре? И еще вопрос такой - на следующее описание типа Type PETableType4 StructSize As Integer DLLName As String * PE_DLL_NAME_LEN DescriptiveName As String * PE_FULL_NAME_LEN DBType As Integer End Type Global Const PE_SIZEOF_TABLE_TYPE4 = 644 она ругается так: Expecting a constant or function name. Относится это к строчкам DLLName и DescriptiveName. Что подразумевается под * PE_DLL_NAME_LEN etc. Авторы файла пытались изобразить комментарий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 15:28:12 |
|
||
|
VB6+Crystal Reports 9 - запуск с параметрами?
|
|||
|---|---|---|---|
|
#18+
Задать константы можно тремя способами: 1. В свойствах проэкта. - область видимости: все публичные модули 2. Как параметр командной строки - область видимости: все публичные модули 3. В коде используя #Const - область видимости: модуль в котором обьявлена PE_DLL_NAME_LEN - тоже константа которая по идее должна быть обьявлена где-то выше или в другом модуле. Если нету можешь по идее сам обьявить, главное чтоб была. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 15:47:42 |
|
||
|
VB6+Crystal Reports 9 - запуск с параметрами?
|
|||
|---|---|---|---|
|
#18+
Magnus23Задать константы можно тремя способами: 1. В свойствах проэкта. - область видимости: все публичные модули 2. Как параметр командной строки - область видимости: все публичные модули 3. В коде используя #Const - область видимости: модуль в котором обьявлена PE_DLL_NAME_LEN - тоже константа которая по идее должна быть обьявлена где-то выше или в другом модуле. Если нету можешь по идее сам обьявить, главное чтоб была. Magnus Еще раз спасибо. Эта и другие константы действительно задаются в модуле global32.bas строками вида: Global Const PE_DLL_NAME_LEN = 64 и теоретически должны быть теперь видны в crwrap.bas (global32.bas я теперь поставил в командах #uses первым) , но пока все равно плюется. Магнус, а разве строка DLLName As String * PE_DLL_NAME_LEN правильна? Как-то странно получается - тип строка умноженная на константу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 16:53:41 |
|
||
|
VB6+Crystal Reports 9 - запуск с параметрами?
|
|||
|---|---|---|---|
|
#18+
Магнус, а разве строка DLLName As String * PE_DLL_NAME_LEN правильна? Как-то странно получается - тип строка умноженная на константу Так обьявляются строки фиксированной длинны. Нормальное явление, правда с константами я не делал, просто значениями, но должно работать. Щас васика под рукой нет, попробуй просто поодставить значение константы. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 17:06:03 |
|
||
|
VB6+Crystal Reports 9 - запуск с параметрами?
|
|||
|---|---|---|---|
|
#18+
Magnus23 Магнус, а разве строка DLLName As String * PE_DLL_NAME_LEN правильна? Как-то странно получается - тип строка умноженная на константу Так обьявляются строки фиксированной длинны. Нормальное явление, правда с константами я не делал, просто значениями, но должно работать. Щас васика под рукой нет, попробуй просто поодставить значение константы. Magnus Еще раз спасибо. :) Замена констант на числа помогла, скрипты наконец-то заработали. :) Правда немножко криво - главное то, что после запуска отчета Crystal Reports он не сохраняется на экране. :( То есть он формируется и тут же закрывается. Но, наверно, это уже к моей программе. Попробую выкинуть команды на закрытие окна и самого движка... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 12:07:13 |
|
||
|
VB6+Crystal Reports 9 - запуск с параметрами?
|
|||
|---|---|---|---|
|
#18+
Собственно все заработало, наконец-то... :)) В своей книжке господа Маклаков и Матвеев сказали не то чтобы неправду, а чуть-чуть правды... Они ровным счетом ничего не написали про функцию PEGetWindowHandle(nPrintJob), которая передает управление сформированным отчетом Crystal Reports пользователю. И, естественно, ни словом не обмолвились про то, что запускать ее нужно в цикле, вместе с командой DoEvents, которая собственно ее активирует. Спасибо какому-то американцу выложившему в сеть шикарный пример программы на VB для создания, просмотра и печати отчетов. :)) Полный код моей программы теперь такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 16:07:49 |
|
||
|
VB6+Crystal Reports 9 - запуск с параметрами?
|
|||
|---|---|---|---|
|
#18+
хм. как все запущено. В восьмерке гораздо проще было. чего это они? Сам я с 9-м не работал... Но по идее должен быть способ без применения АПИ, на то они и существуют готовые решения репортов, чтоб обходится без самодеятельности. Что то они там перемудрили. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 16:39:15 |
|
||
|
VB6+Crystal Reports 9 - запуск с параметрами?
|
|||
|---|---|---|---|
|
#18+
Magnus23хм. как все запущено. В восьмерке гораздо проще было. чего это они? Сам я с 9-м не работал... Но по идее должен быть способ без применения АПИ, на то они и существуют готовые решения репортов, чтоб обходится без самодеятельности. Что то они там перемудрили. Magnus Да вроде как в CR9 можно еще через ActiveX, но у нас там что-то не заработало. Этот то скрипт еле отладили - в файлах штатовцев пришлось много чего почистить, с помощью твоих советов. Кстати, Магнус, это уже ОФФ, скажи пожалуйста, Лусада от Лиссабона далеко? И как сложно до нее добраться? А то чем черт не шутит, вдруг по весне туда в командировку пошлют... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 12:57:17 |
|
||
|
VB6+Crystal Reports 9 - запуск с параметрами?
|
|||
|---|---|---|---|
|
#18+
Лусада? Что то не знакомое, вероятно далеко, тут в округе я все более-менее приличные города знаю. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 16:04:14 |
|
||
|
VB6+Crystal Reports 9 - запуск с параметрами?
|
|||
|---|---|---|---|
|
#18+
Ну вот, теперь еще и параметр разобрался как прикручивать чтобы больше не переспрашивало. Опять же спасибо штатовцам, а у Маклакова-Матвеева про сие не полслова... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. Лусада отпадает. Посмотрел планы - Мурса... Надо будет атлас мира дома посмотреть... Кто знает жизнь, тот не торопится... Удачи на дорогах! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 14:36:25 |
|
||
|
VB6+Crystal Reports 9 - запуск с параметрами?
|
|||
|---|---|---|---|
|
#18+
Неплохой код, но снова же использование API меня последнее время совсем не вдохновляет. С тех пор как столкнулся с различным оутпутом одной и той же функции на разных форточнках. Сколько корви она мне попортила. Должен быть "чистый" способ. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 15:32:40 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=32812414&tid=2168484]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 314ms |

| 0 / 0 |
