Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.15;
Скачать: CL | DM;

Вниз

TQuery+TUpdateSQL   Найти похожие ветки 

 
Kudatsky   (2002-06-17 14:04) [0]

При попытке выполнить метод TQuery.ApplyUpdates появляется сообщение "Update failed". Изменения не сохраняются.


 
VAleksey ©   (2002-06-17 14:19) [1]

Базы ?


 
Lusha ©   (2002-06-17 14:33) [2]

Причин тому бывает несколько...
1. Неверные тексты запросов в TUpdateSQL - модификации подвергаются более одной записи...
2. Неверная работа с кэшируемыми записями... Например, добавление и последующая модификация записи минуя сохранение внесенных изменений ApplyUpdates между этими операциями...

Первое, что пришло на ум... :)


 
kudatsky   (2002-06-17 14:34) [3]

dbf-файлы


 
fool ©   (2002-06-17 15:44) [4]

А ты сгенерил запросы в UpdateSQL(InsertSQL, ModifySQL)?


 
kudatsky   (2002-06-17 16:34) [5]

Сгенерил.


 
Приятель   (2002-06-17 17:51) [6]

А правильно?


 
VAleksey ©   (2002-06-18 06:22) [7]

1)нужна структура таблицы и тексты запросов
2)описане
а)момента, когда ты применяешь изменения
б)непосредственно код


 
kudatsky   (2002-06-18 09:53) [8]

Структура таблицы
FILENAME CHARACTER 12
EDITOR CHARACTER 12
NAME CHARACRER 50
=============================================================
Тексты запросов
update "statusid.dbf"
set
FILENAME = :FILENAME,
EDITOR = :EDITOR,
NAME = :NAME
where
FILENAME = :OLD_FILENAME and
EDITOR = :OLD_EDITOR and
NAME = :OLD_NAME
----------------------------------------------------------------
insert into "statusid.dbf"
(FILENAME, EDITOR, NAME)
values
(:FILENAME, :EDITOR, :NAME)
----------------------------------------------------------------
delete from "statusid.dbf"
where
FILENAME = :OLD_FILENAME and
EDITOR = :OLD_EDITOR and
NAME = :OLD_NAME
----------------------------------------------------------------
Изменения применяются по завершении редактирования, перед закрытием файла.

procedure TForm3.BitBtn1Click(Sender: TObject);
begin
Query1.ApplyUpdates;
Query1.Close;
end;



 
fool ©   (2002-06-18 10:12) [9]

У тебя что ли нет ключевого поля? Обычно в условии Where проверка по ключу Key=:Old_Key, и соответственно оно само не меняется.


 
kudatsky   (2002-06-18 10:31) [10]

Это DBF-файл


 
Desdechado ©   (2002-06-18 10:34) [11]

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

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


 
kudatsky   (2002-06-18 10:52) [12]

Уважаемые коллеги !
Не пришлёт ли мне кто-нибудь простенькую демонстрашку ?
У меня Delphi 5

Заранее благодарю !


 
Lusha ©   (2002-06-18 12:50) [13]

>kudatsky (18.06.02 10:52)
А чего демонстрировать то? У Вас вполне рабочий примерчик... Только нельзя записи одинаковые добавлять, пункт 1 моей первой реплики... А после добавления новой записи пользователь должен обязательно нажать BitBtn1 прежде чем пытаться ее изменить - 2 пункт моей первой реплики...

А уж, как обеспечить соблюдение этих пунктов решать Вам... :)


 
kudatsky   (2002-06-18 13:53) [14]

А как DBGrid-ом редактировать файл ?


 
VAleksey ©   (2002-06-18 14:49) [15]

напиши обработчики события на AfterDelete & AfterPost где
вызывай ApplayUpdates
ЗЫ
Если получить после Update Failed сообщение об ошибке используя
e.Message то сообщение будет (по моему, специально не проверял) более вразумительное.


 
Lusha ©   (2002-06-18 15:35) [16]

>VAleksey © (18.06.02 14:49)
Если получить после Update Failed сообщение об ошибке используя
e.Message то сообщение будет (по моему, специально не проверял) более вразумительное.

Не будет... Это исключение генерирует сам компонент...


 
kudatsky   (2002-06-18 16:10) [17]

Написал, вот он:
procedure TForm3.Query1AfterPost(DataSet: TDataSet);
begin
Query1.ApplyUpdates;
end;

То же самое...



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

Текущий архив: 2002.07.15;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.021 c
14-47773
Erlan
2002-06-13 09:33
2002.07.15
Беда просто.


1-47419
Gonschik
2002-07-03 06:53
2002.07.15
Доступ к памяти чужой программы


3-47195
EugeneCher
2002-06-19 16:36
2002.07.15
IBQuery проблема с текстовыми вычисляемыми полями!


14-47793
s@shka
2002-06-15 14:32
2002.07.15
OpenSSL в родном Delphi


4-47890
mari_ra
2002-05-15 10:44
2002.07.15
Как создать и заполнить EMF?