2

Я конвертирую существующее приложение Advantage Database Server в SQL Server 2005 с использованием D2009, dbGo (ADO). Иногда я испытываю ошибку row cannot be found for locating. Я получил это в googled, в соответствии с результатами мне нужно было установить свойство Update Criteria каждого ADOTable и установить динамическое расположение курсора. Я сделал это, но иногда я все равно получаю такую ​​же ошибку. Все таблиц имеют первичный ключ, так что я используюНевозможно найти строку для Найти?

Query.Requery(); 
Query.Locate('ID',ID,[]); 

перед обновлением записи, чтобы избежать ошибок, но должен быть более эффективными решениями. Есть идеи? Или я должен перейти к MyDAC или Zeoslib?

ответ

2

dbGO/ADO - это естественный способ доступа к базам данных MS-SQL. Вы уверены, что это точное сообщение об ошибке? Потому что я никогда не слышал об этом, но я слышал о «строке не может быть для обновление».

Это сообщение об ошибке указывает, что ADO не может найти запись, которая будет удалена или обновлена. Чаще всего причиной является то, что таблица не имеет определенного первичного ключа или в таблице нет хотя бы столбца, где содержимое является уникальным.

Убедитесь, что вы определили первичный ключ в таблицах MS-SQL.

0

Обычный случай для строки не может быть обновлен, так как у вас есть ограничения по умолчанию для таблиц. Обязательно задайте значения для полей в OnNewRecord. Вы также можете использовать myAdoDataset.Properties ['Критерии обновления']. Значение: = 0; Затем ADO должен использовать только ключ для обновлений.

1

В случае, если кто-либо другой имеет ту же проблему при использовании триггеров, добавьте SET NOCOUNT ON в начало и SET NOCOUNT OFF в конец триггера.

+0

Пожалуйста, используйте комментарии. Если вы используете эту учетную запись для входа на этот сайт каждый раз, когда вы можете добавлять комментарии к своим собственным вопросам. –

+0

Да, я пытался прокомментировать, но для этого требуется 50 репутации, чего у меня нет. –

+0

Затем отредактируйте свой дополнительный пост с разъяснениями или дополнительными вопросами. :-) Вы всегда можете редактировать свои собственные сообщения. –

0

простой adotable1.refresh; после того, как сообщение должно сделать трюк ...

Смежные вопросы