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

Вниз

Обновление базы данных с помощью UpdateSQL   Найти похожие ветки 

 
Robin Hood   (2004-10-24 22:19) [0]

У меня проблема. Поместил на форме  Query, UpdateSQL. Поставил у Query
UpdateObject UpdateSQL. Сгенерировал SQL для UpdateSQL.
Поставил Query.CachedUpdate:=true;Query.RequestLive:=true;
Значение у Query CanModify стоит True.
Для открытия Query использоал Open.
Поставил кнопку с событием OnClick
with QueryRab do
begin
 if State in [dsEdit,dsInsert] then
   Post;
 ApplyUpdates;
 CommitUpdates;
end;
Если изменяю первую строку в таблице и жму кнопку работает нормально.
Если любую другую появляется сообщение
"exception class EDatabaseError with message "Update failed""
и не изменяет данные в базе данных.
Подскажите что делать.


 
ЮЮ ©   (2004-10-25 02:59) [1]

Покажи текст запроса на Update


 
Robin Hood   (2004-10-25 08:40) [2]

на Query:
select * from bz where GOD="2004" Order By FAM

на UpdateSQL, ModifySQL:
update bz
set
 FAM = :FAM,
 IMIA = :IMIA,
 OTCH = :OTCH,
 CLAS = :CLAS,
 GOD = :GOD
where
 FAM = :OLD_FAM and
 IMIA = :OLD_IMIA and
 OTCH = :OLD_OTCH and
 CLAS = :OLD_CLAS and
 GOD = :OLD_GOD


 
ЮЮ ©   (2004-10-25 09:05) [3]

Условие в where доджно возвращать ровно ОДНО значение, что возможно обеспечивается созжанием уникального индекса по этип полям. Если одно из полей до редактирования NULL, то такой запрос не вернет записи для редактирования. Поставь в Where поля, образующие первичный ключ.


 
asp ©   (2004-10-25 09:28) [4]

Query.RequestLive:=true в данном случае нет необходимости.


 
Robin Hood   (2004-10-25 21:37) [5]

оставил:
update bz
set
IMIA = :IMIA,
OTCH = :OTCH,
CLAS = :CLAS,
GOD = :GOD
where
FAM = :OLD_FAM

но всё равно не работает

у меня Query.Fields.FieldByName("FAM").IsNull стоит false
если значение KeyFields это "поля, образующие первичный ключ" то FAM у меня стоит в KeyFields

"обеспечивается созжанием уникального индекса по этип полям" как в Table создавать их я знаю. А как в Query?


 
ЮЮ ©   (2004-10-26 02:44) [6]

>обеспечивается созжанием уникального индекса по этип полям как в Table создавать их я знаю. А как в Query?

уникальный индекс создается на физическом уровне, неважно TTable или TQuery используется.

where
FAM = :OLD_FAM
вряд ли первичный ключ создан по FAM - однофамильцы не редкость. У тебя есть, вообще, ключевое поле? Как ты связываешь другие таблицы с этой?



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

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

Наверх





Память: 0.46 MB
Время: 0.043 c
4-1097491005
rainy_2002'
2004-10-11 14:36
2004.11.21
Как получить информацию о пользователе?


3-1098809624
Andriy Tysh
2004-10-26 20:53
2004.11.21
EDatabaseError Unable to find record. No key specified


1-1099568342
InfMag
2004-11-04 14:39
2004.11.21
Получение списка файлов и папок или что-то поотдельности


14-1099610766
default
2004-11-05 02:26
2004.11.21
Забавная задачка


3-1098712903
Tchainik
2004-10-25 18:01
2004.11.21
IBDataSet.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский