Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1269198653
windaws
2010-03-21 22:10
2010.08.27
Разработка АИС на Delphi


2-1266493951
AndreyZAA
2010-02-18 14:52
2010.08.27
Поиск в базе данных с помощью Locate, SQL или только переборкой?


2-1269273213
Nostalgia
2010-03-22 18:53
2010.08.27
очереди


15-1264627806
Юрий
2010-01-28 00:30
2010.08.27
С днем рождения ! 28 января 2010 четверг


2-1268287795
zod2009
2010-03-11 09:09
2010.08.27
Получить дату первого числа, тякущего месяца





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский