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

Вниз

Обновление одной записи.   Найти похожие ветки 

 
Леша ©   (2009-05-05 15:02) [0]

У меня есть открытый в гриде набор данных. Я модифицирую запись. Делаю это не через грид, а через попап-форму:
2-клик на запись появляется форма, в нее передаются параметры записи. Запись модифицируется через хранимую процедуру. Форма закрывается.
Как сделать, чтобы изменения отобразились в начальном гриде, без переселекта всех данных? Т.е., чтобы обновилась одна запись.

ADO, MSSQL.


 
Лёша   (2009-05-05 15:19) [1]

Нашел, вроде:
TCustomADODataSet.UpdateBatch(arCurrent)


 
Лёша   (2009-05-05 15:37) [2]

Нет это совсем не то.

Странно, почему я могу модифицировать одну запись, написав:
Query.Edit;
Query.FieldValues["Reset"] := 0;
Query.Post;
И ничего нет, для "перечтения" записи.


 
Сергей М. ©   (2009-05-05 15:57) [3]

Description

Call Refresh to ensure that an application has the latest data from a database. For example, when an application turns off filtering for a dataset, it should immediately call Refresh to display all records in the dataset, not just those that used to meet the filter condition.

Note: The Refresh method does not work for all TDataSet descendants. In particular, TQuery components do not support the Refresh method if the query is not “live”. To refresh a static TQuery, close and reopen the dataset.

Note: Most datasets try to maintain the current record position when you call refresh. However, this is not always possible. For example, the current record may have been deleted from the server by another user. Unidirectional datasets have no mechanism for locating the current record after a refresh, and always move back to the first record.


 
sniknik ©   (2009-05-05 16:18) [4]

> Нет это совсем не то.
это то самое, но у тебя видимо не ltBatchOptimistic.

> И ничего нет, для "перечтения" записи.
есть Resync у рекордсера (не датасета! там несколько иное).


 
sniknik ©   (2009-05-05 16:32) [5]

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

Resync самое то.

но вообще я бы посоветовал убрать лишнюю процедуру и менять данные в датасете... ну и что они в другой форме меняются.


 
Леша ©   (2009-05-05 17:12) [6]

Refresh вытягивает все записи, причем по одной.

Работающий вариант такой:
Recordset.Resync(adAffectCurrent, adResyncAllValues);
Resync([]);

В InternalRefresh Recordset.Resync вызывается с adAffectAll.

Поэтому, задача решается переопределением InternalRefresh, который учитывает внешний флаг (тек. запись или все). И тогда можно юзать Refresh, что б срабатывали всякие Афтер-Вефоре.

Всем спасибо.



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

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

Наверх




Память: 0.45 MB
Время: 0.043 c
15-1239741954
Юрий
2009-04-15 00:45
2009.06.21
С днем рождения ! 15 апреля 2009 среда


15-1239764963
UserInet777
2009-04-15 07:09
2009.06.21
Покритикуйте алгоритм авторизации


2-1240949570
Niktar
2009-04-29 00:12
2009.06.21
tquery dbase


2-1241610748
dis12345
2009-05-06 15:52
2009.06.21
из какой ячейки вызван DblClick


15-1239620213
ZeroDivide
2009-04-13 14:56
2009.06.21
Лицензионные фильмы





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