Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Настройки БатчМув [D7, Paradox]


Страницы:   1 2

barakuda ©   (2006-05-30 10:03:00) 

есть две таблицы, одинаковые по типу и по структуре
нужно быстро перебросить некоторые поля из табл1 в табл2
если делаю через цикл
то прога работает медленно локально а по сетке вообще виснет

может както через батчмув можно выборочные поля перекинуть
в базе около 1000 записей

Заранее благодарен


barakuda   (2006-05-30 11:57:00) [1]

В общем по делу ничего!

Ладно, всем спасибо,

Тема закрыта


Sergey13   (2006-05-30 11:53:00) [2]

2[21] barakuda ©   (30.05.06 11:49)
А чего тебе сказать? Судя по тому коду, что я вижу, и твоим описаниям задачи тебя не скорость должна волновать.


evvcom   (2006-05-30 11:53:00) [3]

Ты случаем при приеме на работу себя в грудь кулаком не бил? Ну, мол, я такой крутой перец, берите меня не пожалеете. Если бил, тебе не повезло, если не бил, то что, круче тебя там вообще в конторе никого нет?
В результате тебе нужен несложный SQL-запрос, хотя понятие "несложный" - весьма относительное. :o)


barakuda   (2006-05-30 11:49:00) [4]

Наш директор никого никогда не хвалит!

а по делу что скажешь


Sergey13   (2006-05-30 11:45:00) [5]

2 [19] barakuda ©   (30.05.06 11:40)
У тебя странный подход ИМХО. Тебя интересует скорость, но не интересует направление движения. Директор тебя не похвалит, я думаю.


barakuda   (2006-05-30 11:40:00) [6]

для каждого клиента свои контакты

выборка это отчет директору

с какими клиентами и когда был последний контакт

но не в этом дело

я пробывал вообще не копировать контакты - скорость та же :(


Sergey13   (2006-05-30 11:33:00) [7]

2[17] barakuda ©   (30.05.06 11:24)
>ЗАДАЧА
>Есть табл1 (инфа о клиенте),
О клиент ахнаверное?

>есть связанная с ней табл2 (контакты с клиентом)
С клиент аминаверное?

>Нужна выборка табл1 + последняя запись из табл2 (дата контакта)
Какой в этом смысл? Всех клиентов и какой то непонятный контакт с кем то случайным?

Похоже у тебя и алгоритм копирования неправильный.


barakuda   (2006-05-30 11:24:00) [8]

ЗАДАЧА
Есть табл1 (инфа о клиенте), есть связанная с ней табл2 (контакты с клиентом)

Нужна выборка табл1 + последняя запись из табл2 (дата контакта)
Всё


Sergey13   (2006-05-30 11:19:00) [9]

2 [15] barakuda ©   (30.05.06 11:12)
Без знания задачи никто тебе не посоветует как можно (и нужно). А с твоими знаниями SQL и подавно.


barakuda   (2006-05-30 11:12:00) [10]

я бы вообще не делал вторую таблицу, еслибы не нужно было брать последнюю записть из таблицы №2, может можно както создать в табл1 дополнительное поле и чтобы последняя запись табл2 туда копировалась ?????


Sergey13   (2006-05-30 11:08:00) [11]

2 [12] barakuda ©   (30.05.06 10:57)
> какой файл?
Парадоксовский, какой же еще.


barakuda   (2006-05-30 10:59:00) [12]

срок до обеда, некогда вносить глобальные изменения и тестировать


barakuda   (2006-05-30 10:57:00) [13]

Sergey13 © какой файл?


evvcom   (2006-05-30 10:54:00) [14]


> form1.Table11.FieldByName('klient').

тоже хорошо притормаживает. Прикинь в цикле каждый раз искать кучу полей. Зачем, если от прохода до прохода они не меняются? Создаешь 2-мерный массив или 2 одномерных для хранения полей источника и приемника. Перед всеми циклами заполняешь его (их) указателями-полями, а в цикле добираешься быстро до данных через указатели из массива(-ов).


Sergey13   (2006-05-30 10:54:00) [15]

2[8] barakuda ©   (30.05.06 10:51)
>Смысл конечно есть
А есть ли он вообще в такой программе? Почему нельзя просто скопировать файл?


mr.il   (2006-05-30 10:51:00) [16]

для EmptyTable; нужно чтоб она была в эксклюзиве, т.о. если Table11 еще ктонибудь юзает, надо пересмотреть. А так конечно быстрее.


barakuda   (2006-05-30 10:51:00) [17]

Смысл конечно есть

но не думаю что это существенно повысит скорость


Sergey13   (2006-05-30 10:48:00) [18]

2[5] barakuda ©   (30.05.06 10:30)

if form1.Table11.RecordCount<>0 then
begin
form1.Table11.First;
while not form1.Table11.Eof do
begin
form1.Table11.Delete;
end;
end;


Легко заменяется на

form1.Table11.EmptyTable;

ЗЫ: Странные у тебя таблицы - ключей не видно.


mr.il   (2006-05-30 10:46:00) [19]

if form1.Table11.RecordCount<>0 then
begin
Можно убрать, если там еоф, то в цикл и не зайдет

я так понимаю? из Table2 всегда берется последнее значение
if form1.Table2.RecordCount<>0 then
begin
form1.Table2.Last;
form1.Table11.FieldByName('data').AsString:=form1.Table2.FieldByName('data_per')  .AsString;
Если за время цикла оно не изменяется, имеет смысл вынести действие за цикл, в начало. Вообще RecordCount - долгая процедура.
Может так:
form1.Table2.Last;
if not form1.Table2.Eof then
 form1.Table11.FieldByName('data').AsString:=form1.Table2.FieldByName
('data_per') .AsString;


barakuda   (2006-05-30 10:30:00) [20]

вот код
procedure tform10.adding;
var i:integer;
begin
i:=0;
if form1.Table11.RecordCount<>0 then
begin
form1.Table11.First;
while not form1.Table11.Eof do
begin
form1.Table11.Delete;
end;
end;
form1.Table1.First;
while not form1.Table1.Eof do
begin
form1.Table11.Append;
form1.Table11.FieldByName('klient').AsString:=form1.Table1.FieldByName('klient') .AsString;
form1.Table11.FieldByName('city').AsString:=form1.Table1.FieldByName('boold').As String;
form1.Table11.FieldByName('otrasl').AsString:=form1.Table1.FieldByName('otrasl') .AsString;
form1.Table11.FieldByName('type').AsString:=form1.Table1.FieldByName('boold1').A sString;
form1.Table11.FieldByName('spesial').AsString:=form1.Table1.FieldByName('spesial ').AsString;
form1.Table11.FieldByName('harka').AsString:=form1.Table1.FieldByName('harka').A sString;
if form1.Table2.RecordCount<>0 then
begin
form1.Table2.Last;
form1.Table11.FieldByName('data').AsString:=form1.Table2.FieldByName('data_per') .AsString;
end;
form1.Table11.Post;
form1.Table1.Next;
i:=i+1;
form1.Caption:=inttostr(i);
end;
end;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо