Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не подскажите люди, как мне перевести ИМЕННО запись в режим редак


Kurt ©   (2002-11-15 10:36:00) 

Не подскажите люди, как мне перевести ИМЕННО всю запись в режим редактирования а не какое-то поле?


Kurt   (2002-11-15 11:59:00) [1]

у меня АДО-элементы. Я делаю Инсерт. И при переходе к полям вставленной записис (при каждом ереходе к следующему полю) происходит "Ошибка неизвестного типа". но все вроде вставляется и так далее. Не подскажите в чем проблема?


exit   (2002-11-15 11:48:00) [2]

Вообще-то есть F1...
А в двух словах, когда "это" true, все изменения DataSet"a лежат на клиенте до применения ApplyUpdates, который (метод) пробует слить наработанное в базу. Не стоит этим увлекаться при использовании локальных СУБД (особенно). Иначе - Deadlock. То есть закончил с записью - Apply


Kurt   (2002-11-15 11:32:00) [3]

CachedUpdates это для чего, не подскажешь?
извини заранее за ламерский вопрос:-)


exit   (2002-11-15 11:22:00) [4]

В дизайне поставь для TQuery (я намеренно написал имя класса, какие ADO) CachedUpdates := true; RequestLive := true; напиши запрос SQL и подключи TUpdateSQL с соотв. SQL. Потом в run"е переводишь TQuery в Edit или Insert, делаешь Post столько же раз, а когда надоест - Пишешь TQuery.ApplyUpdates.
Вот пример:

Transaction.StartTransaction;
Query1.Edit;
Query1.Fields[0].AsInteger := 12;
Query1.Post;
Query1.Insert;
Query1.Fields[0].AsInteger := 15;
Query1.Fields[10].AsFloat := 0.234;
Query1.Post;
try
Query1.ApplyUpdates;
Transaction.Commit;
except on E: Exception do
begin
MessageBox(Application.Handle, PChar(E.Message), PChar("Ошибка"), MB_OK+MB_ICONEXCLAMATION+MB_TASKMODAL);
TQuery.CancelUpdates;
Transaction.Rollback;
end;
end;

Прописные истины...
И для ADO это тоже есть. Может быть немного методы названиями отличаются, но...


Kurt   (2002-11-15 11:19:00) [5]

Люди! а вставка? когда делаю Insert, то у меня пишет "ошибка неизвестного типа", что это значит?


Kurt   (2002-11-15 11:02:00) [6]

exit! это для АДО?
То есть преед редактированием надо врубить
Query.CachedUpdates := True
а потом по окончании или отменить Query.CancelUpdates или применить Query.ApplyUpdates , так?
а потом Query.CachedUpdates в false обратно надо переводить?



stone   (2002-11-15 10:53:00) [7]

Kurt (15.11.02 10:43)


> Teble1.Edit после каждого перехода к другому полю Post делает


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


> а как тогда уже допустим изменив 2 поля записи все отменить?

Table1.Cancel;


Romkin   (2002-11-15 10:53:00) [8]

Edit - переводит в режим редактирования, Post - запоминает изменения в текущей записи, Cancel - отменяет их. При переходе к другой записи выполняется Post или Cancel - если в DBGrid установлено. При чем здесь разные поля одной записи?


exit   (2002-11-15 10:44:00) [9]


TQuery.CachedUpdates := True
+
TQuery.ApplyUpdates
+
TQuery.CancelUpdates


Kurt   (2002-11-15 10:43:00) [10]

а не поле?
а как тогда уже допустим изменив 2 поля записи все отменить?
ведь при Teble1.Edit после каждого перехода к другому полю Post делает, или я не прав. поправьте.


stone   (2002-11-15 10:38:00) [11]

ИМЕННО запись переводится в режим редактирования
Table1.Edit;


Наверх

Титульная страница Поиск, карта сайта Написать письмо