Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];

Вниз

Как победить тормоз в ADO?????   Найти похожие ветки 

 
kav   (2002-12-15 10:43) [0]

Использую ADO и аксесовскую базу, в ней таблица клиентов у некоторых клиентов по несколько счетов(ьаблица счетов), есть вот такая процедурка: отбирает всех клиентов у которых день рождение в заданном месяце..

IF BirthMonthForm.ShowModal = mrOK then begin
DM.dsClient.Enabled:=False;
DM.dsAccount.Enabled:=False;
DM.tMemView.Open;
with DM do begin
while not tClient.EOF do begin
if tClient.FieldValues["BIRTHDAY"]<>null then
begin
closed:=True;
tAccount.First;
while not tAccount.EOF do
begin
If tAccount.Fields[5].Value=null then closed:=False;
tAccount.Next;
end;
If closed=True then
begin
tClient.Next;
continue;
end;
RecDate:=tClient.FieldValues["BIRTHDAY"];
DecodeDate(RecDate, Year, Month, Day);
If (CurMonth = Month) then
tMemView.AppendRecord([tClientCHIEF,tClientNAME,{tClientBIRTHDAY}RecDate,Day]);
end;
tClient.Next;
end;
end;

QRListForm.QuickRep1.PreviewModal;
DM.tMemView.Close;
DM.dsClient.Enabled:=True;
DM.dsAccount.Enabled:=True;
ShowMessage("Сделано");

Так вот с одинаковым количеством данных через BDE+*.dbf таблицы эта процедурка работает 20 сек.... импортим эти таблица в аксесс используем ADO эта процедурка работает минут 7 :( такие тормоза ужас просто . причем машинка мощная.... подскажите как обойти эти тормоза.... учитывая что есть такое условия к отбору у клиента должны быть открытые счета.... :( никак победить не могу


 
ЮЮ   (2002-12-15 11:06) [1]

Может не ADO тормозит, а тот, кто вместо элементарного запроса к БД "сканирует" TTable ???


 
kav   (2002-12-15 11:15) [2]

может быть .... но раз уж ты такой умный подскажи запросик который бы отбирал записи в которых в поле день роэждения стоял бы определенный месяц.. и в связной (подчиненной) таблице были записи удовлетворяющие определенному условия (например одно поле не должно быть пустым) ... может это конечно делается... только я не силен в SQL .. пишу только простыек запросы раньше всегда хватало .... а теперь вот обошел так


 
sniknik   (2002-12-15 11:34) [3]

понаписано, даже смотреть не хочется, а запрос простейший может быть
SELECT * FROM Table Month(nBirthDat)=12 //к примеру


 
kav   (2002-12-16 03:46) [4]

это кнечно интересно но чего за функция
Month(nBirthDat) bde такую не понимает


 
ЮЮ   (2002-12-16 05:00) [5]

А причем здесь bde, если речь щла об ADO? В Local SQL тоже есть функции для выделения из даты (в Неlp заглядывать не пытался?)
C:\Program Files\Common Files\Borland Shared\BDE\LocalSql.hlp

SELECT SaleDate,

EXTRACT(YEAR FROM saledate) AS YY,
EXTRACT(MONTH FROM saledate) AS MM,
EXTRACT(DAY FROM saledate) AS DD

FROM Orders


 
kav   (2002-12-16 05:47) [6]

да да все кругом правы........ короче я пошел своим путем
попробовал построить запрос в Access .. ну и построил... работает как надо даже в Delphi(причем засунул его безо всяких изменений)... (и это радует)... кому интересно приведу его ниже

SELECT Client.Chief, Client.NAME, Client.BIRTHDAY
FROM Client INNER JOIN ACCOUNT ON Client.CL_NUM = ACCOUNT.CL_NUM
WHERE ((Month([BIRTHDAY])=10)) AND (([ACCOUNT]![CLOSE_D] Is Not Null));

это работает..
спасибо всем за проявленную поддержку.. а то так бы и мучился



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

Форум: "Базы";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.006 c
1-24901
viper
2002-12-25 20:36
2003.01.09
ComboBox


14-25073
gsu
2002-12-20 18:56
2003.01.09
А зачем форум тормозит


14-25091
inc(665)
2002-12-22 13:16
2003.01.09
NY, how, where, with who? :)


8-24986
BOA_KAA
2002-09-23 14:34
2003.01.09
Опять беда со скроллингом в TImage


14-25039
JurMax
2002-12-18 22:29
2003.01.09
Компонент типа DateTimePicker для БД





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский