Как я могу обновить TClientDataSet без применения ожидающих обновлений?

Вот что я пытаюсь выполнить:

  1. Получить 1 запись из базы данных через CommandText TSQLDataset: SELECT * FROM myTable WHERE ID = 1
  2. Используйте TClientDataset для изменения записи. (1 ожидающее обновление)
  3. Получить следующую запись. ВЫБЕРИТЕ * ИЗ myTable, ГДЕ ID = 2
  4. Измените запись. (сейчас 2 ожидающих обновления)
  5. Наконец, отправьте 2 ожидающих обновления обратно в базу данных с помощью функции ApplyUpdates.

Когда я делаю шаг 3, я получаю «Необходимо применить обновления перед обновлением данных».

Как я могу обновить TClientDataSet без применения ожидающих обновлений?


person Heb    schedule 12.11.2012    source источник
comment
TClientDataSet предназначен для хранения множества записей. То, как вы используете его для извлечения и изменения одной записи за раз, кажется неэффективным. Не лучше ли извлечь обе (все) записи, которые пользователю необходимо изменить, позволить пользователю изменить эти записи, а затем применить обновления к базе данных с помощью ApplyUpdates все сразу?   -  person James L.    schedule 12.11.2012
comment
@James, как насчет потенциально многомиллионного набора базовых таблиц / записей, передача всех этих данных клиенту для изменения пары записей кажется гораздо более неэффективной.   -  person jachguate    schedule 13.11.2012
comment
@jachguate - согласен. Однако наиболее эффективным подходом, по-видимому, является применение обновлений перед получением дополнительных данных. Но ОП мало что объяснил о таблице или о том, почему важны отложенные (пакетные) обновления. Если необходимы отложенные обновления, то ваш ответ кажется лучшим решением.   -  person James L.    schedule 13.11.2012
comment
@JamesL., извините, я должен был указать причину, по которой я извлекаю одну запись за раз. База данных содержит 500 000 000 000 записей, и их извлечение требует много времени и сетевых ресурсов. Кстати, я не использую какую-либо сетку базы данных, просто TDBEdits для изменения каждой записи.   -  person Heb    schedule 13.11.2012


Ответы (1)