Главная страница
    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.46 MB
Время: 0.049 c
11-1221339711
Dy1
2008-09-14 01:01
2010.08.27
пожалуйста скажите что не так


2-1273679255
NBAH1990
2010-05-12 19:47
2010.08.27
Как сделать видео из скриншотов?


2-1272982597
novichek
2010-05-04 18:16
2010.08.27
TCPserver


15-1262651153
Kerk
2010-01-05 03:25
2010.08.27
Петиция за сохранение MySQL


15-1265149756
иксик
2010-02-03 01:29
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский