Вставка после последней записи (внизу), показанной в DBGrid - PullRequest
0 голосов
/ 27 января 2020

Каким должен быть код для вставки после последней записи с использованием ClientDataSet?

Я попытался сделать следующее:

cdsSomething.Last;
cdsSomething.Insert:

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

Ответы [ 2 ]

6 голосов
/ 27 января 2020

Метод добавления записи в конец набора данных (не говоря уже о любом индексе) - Append. Вам даже не нужно вызывать Last раньше.

cdsSomething.Append;

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

2 голосов
/ 27 января 2020

В общем случае, когда добавленная запись (или фактически любая запись) появляется в DBGrid, не зависит от операций с набором данных, которые использовались для ее вставки.

Фактически, DBGrid не имеет значения на этот вопрос, поскольку он просто отображает добавленную строку в ClientDataSet в той позиции, в которой добавленная строка встречается в CDS в соответствии с ее текущим порядком индекса.

Так, например, если CDS содержит поле целочисленного идентификатора и его текущий индекс - это поле идентификатора (например, потому что для свойства IndexFieldNames CDS установлено значение 'ID'), чтобы добавленная строка отображалась в конце, все, что вам нужно сделать, это установить для ее значения идентификатора нечто большее, чем любое Существующая запись в CDS. Если поле имеет тип ftAutoInc, это, конечно, произойдет автоматически.

Уве Раабе ответил на этот вопрос немного по-другому. То, что он говорит, правильно, если CDS не использует какой-либо индекс, поэтому записи отображаются в физическом порядке, в котором они отображаются в файле данных CDS. Однако полагаться на физический порядок для определения порядка отображения не обязательно является хорошей идеей, если порядок отображения важен. Если это так, используйте индексированное поле (или поля) для определения порядка.

...