Главная страница
    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.008 c
1-24867
V-A-V
2002-12-26 15:28
2003.01.09
В сотый раз и все безответно...


7-25111
vidiv
2002-10-15 14:34
2003.01.09
MultiCast для NMUPD


1-24832
smok_er
2002-12-27 10:53
2003.01.09
Типизированный файл - замена БД


4-25163
kasken
2002-11-15 15:01
2003.01.09
Опять мессаги...


1-24888
Kair
2002-12-25 13:25
2003.01.09
Выключение компьютера





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский