Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Table.Locate не правильно ищет по 2 полям   Найти похожие ветки 

 
Студент   (2010-06-01 16:18) [0]

Уважаемые Мастера, пожалуйста подскажите почему в данном коде не правильно происходит поиск по 2 полям. Есть 2 таблицы, одинаковые по структуре.
У обоих есть поля, RNN, SUMP, NUMRS. Нужно копировать данные из одной таблицы в другую, с условием что там нет записей с таким же значением RNN и  NUMRS, иначе надо отредактировать эту записи и просуммировать поля SUMP. Сейчас у меня не происходит поиск по 2 полям, происходит только по одному полю. Подскажите, где ошибка.

procedure TForm1.Button1Click(Sender: TObject);
var
 i : integer;
 RNN, NUMRS, FName : String;
 Sum : Real;
begin
 Table1.First;
 While not Table1.Eof do
 begin
   RNN := Table1.FieldByName("RNN").AsString;
   NUMRS := Table1.FieldByName("NUMRS").AsString;
   // Ищим РНН и NUMRS , если такого РНН и NUMRS нету то добавляем всю запись во вторую таблицу
   if (not Table2.Locate("RNN", RNN, [])) and (not Table2.Locate("NUMRS", NUMRS, []) ) then
   begin
     Table2.Append;
     // бежим по всем полям первой таблицы и переносим во вторую
     for i := 0 to Table1.FieldCount - 1 do
     begin
       FName := Table1.Fields[i].FieldName; // получаем имя поля
       Table2.FieldByName(FName).AsString := Table1.FieldByName(FName).AsString;
     end;
     Table2.Post; // сохраняем
     Table2.First;
   end
   else // Если такой РНН и NUMRS  есть, редактируем запись и суммируем суммы
   begin
     Table2.Edit;
     Table2.FieldByName("SUMP").AsFloat := Table1.FieldByName("SUMP").AsFloat + Table2.FieldByName("SUMP").AsFloat;
     Table2.Post;
   end;
   Table1.Next;
 end;
end;


 
Anatoly Podgoretsky ©   (2010-06-01 16:22) [1]

> Студент  (01.06.2010 16:18:00)  [0]

В общем, что бы не тратить пальцы, используй запросы.


 
Студент   (2010-06-01 16:30) [2]

Все понял, поиск происходит 2 раза а не по 2 полям. В качестве временного решения написал свой поисковик. А так, запросы это хороший совет. Спасибо.


 
Anatoly Podgoretsky ©   (2010-06-01 19:18) [3]

> Студент  (01.06.2010 16:30:02)  [2]

Зачем, надо просто писать в соотвествии со справкой, а не создавать
велосипед.


 
Плохиш ©   (2010-06-01 23:15) [4]


> Table.Locate не правильно ищет по 2 полям


>    if (not Table2.Locate("RNN", RNN, [])) and (not Table2.
> Locate("NUMRS", NUMRS, []) ) then
>

И в каком месте здесь Locate по двум полям?


 
icWasya ©   (2010-06-02 10:06) [5]

if (not Table2.Locate("RNN;NUMRS",VarArrayOf( [RNN,NUMRS] ), []) ) then



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.072 c
15-1274862307
xayam
2010-05-26 12:25
2010.08.27
Антикомпьютерный контроль (АКК)


11-1217821090
L`Autour
2008-08-04 07:38
2010.08.27
Как установить ширину PopupMenu при OwnerDraw = True


9-1186542770
Баклан
2007-08-08 07:12
2010.08.27
Ищу исходники сокобана


10-1166561371
TStas
2006-12-19 23:49
2010.08.27
Как получить число страниц в вордовском файле?


2-1270922444
Evgeney
2010-04-10 22:00
2010.08.27
Процедура для открытия Child форм