powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Может кому надо?!
2 сообщений из 2, страница 1 из 1
Может кому надо?!
    #32450952
KostyaSPB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По просьбе Магнуса выкладываю проблему. Может у кого тоже такая была.\r
---------------\r
наверное было бы лучше вынести это в форум, потому как оптимизировать надо и много, подобные же ошибки повторяют часто и лучше чтобы решение могли посмотреть и другие. Ну да ладно.\r
\r
Значит так:\r
Dim apl As CRAXDRT.Application\r
Set apl= New CRAXDRT.Application\r
\r
Так и только так. Если обьект обьявлен с NEW, ВБ при каждом обращении провеяет создан ли обьект или нет.То же самое с рекордсетом. Кстати, рекордсету при открытии явно указать что используем хранимку:\r
\r
rstTemp.Open "uspGetAllExpensesCoding", cnnDatabase, adOpenKeyset,adLockReadOnly,,adCmdStoredProc\r
\r
Последний параметр как раз это и делает. Дефолтное значение Unknown заставляет делать дополнительные вызовы для определения типа параметра, разница в скоростинможет быть очень большой,особенно при многократном открытии.\r
\r
\r
Далее SetLogOnInfo - очень медленный метод, лучше избегать его и использовать только в крайних случаях.\r
Репорт сделать дизайнером в VB. Можно на основе уже существующего. Это тоже сильно ускорит процесс. \r
Даллее. Передача данных. Гораздо большую свободу свободу и контроль дает использование ttx файла - виртуального источнка данных. Файл содержит только описание будущего рекордсета. Сами данные поставляются в ран-тайме.\r
Вот здесь я это как раз иу описывал:\r
/topic/80382&hl=ttx \r
\r
Пока вроде все, попробуйте и сообщите о результах.\r
\r
Все таки подумайте о вынесении вопроса на форум. Многие встречают ту же проблему.\r
\r
> \r
> Добрый день!\r
> Я запускаю отчет вот таким способом:\r
> ----------------------\r
> Dim apl As New CRAXDRT.Application\r
> Dim rpt As New CRAXDRT.Report\r
> Dim rstTemp As New ADODB.Recordset\r
> Set rpt = apl.OpenReport(strRepPath & "Expenses.rpt")\r
> rpt.Database.Tables(1).SetLogOnInfo "LSTSERVER1", "LST", "sa", "me"\r
> rpt.DiscardSavedData\r
> rstTemp.Open "uspGetAllExpensesCoding", cnnDatabase, adOpenKeyset,\r
> adLockReadOnly\r
> rpt.Database.SetDataSource rstTemp\r
> frmRepExpenses.crvPrimary.ReportSource = rpt\r
> frmRepExpenses.crvPrimary.ViewReport\r
> frmRepExpenses.Show\r
> ------------------------\r
> Но он очень медленно формируется около 15 секунд. Хранимка\r
> uspGetAllExpensesCoding выполняется менее секунды. Не подскажете в чем дело?\r
> И вообще как вам мой VB-код? Может его можно как-то оптимизировать?
...
Рейтинг: 0 / 0
Может кому надо?!
    #32451055
Фотография Green2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты можешь оформить это и добавить в FAQ. Предложить такой топик.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Может кому надо?!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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