Главная страница
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.47 MB
Время: 0.179 c
6-1219809662
apic
2008-08-27 08:01
2010.08.27
Установка по сети


2-1275245281
Semen
2010-05-30 22:48
2010.08.27
Поиск и открытие файлов


2-1270459108
MonoLife
2010-04-05 13:18
2010.08.27
Запрос Local SQL.


2-1273511164
Andrewtitoff
2010-05-10 21:06
2010.08.27
Как обозначаются бвоичные данные?


2-1267032574
Nostalgia
2010-02-24 20:29
2010.08.27
стєк