Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.06 c