Порядок записей в формах проектов Access

alexxa
Дата: 29.09.2005 14:56:57
Доброго времени суток!
Имеется связка ADP + MS SQL. В проекте есть форма с подчиненной формой.
Необходимо:
1) Нумеровать записи в подчиненной форме в режиме таблицы. Номер сохранять в БД.
2) При необходимости изменить порядок записей в подчиненной форме и сохранить новый порядок в БД.
3) При добавлении новой записи в подчиненную форму (в режиме таблицы) добавлять ее не только в конец, как это делается по умолчанию, но и под любую другую строку. При этом обновлять порядок и сохранять его в БД.
Первый пункт мною решен довольно просто: в исходной таблице для подчиненной формы есть поле RANK. В самой форме для этого поля установлено значение по умолчанию: Form_SubForm.RecordsetClone.RowCount.
Второй пункт решается, скорее всего, программным изменением значения поля RANK и последующим обновлением формы, но делать это надо на клиенте, не обращаясь к серверу.
Третий пункт и вовсе штатными средствами ADP не сделать. Все эти задачи достаточно типичны для учетных систем, но хорошие решения на ADP пока не встречались. Может кто поделится опытом? Всем заранее благодарен.
Тяп-ляп
Дата: 29.09.2005 15:18:00
автор
но и под любую другую строку. При этом обновлять порядок и сохранять его в БД.
Забавное извращение.
Сделать можно. Как на стороне клиента, так и на сервере
alexxa
Дата: 29.09.2005 15:25:12
Поясню п.3: при добавлении новой записи в подчиненную форму в режиме таблицы пользователь должен видеть (или ему должно казаться, что он видит) новую пустую строку в произвольном месте.
ЛП
Дата: 29.09.2005 15:27:56
ну и добавляйте новую строку - абсолютно пустую, с заполненными полями идентификаторов и порядкового номера.
agfdlj
Дата: 29.09.2005 15:31:19
Как мы все узнали вот здесь, понятие i-той записи хоть и существует, но как привило не имеет смысла в терминах РДБ.
Стандартно добавляют запись в конец, и двумя кнопочками с изображением стрелоки вверх и вниз меняют значение в поле, отвечающее за нумерацию в таблице.
Тяп-ляп
Дата: 29.09.2005 15:32:59
автор
п.3: при добавлении новой записи в подчиненную форму в режиме таблицы пользователь должен видеть (или ему должно казаться, что он видит) новую пустую строку в произвольном месте.

Приходит в голову такой алгоритм:
1. подформа - табличная. Пользователь в ней переходит на запись, ниже которой хочешь добавить новую и жмет на некую кнопочку.
2. эта кнопочка запускает процедуру на сервере (раз уж у нас MS SQL, погуляем вволю) с параметром "порядковый номер строки, ниже которой нужно создать новую строку".
3. эта процедура добавляет в соответствующую таблицу новую запись (с дефолтными значениями при необходмости) и перестраивает порядковые номера всех строк.
4. делаем requery подформе.
5. пользователь видит, что он вставил строку куда хотел
alexxa
Дата: 29.09.2005 15:43:35
А новая пустая строка при этом где будет видна?
alexxa
Дата: 29.09.2005 15:45:08
Ведь на сервере нельзя будет сохранить запись, если поле имеет ограничение NOT NULL?
Тяп-ляп
Дата: 29.09.2005 15:52:10
автор
А новая пустая строка при этом где будет видна?
Видна будет
автор
Ведь на сервере нельзя будет сохранить запись, если поле имеет ограничение NOT NULL?
Надо об этом позаботиться и записать какие-нибудь данные. Это не сложно.
alexxa
Дата: 29.09.2005 16:13:18
Вариант, но строка должна быть пустой, и к SQL серверу желательно обращаться только для итогового сохранения.