Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2010, 02:03   #1
$T@LKER
Форумчанин
 
Аватар для $T@LKER
 
Регистрация: 28.03.2009
Сообщений: 393
Восклицание Ускорение процеса проверки данных!

Что посоветуете сделать дабы в разы ускорить процес проверки! Даный код рабочий! Просто думаю его модернизировать!

Код:
{Перевірка на однакові записи}
procedure TMUpdate.VerifClick(Sender: TObject);

var
  {змінна для індексації перебору рядків в екселі}
  rows : integer;
  {змінні для циклів перевірки даних в бд}
  x,y : integer;
  {змінна для збереження даних з екселя в бд}
  s_temp : string;
  {кількість рядків таблиці Аренда}
  k_row : integer;
     {кількість рядків листка Аренда}
  k_rows : integer;

begin
      {ввімкнення кнопки на оновлення}
    update.Enabled := true;

{   Что бы начать работу с Экселем, нужно создать OLE объект:}
Ap := CreateOleObject('Excel.Application');

{якщо обрана Аренда то виконуємо перевірку в цій таблиці}
if (ComboBox1.ItemIndex =  0)
then begin

    {  открыть файл:}
    Ap.Workbooks.Open('C:\база\обновление_а.xls',0,True);

    {беремо значення з поля (кількість рядків в екселі)}
    k_rows := strtoint(ERows.Caption);

    {Цикли для перевірки на співпадіння
                  однакових рядків та їх заміни}

    k_row := strtoint(KRows.Caption);

     {ініціалізуєм змінну номером рядка
    з якого починається робота з ексельом}
    rows := 2;

  {З_цикл перебору рядків в екселі}
    for x := 1 to k_rows do
    begin
      {взяття даих з і-клітинки(Номер Телефону)...}
      {...запамятовування даних з клітинки(текстовий тип)}
      s_temp := Ap.Cells[rows,20];

      {перехід до 1-запису}
      DBNavigator1.BtnClick(nbFirst);

       {В_цикл перебору рядків в таблиці для порівняння з ексельом}
   for y := 1 to k_row do
    begin

      {перевырка умови на рывнысть поля Контактний Телефон в Екселі
       з аналогічним полем у Таблиці...}
      if (s_temp = Arenda.Fields[20].AsString)
        then
          {...у разі виконання умови виконується видалення поточного запису
            з таким самим телефоном...}
          DBNavigator1.BtnClick(nbDelete)
       {...якщо ж уомва не виконується то відбувається
          просто перехід до наступого запису!}
      else DBNavigator1.BtnClick(nbNext);

      {кінець В_циклу}
     end;
     {...збільшення номером рядка
       з якого починається робота з ексельом}
       rows := rows + 1;

      {кінець З_циклу}
       end;

   {Кінець перевірки таблиці}
  end
""Сериалы и компьютерные игры это словно вторая жизнь, которою ты проживаешь, во главе главного героя или персонажа, параллельно своей!""
$T@LKER вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ускорение д2010 Utkin Софт 2 29.03.2010 16:03
Проверка и востанавление процеса %( Pirotexnik Общие вопросы Delphi 5 27.03.2009 14:27
Завершение процеса aesoem Общие вопросы Delphi 10 28.08.2008 16:44
ускорение компа Dark Energy Компьютерное железо 4 14.07.2008 20:15
Ускорение работы с БД za4ot БД в Delphi 6 11.07.2008 19:05