Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];

Вниз

Refresh одной записи в ClientDataSet   Найти похожие ветки 

 
alsn   (2002-05-29 15:36) [0]

Здравсвуйте.
Использую TClientDataSet + TDataSetProvider + TAdoDataSet + MSSQL.
Источник данных для AdoDataSet - весьма долгоиграющая хранимая процедура.
Вопрос: Как обновить ТОЛЬКО ОДНУ запись в ClientDataSet. В MSSQL для этого
все подготовлено: создана отдельная процедура, возвращающая только одну
запись в рекордсете.
Заранее спасибо.


 
Romkin   (2002-05-29 16:08) [1]

Положи TClientDataSet в RemoteDataModule и собирай там то, что нужно клиенту, а провайдера цепляй к этому датасету


 
Автор   (2002-05-29 17:02) [2]

Возможно я не достаточно подробно все описал. Итак, есть две процедуры в MSSQL. Одна отработав ~2 минуты возвращает ~ 5 тыс. записей. Вторая - только одну из этих 5 тысяч.
В клиенте: TAdoDataSet + TDataSetProvider + TClientDataSet. Все в одном exe файле. Никаких RemoteDataModule и MIDAS-серверов тут нет.
Теперь следующая ситуация: Одна (или несколько) из упомянутых выше 5-и тысяч записей изменилась. Мое приложение знает ID этой записи (этих записей). Неважно где это произошло: в другом окне, из другого приложения или вообще с другого компьютера. Важно другое: что нужно сделать в TDataSetProvider-е и/или в TClientDataSet-е чтобы эта запись обновилась. На сервере для этого создана процедура, которая по ID записи выдаст все поля из ее таблицы.

Заранее Списибо.

P.S. Если сделать ClientDataSet.RefreshRecord, то это приведет к повторному переоткытию источника данных для TDataSetProvider-а, т.е. к повторному вызову первой процедуры и повторной прокачке 5 тыс. записей.


 
oss   (2002-05-29 17:46) [3]

А если нет "RemoteDataModule и MIDAS-серверов" то для чего
TDataSetProvider + TClientDataSet ??
А для TAdoDataSet попробуй курсор на стороне сервера поставить
и апдейт по условию WHERE на DataSetProvidere. либо делать Requery у клиетдатасета, тока прочто про Requery в хелпе :)


 
Romkin   (2002-05-29 18:17) [4]

Тогда просто бери эту одну запись в другой TADOQuery, потом сливай ручками со своей cds, и вызывай MergeChangeLog (предупреждаю - после этой команды ChangeCount = 0, так что если были изменения...)


 
Sam   (2002-06-03 19:05) [5]

Resync


 
Sam   (2002-06-03 19:13) [6]

ADODataSet1.Recordset.Resync


 
Alex Ignatenko   (2002-06-04 13:41) [7]

Куда то пропал мой первый ответ. Ну ладно, повторю еще раз.

Для обновления одной записи рекордсета нужно использовать динамическое свойство ResyncCommand. Подробнее смотри MSDN или статью об АДО http://www.delphikingdom.com/helloworld/ado03.htm



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

Форум: "Базы";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
6-88977
Brand
2002-04-09 14:30
2002.06.27
ICQ


1-88827
don_dampster
2002-06-14 10:33
2002.06.27
SysTray


1-88812
ghost_by
2002-06-16 22:03
2002.06.27
Как проверить: Есть ли в CDROM е компакт?


1-88955
Big Daddy
2002-06-15 11:21
2002.06.27
Splash-screen


1-88841
Cooper
2002-06-17 13:03
2002.06.27
Что такое TSeriesMarkPosition?





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