Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];

Вниз

Трехзвенка: ошибка при редактировании   Найти похожие ветки 

 
Val ©   (2008-07-24 22:43) [0]

Добрый день.
Имеется связка: MySQL + mysqlconnector + (TADODataSet + TDataSetProvider) + TClientDataSet.
В свойствах провайдера UpdateMode = upWhereKeyOnly.
Как в ADODataSet так и в ClientDataSet созданы наборы статичных полей.
Для ключевых полей ProviderFlags указаны [pfInWhere,pfInKey], для остальных - [pfInUpdate]. Это как для ADO, так и для ClientDataSet.
При работе с набором данных вроде бы все в порядке, НО:
если перевести датасет в режим редактирования, стереть в DBEdit значение поля, затем повторить его -> Post -> при ApplyUpdates(0) получаю ошибку "Record not found or changed by another user." - почему, и что сделать?
В остальном все в порядке: редактирование, вставка, удаление..гуглю заколебал, полей типа дата/время с миллисекундами в наборе нет. На данный момент режим однопользовательский.
Заранее благодарен за помощь.


 
Нат   (2008-07-29 10:57) [1]

Довольно распространеннаяя проблема.
Решается не всегда легко.
Скорее всего у Вас нередактируемый запрос, слишком сложный с вычисляемыми полями и неоднозначными  связями.
Самое надежное - упростить запрос.
Проверить наличие в запросе ключевых полей всех связанных таблиц
В Проперти "Unique table" указать одну таблицу
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=420


 
Johnmen ©   (2008-07-29 12:14) [2]


> Нат   (29.07.08 10:57) [1]

Ты писатель, это видно сразу. Мог бы для разнообразия и почитать. Например, эту фразу "В остальном все в порядке: редактирование, вставка, удаление.."


 
Val ©   (2008-07-30 13:40) [3]

запросы простые...вот например:
таблица
CREATE TABLE IF NOT EXISTS users
(UserName       VARCHAR(40)  NOT NULL,
UserPwd        VARBINARY(40)  NOT NULL,
FirstName      VARCHAR(40),
LastName       VARCHAR(40),
EmailAddress   VARCHAR(40),
PhoneNumber    VARCHAR(32),
IsActive       BOOLEAN NOT NULL DEFAULT 1,
IsSuspended    BOOLEAN NOT NULL DEFAULT 0,
CONSTRAINT pk_users PRIMARY KEY (UserName),
CONSTRAINT ck_UserPwd CHECK (LENGTH(UserPwd) > 6)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


запрос в ADODataSet

SELECT u.* ,  
 CASE u.IsActive
    WHEN 0 THEN "No"
    WHEN 1 THEN "Yes"
 END AS IsActiveText,
 CASE u.IsSuspended
    WHEN 0 THEN "No"
    WHEN 1 THEN "Yes"
 END AS IsSuspendedText
FROM users u


 
Polevi ©   (2008-07-31 09:30) [4]

чему равно dataset.ChangeCount ? проверяешь перед ApplyUpdate ?


 
Val ©   (2008-07-31 10:20) [5]

ChangeCount = 1 (редактируется по 1 записи на форме).


 
Val ©   (2008-07-31 10:35) [6]

в обработчике OnReconcileError, при перехвате стандартным HandleReconcileError, видно, что все поля, кроме изменяемого, имеют значение <Unchanged> в ModifiedValue, а изменяемое поле имеет одно и то же значение, как в ModifiedValue, так и в OriginalValue.


 
Polevi ©   (2008-08-01 09:42) [7]

dataset.Delta <> nil  ?


 
Val ©   (2008-08-01 11:06) [8]

VarIsNull(DataSet.Delta), VarIsEmpty(DataSet.Delta) = False



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.116 c
15-1233297032
Phenix
2009-01-30 09:30
2009.03.29
Help!!!


15-1232370647
Кое кто
2009-01-19 16:10
2009.03.29
Обитаемый остров


15-1232736848
Petr V. Abramov
2009-01-23 21:54
2009.03.29
МИЗЕР :)


2-1234238813
Программер
2009-02-10 07:06
2009.03.29
расшифровать кодировку


2-1233905740
Unknown user
2009-02-06 10:35
2009.03.29
В Delphi5 не генерируются исключения в потоках?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский