Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по Locate


igel888 ©   (2015-08-17 18:42:00) 

С помощью:


if ADOQuery1.Locate('client_id', Variant(ADOQuery2.FieldbyName('c_id').AsInteger), [loCaseInsensitive]) Then
 Showmessage('Дубликат')
else
begin
 ADOQuery1.insert;
ADOQuery1.FieldByName('client').AsString:=ADOQuery2.FieldByName('client');
 ADOQuery1.Post;
end;


У меня происходит сначала проверка записи на дубликат, потом вставка записи.

Все работает, только проблема если я выбераю не одну а несколько записей, вставка все равно происходит не смотря на то что в некоторых из выбранных записей дубликат присутствует. Как это исправить, пожалуйста помогите очень надо (если можно без sql запроса)

P.S. я в этом совсем новичок


igel888   (2015-08-18 09:45:00) [1]

мне нужно чтобы локейт проверял на наличие дубликатов, и поэтому я использовал вариант для сравнения id двух таблиц. А вообще вставка то происходит, но не происходит проверка несколько записей на дубликат. Тут я думаю нужен цикл, но так как у меня отсутствует знания в этом, я уже часами мучаюсь, не знаю как его правильно сделать.


sniknik   (2015-08-18 08:16:00) [2]

зачем приведение типа к Variant? и параметр нечуствительности к регистру для числа лишний... просто
Locate('client_id', ADOQuery2.FieldbyName('c_id').AsInteger, loCaseInsensitive)

+ раз проверяешь то полю то почему игнорируешь его при добавлении?
FieldByName('client_id').AsInteger:= FieldByName('c_id').AsInteger;

> Все работает
не может быть, тут явная ошибка, несовпадение типа -
ADOQuery1.FieldByName('client').AsString:=ADOQuery2.FieldByName('client');

p.s. не используй ADOQuery, используй ADODataSet. + insert в ADO не работает... в основном, есть исключение, но и оно такое, что лучше избавляться. работает Append (insert при не возможности вставки тоже добавляет, но команды не равнозначны по логике, и если ожидаешь вставку... ошибка это в общем, логическая)


Наверх

Титульная страница Поиск, карта сайта Написать письмо