powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Ориентация в Crystal и скорость открытия
9 сообщений из 9, страница 1 из 1
Ориентация в Crystal и скорость открытия
    #35821675
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первый вопрос

Печатаю отчет из Access

Код: plaintext
1.
2.
3.
4.
Dim CrApp1 As New CRAXDDRT.Application
Dim CrRep As CRAXDDRT.Report
--------

 CrRep.PrintOut  

Кто знает, где задается ориентация страницы?
Сам отчет настроен на один принтер, там ориентация правильная по умолчанию, а если печатать на другой принтер, то ориентация по умолчанию выбирается книжная.

Второй вопрос

Очень медленно открываются отчеты.
Может кто нибудь знает как ускорить открытие crystal отчета из Access?
...
Рейтинг: 0 / 0
Ориентация в Crystal и скорость открытия
    #35821763
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZ
Кто знает, где задается ориентация страницы?
Сам отчет настроен на один принтер, там ориентация правильная по умолчанию, а если печатать на другой принтер, то ориентация по умолчанию выбирается книжная.

.oReport.PaperOrientation = 1 && Portrait
.oReport.PaperOrientation = 2 && LandScape
MasterZ
Очень медленно открываются отчеты.
Может кто нибудь знает как ускорить открытие crystal отчета из Access?
Смотря, в каком месте он у вас тормозит. Приведите для начала хотя бы, на какой команде оно тормозит.
...
Рейтинг: 0 / 0
Ориентация в Crystal и скорость открытия
    #35821969
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kruchinin Pahan,

LandScape - спасибо

по скорости

тормозит в нескольких местах, и на выполнении запроса(это отдельный вопрос) и на открытии самого отчета.
Я хотел узнать можно ли как нибудь оптимизировать запуск самих отчетов crystal из access?

Например:
на сервере создать запущенное приложение Crystal и использовать его при выводе и печати отчета
а то получается для каждого отчета нужно создать новый экземпляр приложения. Это только предположение, поэтому прошу не разбирать мой пример, а ответить на вопрос.
...
Рейтинг: 0 / 0
Ориентация в Crystal и скорость открытия
    #35822136
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZна сервере создать запущенное приложение Crystal и использовать его при выводе и печати отчета
а то получается для каждого отчета нужно создать новый экземпляр приложения. Это только предположение, поэтому прошу не разбирать мой пример, а ответить на вопрос.
Можно, например, посмотреть в сторону CR-XI Server. Там много вкусненького (создание отчетов по расписанию, раздача отчетов пользователям и т.д.).

Только подозрительно все это. У меня RDC взлетает мгновенно. На подключении к БД, на запросах - всякое бывает, но не на создании COM и не на .OpenReport.
Может код приведете, что как поднимаете, как вызываете?
...
Рейтинг: 0 / 0
Ориентация в Crystal и скорость открытия
    #35823154
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала выполняется запрос через ADODB
С помощью полученого рекордсета создается отчет в одельном аксовском окне.

Вот замер времени


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Открытие отчета для проверки в модуле формы  --- 8312
Выполнение запроса --- 8328
Присвоение готового рекордсета в модуле создания отчета --- 0
Показ  отчета в модуле создания отчета --- 14156
Открытие отчета --- 14156


Открытие отчета для проверки в модуле формы  --- 7360
Выполнение запроса --- 7360
Присвоение готового рекордсета в модуле создания отчета --- 0
Показ  отчета в модуле создания отчета --- 4110
Открытие отчета --- 4110


Открытие отчета для проверки в модуле формы  --- 7484
Выполнение запроса --- 7500
Присвоение готового рекордсета в модуле создания отчета --- 0
Показ  отчета в модуле создания отчета --- 4344
Открытие отчета --- 4344

получается первый раз на создание отчета уходи в три раза больше времени, чем в последующие.
И посравнению с выполнением запроса тоже не очень мало
...
Рейтинг: 0 / 0
Ориентация в Crystal и скорость открытия
    #35823670
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZ
Код: plaintext
1.
2.
3.
4.
5.
Открытие отчета для проверки в модуле формы  --- 8312
Выполнение запроса --- 8328
Присвоение готового рекордсета в модуле создания отчета --- 0
Показ  отчета в модуле создания отчета --- 14156
Открытие отчета --- 14156

получается первый раз на создание отчета уходи в три раза больше времени, чем в последующие.
И посравнению с выполнением запроса тоже не очень мало
1. А в командах можно посмотреть?
2. А время в чем измеряется?
...
Рейтинг: 0 / 0
Ориентация в Crystal и скорость открытия
    #35823889
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kruchinin Pahan,

Код: 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.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
Public Sub ReportOpenQRY(nTypeRep As TypeRep, _
                        nId As Long, _
                        cFile As String, _
                        cSql As String, _
                        cName As String, _
                        Optional lView As Boolean = True, _
                        Optional nExport As Long =  0 , _
                        Optional lNoSelect As Boolean = False, _
                        Optional rsRep As ADODB.Recordset, _
                        Optional oRient As Integer =  1 )
 Dim rs As New ADODB.Recordset
   Dim con As ADODB.Connection
   Dim com As New ADODB.Command
   Dim lListRep As Boolean
   Dim f As Form_frmRepList
   Set con = CurrentProject.Connection
 
   
   
  
   Set rs = rsRep
       
   If rs.State = adStateClosed Then
        com.CommandText = cSql
        com.CommandType = adCmdTable
        Set com.ActiveConnection = con
        com.Parameters( 0 ).value = nId
        Set rsRep = New ADODB.Recordset
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Замер скорости выполнения 
    fncTimeWork
        rs.Open com, , adOpenKeyset, adLockReadOnly
    Debug.Print "Выплнение запроса в модуле создания отчета --- " & fncTimeWork(True)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
   Else
       rs.MoveFirst
   End If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''Замер скорости выполнения 
        fncTimeWork
            ReportView nId, cFile, "", cName, rs, lView, nExport, oRient
        Debug.Print "Показ  отчета в модуле создания отчета --- " & fncTimeWork(True)
       

   Set rs = Nothing
   Set f = Nothing
End Sub


Public Sub ReportView(nId As Long, _
                        cNameRpt As String, _
                        cSql As String, _
                        cCaption As String, _
                        Optional rs As ADODB.Recordset = Nothing, _
                        Optional lView As Boolean = True, _
                        Optional nExport As Long =  0 , _
                        Optional oRient As Integer =  1 )
Dim CrApp1 As New CRAXDDRT.Application
Dim CrRep As CRAXDDRT.Report
Dim CrDB As CRAXDDRT.Database
Dim CrTables As CRAXDDRT.DatabaseTables
Dim CrTable As CRAXDDRT.DatabaseTable
Dim rsData As New ADODB.Recordset
Dim viewreport1 As CrystalActiveXReportViewer
Dim frmReport As New Form_frmCrystalReport
Dim cSavePath As String

Static nReportCount As Long


cSavePath = SavePath()

'If ReportCheck(cNameRpt) Then
'   afrmReport.Item(cNameRpt).SetFocus
'  Exit Sub
'End If

'check existence file report
If Not FileExists(ReportDir & cNameRpt & ".rpt") Then
    MsgBox "Не найден файл отчета <" & cNameRpt & ".rpt>!", , "Ошибка открытия отчета"
    Exit Sub
End If


nReportCount = nReportCount + 1
'open report
Set CrRep = CrApp1.OpenReport(ReportDir & cNameRpt & ".rpt")
'set the database object to the reports database
Set CrDB = CrRep.Database
'Set the databasetables object
Set CrTables = CrDB.tables

'set the databasetable object to the first table in the report
Set CrTable = CrTables(1)

Set rsData = rs
If rsData.State = adStateClosed Then
  rsData.Open cSql, CurrentProject.Connection, adOpenKeyset, adLockReadOnly
End If
'sets ADO recordset as the data for the first table
CrTable.SetPrivateData  3 , rsData




    CrRep.PaperOrientation = oRient ' устанавливаем ориентацию страницы

    If lView Then
        frmReport.Tag = cNameRpt
        frmReport.CAPTION = nReportCount & " : " & cCaption
        frmReport.CrystalActiveXReportViewer0.ReportSource = CrRep
        frmReport.CrystalActiveXReportViewer0.ViewReport
        frmReport.Visible = True
        frmReport.SetFocus
        afrmReport.Add frmReport, frmReport.Tag
        
    Else
       
        CrRep.PrintOut , 1
    
    End If

    Set CrRep = Nothing
    Set CrTable = Nothing
    Set CrTables = Nothing
    Set CrDB = Nothing
    Set CrApp1 = Nothing
    If rsData.State = adStateOpen Then rsData.Close
    Set rsData = Nothing
    'Set frmReport = Nothing
 
End Sub

Вот собсвенно
Да еще замер времени

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Declare Function a2ku_apigettime Lib "winmm.dll" Alias "timeGetTime" () As Long


Public Function fncTimeWork(Optional blnStopTime As Boolean =  0 ) As Long
    'blnStopTime - флаг окончания отсчета времени
    
    Static lngTimeStarting As Long
    
    If Not blnStopTime Then
        'задаем точку отсчета
        lngTimeStarting = a2ku_apigettime()
        fncTimeWork = lngTimeStarting
    Else
        'получаем суммарное время
        fncTimeWork = a2ku_apigettime() - lngTimeStarting
    End If
End Function 'fncTimeWork
...
Рейтинг: 0 / 0
Ориентация в Crystal и скорость открытия
    #35823895
MasterZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZ,

Да, ну и раскрасил он исходники...
...
Рейтинг: 0 / 0
Ориентация в Crystal и скорость открытия
    #35824153
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZMasterZ,

Да, ну и раскрасил он исходники...
Есть подозрение (основанное на разнице повторного и первого открытия репорта), что тормоза возникают на импорте COM-интерфейсов. Похоже, в басике импорт должен происходить в момент объявления переменных:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim CrApp1 As New CRAXDDRT.Application
Dim CrRep As CRAXDDRT.Report
Dim CrDB As CRAXDDRT.Database
Dim CrTables As CRAXDDRT.DatabaseTables
Dim CrTable As CRAXDDRT.DatabaseTable
Dim rsData As New ADODB.Recordset
Dim viewreport1 As CrystalActiveXReportViewer
Dim frmReport As New Form_frmCrystalReport
Не могу пока самостоятельно исходник проверить, так что попробуйте здесь скорости замерять.

Если это так, то импорт можно сделать где-нибудь раньше в коде. (Просто объявить переменную и грохнуть ее).
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Ориентация в Crystal и скорость открытия
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]