![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TQuery+TUpdateSQL
Kudatsky © (2002-06-17 14:04:00)При попытке выполнить метод TQuery.ApplyUpdates появляется сообщение "Update failed". Изменения не сохраняются.
kudatsky (2002-06-18 16:10:00) [1]Написал, вот он:
procedure TForm3.Query1AfterPost(DataSet: TDataSet);
begin
Query1.ApplyUpdates;
end;
То же самое...
Lusha (2002-06-18 15:35:00) [2]>VAleksey © (18.06.02 14:49)
Если получить после Update Failed сообщение об ошибке используя
e.Message то сообщение будет (по моему, специально не проверял) более вразумительное.
Не будет... Это исключение генерирует сам компонент...
VAleksey (2002-06-18 14:49:00) [3]напиши обработчики события на AfterDelete & AfterPost где
вызывай ApplayUpdates
ЗЫ
Если получить после Update Failed сообщение об ошибке используя
e.Message то сообщение будет (по моему, специально не проверял) более вразумительное.
kudatsky (2002-06-18 13:53:00) [4]А как DBGrid-ом редактировать файл ?
Lusha (2002-06-18 12:50:00) [5]>kudatsky (18.06.02 10:52)
А чего демонстрировать то? У Вас вполне рабочий примерчик... Только нельзя записи одинаковые добавлять, пункт 1 моей первой реплики... А после добавления новой записи пользователь должен обязательно нажать BitBtn1 прежде чем пытаться ее изменить - 2 пункт моей первой реплики...
А уж, как обеспечить соблюдение этих пунктов решать Вам... :)
kudatsky (2002-06-18 10:52:00) [6]Уважаемые коллеги !
Не пришлёт ли мне кто-нибудь простенькую демонстрашку ?
У меня Delphi 5
Заранее благодарю !
Desdechado (2002-06-18 10:34:00) [7]2 fool
если весь кортеж уникальный, то не обязательно суррогатное ключевое поле, хотя с ним удобнее.
а вот если неуникальный, то нужная запись может быть несколько раз, что приведет к ошибке ее локализации.
kudatsky (2002-06-18 10:31:00) [8]Это DBF-файл
fool (2002-06-18 10:12:00) [9]У тебя что ли нет ключевого поля? Обычно в условии Where проверка по ключу Key=:Old_Key, и соответственно оно само не меняется.
kudatsky (2002-06-18 09:53:00) [10]Структура таблицы
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;
VAleksey (2002-06-18 06:22:00) [11]1)нужна структура таблицы и тексты запросов
2)описане
а)момента, когда ты применяешь изменения
б)непосредственно код
Приятель (2002-06-17 17:51:00) [12]А правильно?
kudatsky (2002-06-17 16:34:00) [13]Сгенерил.
fool (2002-06-17 15:44:00) [14]А ты сгенерил запросы в UpdateSQL(InsertSQL, ModifySQL)?
kudatsky (2002-06-17 14:34:00) [15]dbf-файлы
Lusha (2002-06-17 14:33:00) [16]Причин тому бывает несколько...
1. Неверные тексты запросов в TUpdateSQL - модификации подвергаются более одной записи...
2. Неверная работа с кэшируемыми записями... Например, добавление и последующая модификация записи минуя сохранение внесенных изменений ApplyUpdates между этими операциями...
Первое, что пришло на ум... :)
VAleksey (2002-06-17 14:19:00) [17]Базы ?