![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Table.Locate не правильно ищет по 2 полям [D7, XP]
Студент © (2010-06-01 16:18:00)Уважаемые Мастера, пожалуйста подскажите почему в данном коде не правильно происходит поиск по 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;
icWasya (2010-06-02 10:06:00) [1]
if (not Table2.Locate('RNN;NUMRS',VarArrayOf( [RNN,NUMRS] ), []) ) then
Плохиш (2010-06-01 23:15:00) [2]
> Table.Locate не правильно ищет по 2 полям
> if (not Table2.Locate('RNN', RNN, [])) and (not Table2.
> Locate('NUMRS', NUMRS, []) ) then
>
И в каком месте здесь Locate по двум полям?
Anatoly Podgoretsky (2010-06-01 19:18:00) [3]> Студент (01.06.2010 16:30:02) [2]
Зачем, надо просто писать в соотвествии со справкой, а не создавать
велосипед.
Студент (2010-06-01 16:30:00) [4]Все понял, поиск происходит 2 раза а не по 2 полям. В качестве временного решения написал свой поисковик. А так, запросы это хороший совет. Спасибо.
Anatoly Podgoretsky (2010-06-01 16:22:00) [5]> Студент (01.06.2010 16:18:00) [0]
В общем, что бы не тратить пальцы, используй запросы.