Конференция "Базы" » Обновление датасета
 
  • Anton Nagornyi (19.06.12 22:50) [0]
    Доброго времени суток.

    У меня есть датасет TdxMemData. В нем н-тое количество записей.
    Вопрос 1. Можно ли обновлять записи в датасете, так чтобы грид к торому датасет привязан не отображал смещение индикатора? Не заню, может есть вариант избежать метода локейт в датасете.

    Вопрос 2. По таймеру происходит обновление одного из полей каждой записи. Я бегусь по каждой записи и обновляю данные.

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

    Посоветуйте, может есть хороший вариант эту ситуацию разрулить?
  • Ega23 © (20.06.12 00:16) [1]
    DataSet.DisableControls;
    try
     побежали по датасету
    finally
     DataSet.EnableControls;
    end;
  • Inovet © (20.06.12 01:07) [2]
    > [0] Anton Nagornyi   (19.06.12 22:50)
    > По таймеру происходит обновление одного из полей каждой записи.

    Что-то в этом не то.
  • Германн © (20.06.12 01:54) [3]

    > Можно ли обновлять записи в датасете, так чтобы грид к торому
    > датасет привязан не отображал смещение индикатора? Не заню,
    >  может есть вариант избежать метода локейт в датасете.
    >

    Такого способа нет. Индикатор всегда указывает на "активную" запись в датасете. А уж какая запись в датасете активна в данный момент зависит только от тебя!
  • Anton Nagornyi (20.06.12 08:02) [4]
    Спасибо. Про DataSet.DisableControls я не знал, подходит.
  • u905097 (20.06.12 15:57) [5]
    для ADODataSet + MSSQL использую ADODataSet.Requery
    для DOA + Oracle использую:
    --------------
    procedure TForm1.ODSRefresh(ADataSet: TDataSet);
    var
     ABookmark: TBookmark;
    begin
     ABookmark:=ADataSet.GetBookmark;
     ADataSet.Refresh;
     try
       ADataSet.GotoBookmark(ABookmark);
     except
       ADataSet.FreeBookmark(ABookmark);
     end;
     ADataSet.FreeBookmark(ABookmark);
    end;
    --------------
  • Труп Васи Доброго © (20.06.12 16:46) [6]
    Юзер правит данные напрямую в базе через грид??? Поймать и бить "книжкой по SQL" до прозрения!

    > Если пользоатель начинает правки, а таймер в этот момент
    > начинает бежать по всем записям, то получается совсем не
    > хорошо.

    Кури слово транзакция. (после прозрения)
  • Кщд (20.06.12 16:52) [7]
    >u905097   (20.06.12 15:57) [5]
    контрольный FreeBookmark таки имеет смысл?)
  • Ega23 © (20.06.12 18:00) [8]

    > контрольный FreeBookmark таки имеет смысл?)


    Ну не знает человек про finally, что-ж ему теперь...

    Хотя так делать нельзя.
  • Кщд (20.06.12 20:26) [9]
    >Ega23 ©   (20.06.12 18:00) [8]
    я, собственно, к тому, что не стоит, наверное, давать советы, "плавая" в теме.))
 
Конференция "Базы" » Обновление датасета
Есть новые Нет новых   [119837   +171][b:0][p:0.001]