Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с навигацией 
:(
    Опции темы
mhalion
Дата 10.9.2007, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 18.2.2007

Репутация: нет
Всего: нет



Для работы с таблицам я использую компонет TTable. Есть две таблицы: Исходная и таблица с результатами. Действия такие: читаем из исходной запись и ищем её в таблице результатов. Причем в таблице результатов может быть несколько похожих записей (т.е. необходимо ещё и редактировать и добавлять записи), поэтому делаю два цикла в одном просматриваем записи по исходной таблице, а второй цыкл просматривает записи в таблице результатов (причем просмотреть нужно все записи) и в зависимости от результата сравнения добавляет или редактирует запись. 
Код

while (not tblExportAddressBook.Eof) and (not Terminated) do
begin
    sCurrent :=tblExportAddressBook.FieldByName('Display Name').AsString;
    sDiryAddress :=tblExportAddressBook.FieldByName('E-mail Addresses').AsString;

    if IsPeopleName(sCurrent,sFirstname,sMiddlename,sLastname) and
    ScanSMTPAddress(sDiryAddress,sAddress) then
    begin
    nLength :=tblPeopleCounter.RecordCount;
    Synchronize(tblPeopleCounter.First);
          if nLength =0 then
          begin
    AddNewRecord(sFirstname,sMiddlename,sLastname,sAddress);
          end else begin
    for i :=1 to nLength do
                begin
                tblPeopleCounter.MoveBy(i -1);
                        
                sPCFirstname :=tblPeopleCounter.FieldValues['Firstname'];
                if CompareText(sFirstname,sPCFirstname) =0 then
                begin
    Synchronize(tblPeopleCounter.Edit);
    tblPeopleCounter.FieldValues['Counter'] :=tblPeopleCounter.FieldValues['Counter'] +1;
    Synchronize(tblPeopleCounter.Post);
                end else begin
                            Synchronize(frmMain.tblPeopleCounter.Insert);
                            tblPeopleCounter.FieldValues['FirstName'] :=sFirstname;
                            tblPeopleCounter.FieldValues['Counter'] :=1;
                            Synchronize(tblPeopleCounter.Post);
                end;
                Synchronize(tblPeopleCounter.Next);
           end;
        end;

    end;
    Synchronize(tblExportAddressBook.Next);
end;


Добавлено через 36 секунд
В итоге не пашет... В чем загвостка и как лучше сделать???
PM MAIL   Вверх
ALeXandrK
Дата 10.9.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 6



А не проще пользоваться методами Locate или Lookup, или может воспользоваться SQL запросами?!
Беглый просмотр говорит, что ф-ии Locate вполне достаточно.


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
mhalion
Дата 10.9.2007, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 18.2.2007

Репутация: нет
Всего: нет



Ладно понял, и даже написал правильно без использования locate. Но при достижении 2000 записей скорость обработки значительно снижается. Вопрос: Как использовать locate так чтобы я мог просматривать всю таблицу, даже после того как locаte уже один раз вернул нужное значение??? Т.е. поиск поиском, а некоторые поля мне нужно проверять вручную в программе. Поэтому даже если одно поле нашел, то не факт что это ещё конец поиска и приходится просматривать всю таблицу в итоге

Это сообщение отредактировал(а) mhalion - 10.9.2007, 13:24
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0431 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.