2010-08-19 3 views
0

Как копировать информацию о записи из набора данных master/detail clientdataset в новую запись или в существующую.копировать записи в master/detail clientdataset delphi dbexpress

Например, я хочу, чтобы скопировать të данные счета-фактуры № 100 на счет-фактуру № 150 или информация счета № 100 на новый счет-фактура

С IBX я сделал это с storedprocedures, но я бегу в проблема с clientdataset с «конфликтом блокировки без транзакции ожидания», когда я применяю обновления, я думаю, что это связано с тем, что информация уже находится на стороне сервера.

Заранее благодарит за себя

+0

Вы делаете это так, как я думаю, вы это делаете. Два клиентских набора данных, CDS1 - источник, CDS2 - это назначение, а затем CDS2.Insert, CDS2Field1.Value: = CDS1Field1.Value и т. Д., CDS2.Post, CDS2.ApplyUpdates. Реальный вопрос, почему вы получаете эту ошибку, вам нужно предоставить дополнительную информацию, чтобы ответить на это, но если вы сообщите об ошибке в сообщении об ошибке, вы найдете много материалов, объясняющих, почему это происходит. – LachlanG

+0

Большое спасибо, я буду смотреть на это –

ответ

0

«Блокировка путаницы без ожидания»?

AFAIR, это ошибка Interbase/Firebird. Это может означать, что другое соединение модифицировал записи и до сих пор еще не совершил ....

UPDATE: Другие вещи, которые пришли на ум:

  • Вы пересмотрели конфигурацию соединения DBX? Если вы не знаете/игнорируете, что CommitRetaining/do, убедитесь, что он настроен на FALSE. В противном случае возникнут другие проблемы ...

  • В Firebird/Interbase вы можете только совершать/откатывать из клиентского приложения. У SP нет бизнеса с контролем транзакций.

+0

Большое спасибо. Вопрос: Могу ли я совершить хранимую процедуру? –

+0

Думаю, что было! Большое спасибо Я положил Commitretain = false на params sqlconection, и все, похоже, работает нормально, есть чему поучиться. Что-нибудь еще я должен наложить на параметры связи, чтобы сгладить ситуацию? –

+0

От ума, нет. Но вы можете облегчить нам помощь в предоставлении: RDBMS Name/Version/Edition (примеры: Firebird 2.1.1, Microsoft SQL Server 2005 Express Edition и т. Д.), IDE (delphi - вы предоставили), версию IDE (2010) и библиотеку, которую вы используете (dbexpress - вы предоставили). Если я не понял сообщение об ошибке и предположил, что вы являетесь Interbase/Firebird в качестве backend, этот вопрос займет гораздо больше времени, чтобы получить ответ. –