Наборы данных могут находиться в различных режимах. Текущий режим набора данных определяется свойством state типа TDataSetstate, которое доступно для чтения во время выполнения приложения. Для перевода набора данных в требуемый режим используются специальные методы. Они могут вызываться явно (указанием имени метода) или косвенно (путем управления соответствующими визуальными компонентами, например, навигатором DBNavigator или сеткой DBGrid).
Взаимосвязи между основными режимами наборов данных показаны ниже на рисунке, приведены также некоторые методы и свойства, с помощью которых набор данных переходит из одного режима в другой.
Иногда при описании операций, выполняемых с записями набора данных, под режимом редактирования подразумевается не только режим dsEdit изменения полей текущей записи, но и режим dsinsert вставки новой записи. Тем самым режим редактирования понимается в широком смысле слова как режим модификации набора данных.
При выполнении программы определить режим набора данных можно с помощью одноименных свойств state типа TDataSetstate самого набора данных и связанного с ним источника данных DataSource. При изменении режима набора данных для источника данных DataSource генерируется событие OnStateChange типа TNotifyEvent.