Я думаю, что ваша проблема должна быть вызвана деталями вашего проекта, которые вы не упомянули в q, потому что я не могу воспроизвести вашу проблему в минимальном тестовом проекте.
1 Я создал тестовую таблицу, ClientCodes на MS Sql Server 2014 с таким определением
CREATE TABLE [dbo].[clientcodes](
[ClientCode] [int] NOT NULL,
[Name] [varchar](40) NULL,
PRIMARY KEY CLUSTERED
(
[ClientCode] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Затем я вставил 3 строки теста
1 One
2 Two
3 Three
2 Затем я создал новый проект Delphi, содержащий AdoConnection к Sql серверу, AdoQuery, который выполняет 'select * from ClientCodes', DataSetProvider, подключенный к AdoQuery, и CDS unqryCliPrint, подключенный к этому, и второй CDS с именем cdsEtiquetas.
Примечание: все свойства компонентов остались по умолчанию, кроме тех, которые необходимы для подключения компонентов, как описано выше.
Единственный код в проекте:
procedure TForm1.Button1Click(Sender: TObject);
begin
unqryCliPrint.Open;
cdsEtiquetas.Data := unqryCliPrint.Data;
cdsEtiquetas.InsertRecord([0, 'zero']);
cdsEtiquetas.InsertRecord([0, 'zero']);
cdsEtiquetas.InsertRecord([0, 'zero']);
end;
Как вы можете видите, это вставляет 3 копии одного ряда. Код выполняется правильно, без каких-либо исключений или ошибок.
Я предлагаю вам создать аналогичный проект, используя ваш сервер. Если вы получите тот же результат, вам нужно будет попытаться определить, что именно в вашем реальном проекте вызывает ошибку.
Кстати, в вашем коде, похоже, есть ошибка:
cdsEtiquetas.DisableControls;
cdsEtiquetas.DisableConstraints;
Я не вижу нигде, где вы отменяете эти шаги.
Обновление Из добавленной вами DFM я вижу, что ваши cdsEtiquetas связаны с чем-то другим, а именно к dtstprvEtiquetas, несмотря на то, что вы сказали в своем комментарии. И этот DSP подключен обратно к unqryCliPrint! Так что я думаю, что это ваша ошибка. Если cdsEtiquetas не нуждается в DSP, и вы не указали причину его возникновения, просто очистите его свойство ProviderName.