100% загрузка процессора
смысл
есть две базы данных формата Dbase там список людей и там список с теми же людьми на данных людей разные есть ключевые поля в базах по которым определяю ледей когда в базе х нахожу человека то вставляю в базу у данные из базы х.
Почему такой процесс делает загрузку процессора на 100 процентов.
Есть такая программа.
смысл
есть две базы данных формата Dbase там список людей и там список с теми же людьми на данных людей разные есть ключевые поля в базах по которым определяю ледей когда в базе х нахожу человека то вставляю в базу у данные из базы х.
Почему такой процесс делает загрузку процессора на 100 процентов.
Наверное, потому что синтаксис хромает. :)
А что такого, в том, что программа загрузила процессор на 100%? Скорее всего алгоритм чтения/записи/поиска не оптимизирован.
Кстати, если навести мышку на заголовок окна, зажать левую кнопку и начать шустро-шустро шпынять его во все стороны, то тоже можно процессор на 100% загрузить, правда кратковременно. :)
Наверное, потому что синтаксис хромает. :)
Дело в том что проверка может продолжаться в течении 40 минут и в течении всего этого времени на компе ничего нельзя делать.
и вообще вот два простых кода смысл один и тотже просто на разных языках а скорости выполнения очень сильно отличаются
Delphi
for i:=1 to 10000 do
begin
ADOTable2.Edit;
ADOTable2['Nom_polis']:='Г02/0123526';
ADOTable2['Birthday']:='29.09.1976';
ADOTable2.Post;
ADOTable2.Next;
end;
VBA
for i=1 to 10000
rst.Edit
rst.Fields("Nom_polis") = "Г02/0123526"
rst.Fields("Birthday") = "29.09.1976"
rst.Update
rst.MoveNext
next
Вот два разных языка принцип синтаксиса одинаковый а время затрачено будет на VBA где то 1,30 минут а в Delphi минут 40 а может и час и при этом еще и у компа загрузка процессора на 100%. Вот из за этого я и задал вопрос возможно что то я не то сделал. Помогите.
а в Delphi минут 40 а может и час и при этом еще и у компа загрузка процессора на 100%
Не выставил верно параметры ADOTable, отвечающие за кэширование и одно- или двухпроходность.
Не вызвал ADOTable1.DisableControls вначале и EnableControls в конце обработки, наконец!
Не выставил верно параметры ADOTable, отвечающие за кэширование и одно- или двухпроходность.
Если не секрет скажи какие параметры еще надо выставлять потомучто в книгах по которым я пробую, учусь, хучу научиться ничего несказано.(а книг у меня не одна).
Не вызвал ADOTable1.DisableControls вначале и EnableControls в конце обработки, наконец!
ADOTable1.DisableControls - что это такое и для чего она нужна.
Благодарен за уже данный ответ потомучто этот вопрос меня долго уже месяца 4 мучил.
for i:=1 to 10000 do
begin
ADOTable2.Edit;
ADOTable2['Nom_polis']:='Г02/0123526';
ADOTable2['Birthday']:='29.09.1976';
ADOTable2.Post;
ADOTable2.Next;
end;
Кстати, если для набора записей надо поставить одинаковые значения в полях, почему бы не использовать UPDATE?
Например, UPDATE Table1 SET NomPolis='Г02/0123526',Birthday='29.09.1976' WHERE условие
UPDATE Table1 SET NomPolis='Г02/0123526',Birthday='29.09.1976' WHERE условие
Это радикально и правильнее всего. Правда, с точки зрения обучения, использовать DisableControls ты так и не научишься. Читай справку по TDataSet.
Это радикально и правильнее всего. Правда, с точки зрения обучения, использовать DisableControls ты так и не научишься. Читай справку по TDataSet.
Что вы все принимаете в серьез это я для примера написал одни и теже данные что бы вам было понятно что делает. и даже если одни и теже данные записывать они все равно будут очень долго записываться. Извините но "Читай справку по TDataSet." это не ответ на заданный вопрос если знаете то можно подсказать расказать а в конце ответа допустим дописать более подробную информацию найдешь там то тамто. Такие советы я могу и сам довать.