Конференция "Базы" » АДО, обновить одну строку [D7, Access]
 
  • Виталий Панасенко (16.11.10 12:30) [0]
    Нужно обновить только ОДНУ строку из набора данных. На Королевстве Делфи нашел подборку статей, но, честно, так и не понял, все равно обновляется весь набор данных.
    Определил обработчик после открытия НД

    procedure Tdm.tMdocAfterOpen(DataSet: TDataSet);
    begin
    with (dataSet as TADODataSet) do
     begin
      Properties['Update Resync'].Value:=adResyncAutoIncrement+adResyncUpdates;   Properties['Unique Table'].Value := 'rm_mdoc';
      Properties['Update Criteria'].Value:=adCriteriaKey;
      Properties['Resync Command'].Value := 'select m.mdoc_id, m.mdoc_date, m.mdoc_note,'+
       'm.ag_id, m.mng_id, m.mdoc_guid,'+
        '(select sum(doc_sum)from rm_doc where mdoc_id=M.mdoc_id) as mdoc_sum,'+
        '(select sum(doc_vatsum)from rm_doc where mdoc_id=M.mdoc_id) as mdoc_vatsum,'+
        '(select sum(doc_sumnnr)from rm_doc where mdoc_id=M.mdoc_id) as mdoc_nnrsum,'+
       'mdoc_status, mdoc_num  from   rm_mdoc M where m.mdoc_id = ?';
     end;

    end;


    Я так понимаю, фишка в Update Resync, но что конкретно указать? Какие значения/комбинация значений из?
    adResyncNone  Никаких обновлений данных на стороне клиента после добавления или изменения не производится

    adResyncAutoIncrement  После добавления новых строк считывается значение автоинкрементного поля (новое Identity) Это значение Update Resync принято по умолчанию

    adResyncUpdates После изменения строки - измененная строка тут же считывается с сервера

    adResyncInserts  После добавления строки новая строка сразу же считывается с сервера

    adResyncConflicts  В случае ошибки, связанной с конфликтом при конкурирующим обновлении с сервера считывается значение строки, вызвавшей конфликт

    adResyncAll Комбинация из всех возможных значений свойства Update Resync
  • Виталий Панасенко (24.11.10 17:38) [1]
    Оказалось все несколько иначе.:-)
    ADODataSet.UpdateCursorPos();
     ADODataSet.Recordset.Resync(adAffectCurrent, adResyncAllValues);
     ADODataSet.Resync([rmExact]);

 
Конференция "Базы" » АДО, обновить одну строку [D7, Access]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]