Форум: "Базы";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.013 c