Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.01.24;
Скачать: CL | DM;

Вниз

Проблемы с ClientDataSet   Найти похожие ветки 

 
kolj   (2009-12-03 00:59) [0]

Всем привет!
Обнаружыл странную вещь, к Гриду через DataSource подключен Dataset. Select возвращает 1000 записей и работает приблизительно 3 секунды, но грид их выводит на екран через минуту при етом пока идет етот процес загрузка процесора 100 процентов. Грид DevExpress.
Есть у когото идеи, что ето мжет быть и в чем проблема?
Спасибо!


 
Sergey13 ©   (2009-12-03 08:40) [1]

> [0] kolj   (03.12.09 00:59)
> подключен Dataset

Клиентский? Или какой другой? Чем обусловлено использование CDS-а? Есть ли какая то обработка в датасете типа в afterOpen или в AfterScroll?


 
Сергей М. ©   (2009-12-03 09:18) [2]


> Select возвращает 1000 записей и работает приблизительно
> 3 секунды


Подробнее - как ты это определил ?


 
sniknik ©   (2009-12-03 09:26) [3]

> Select возвращает 1000 записей и работает приблизительно 3 секунды
непорядок... 1000 записей так долго возвращать, должны быть цифры порядка 0,03 - 0,3 сек, а у тебя в 10 раз больше...

> что ето мжет быть и в чем проблема?
ну, очевидно же - "Грид DevExpress."... сложно проверить со стандартным и убедиться?
и второе по списку но не по значению - код. все ошибки, неважно какие, даже логические традиционно гнездятся в 17й строке. проверь.
и +, D3 это религия такая использовать настолько устаревшее?  или драйвер пишешь, тогда ClientDataSet там очевидно не к месту (имхо конечно, мало ли чего бывает) .


 
Виталий Панасенко   (2009-12-03 10:39) [4]

небось группировка какая-то используется?


 
kolj   (2009-12-03 12:02) [5]

Программа написана на Delphi 3. Работа над ней началась в 1997 году. Используетса ClientDataSet, на обработчик OnFilterRecord следующий код:

procedure FilterRecord(DataSet: TDataSet;
 var Accept: Boolean);
begin
 if DataSet <> nil then
 with DataSet do
 case DATA_MODE of
   dmActive: Accept := FieldByName("STATUS").Value = "W";
   dmInactive: Accept := FieldByName("STATUS").Value = "N";
   dmAll: Accept := true;
 end;
end;

>> Select возвращает 1000 записей и работает приблизительно
>> 3 секунды

>Подробнее - как ты это определил ?

Misrosoft Profiler и просто смотрел сколько скрипт выполняетса через Menagment Studio


 
sniknik ©   (2009-12-03 12:40) [6]

> на обработчик OnFilterRecord следующий код:
отключай на время открытия, включай после.
+ DisableControl датасету на это время (а можно только это, только + сделать по нему выключатель в фильтре)


 
sniknik ©   (2009-12-03 12:41) [7]

> Программа написана на Delphi 3
проверь скомпили на D7, может не так уж и много изменений понадобится


 
Сергей М. ©   (2009-12-03 13:10) [8]


> Misrosoft Profiler и просто смотрел сколько скрипт выполняетса
> через Menagment Studio


А как выглядит скрипт ?


 
Anatoly Podgoretsky ©   (2009-12-03 13:33) [9]

> kolj  (03.12.2009 12:02:05)  [5]

Ну ты определил только время выполнения скрипта, а не время выдачи.


 
kolj   (2009-12-03 14:03) [10]

SELECT
 emp.EmployeeID,
 emp.UserName,
 cep.Name as Position,
 ocep.Name as OfficialPosition,
 emp.LastNameUkr,
 emp.LastName,
 emp.LastNameEng,
 emp.Surname,
 emp.Address,
 emp.Phones,
 (select top 1 ll.LevelName from vwEmployeeLanguages el with (nolock)
    join vwLanguages l with (nolock) on l.LanguageID = el.LanguageID
    join vwLanguageLevel ll with (nolock) on ll.LanguageLevelID = el.LanguageLevelID
  where  el.EmployeeID = emp.EmployeeID and l.Name = "English") as EnglishLevel,
 emp.Note,
 emp.Status,
 emp.ULC,
 emp.DLC,
 emp.TS,
 sbus.SBU_Name,
 sbus.SBUID,
 emp.DOB,
 emp.EducationFrom,
 emp.PreviousPlaceOfWork,
 emp.AccessibilityFields,
 emp.OrgID,
 emp.OrgCode,
 emp.DateOfEmployment,
 emp.RetiringDate,
 emp.StartOfProfCareer,
 emp.SpecializationsID,
 es.SpecializationsName,
 emp.UserCompName,
 emp.UserCompNumber,
 os.OrgPath,
 sbus.SBUDirectorID,    
 emp1.LastName as SBUDirectorName,
 emp.AssignedSBU,
 sbus1.SBU_Name As AssignedSBU_Name,
 emp.AbsentTill,
 emp.MessengerID,
 (dbo.FieldsList(4, emp.EmployeeID)) As WorkPlace,
 (dbo.FieldsList(1, emp.EmployeeID)) As Room,
 (dbo.FieldsList(2, emp.EmployeeID)) As OfficeLocation,
 (dbo.FieldsList(3, emp.EmployeeID)) As WorkPhone,
 emp.EndOfTrialPeriod,
 emp.Abiliton_ID,
 ab.AbilitonName,
 emp.DiscountCardNumber
FROM vwEMPLOYEES emp with (nolock)
    left join vwEmployeeSBU with (nolock) on emp.EmployeeID = vwEmployeeSBU.EmployeeID
    left join vwSBUs sbus with (nolock) on sbus.SBUID = vwEmployeeSBU.SBUID
    left join vwEmployees emp1 with (nolock) on emp1.EmployeeID = sbus.SBUDirectorID      
    left join vwEmployeeSpecializations es with (nolock) on es.SpecializationsID = emp.SpecializationsID
    left join vwOrgStructure os with (nolock) on emp.OrgID = os.OrgID
    left join vwSBUs sbus1 with (nolock) on sbus1.SBUID = emp.AssignedSBU
    left join vwCurrentEmployeePosition cep with (nolock) on emp.EmployeeID = cep.EmployeeID
    left join vwCurrentOffEmployeePosition ocep with (nolock) on emp.EmployeeID = ocep.EmployeeID
    left join vwAbiliton ab on ab.Abiliton_ID = emp.Abiliton_ID
ORDER BY emp.LastName



Страницы: 1 вся ветка

Текущий архив: 2010.01.24;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.01 c
15-1258752615
Юрий
2009-11-21 00:30
2010.01.24
С днем рождения ! 21 ноября 2009 суббота


2-1259683856
SergP
2009-12-01 19:10
2010.01.24
This form of method call only allowed for class methods


2-1259683232
serhiyiv
2009-12-01 19:00
2010.01.24
FILE / FOLDER


15-1258619414
Юрий
2009-11-19 11:30
2010.01.24
С днем рождения ! 19 ноября 2009 четверг


1-1234095719
dreamse
2009-02-08 15:21
2010.01.24
Подскажите, какое событие возникает