Форум: "Начинающим";
Текущий архив: 2010.01.24;
Скачать: [xml.tar.bz2];
ВнизПроблемы с 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.004 c