Вы используете исполняемый запрос, а затем его пытаетесь открыть:
	Цитата:
	
	
		| //обновляем набор данных DataModule2.ADOQueryProduct.Close;
 DataModule2.ADOQueryProduct.open;
 | 
	
 
Этих двух строк вообще не надо.
А что-бы в таблице небыло повторяющихся записей сделайте уникальный индекс и отслеживайте при добавлении ошибку повтора значения или ручками запрос делайте к таблице на наличие записи.