23.04.2004, 14:09 | #1 |
Участник
|
что мешает findRecord ?
в datasource методе create сразу вызываю insert
и хочу чтобы выделена была только что вставленная запись но если начать вставлять записи не редактируя их, то данные предыдущих вставленных записей затираются ( так по крайней мере выглядит - где дата там 00:00:00 где текст там ""), после закрытия формы и открытия все записи на месте с нужными данными если в create вставить research то все выглядит нормально кроме того что отмеченой записью всегда становится первая а вызов findRecord не приводит к нужному результату объяснил как мог не подскажете новичку пути решения ? |
|
23.04.2004, 18:12 | #2 |
Moderator
|
Если нужно сразу после создания записи на методе create() сохранить ее, лучше вызвать метод write() DS.
А research() как раз и вызывает сохранение текущей записи перед обновлением, поэтому все и выглядит как бы нормально.
__________________
Андрей. |
|
24.04.2004, 10:48 | #3 |
Модератор
|
Мови тон..
1) А почему бы на таблице не написать метод "createNewRecordFromMyForm" и из "create" не вызвать именно его?
2) Как можно меньше doInsert, doUpdate и write!!!!! На inserte-то тоже может код использоваться, котороый, допустим, заносит запись в связанную таблицу. 3) потом делайте research и 3.1 переходите на последнюю запись, 3.2 ищите запись и становитесь на неё. Вы же знаете её параметры |
|
24.04.2004, 11:20 | #4 |
NavAx
|
Цитата:
Изначально опубликовано Dron AKA andy
Если нужно сразу после создания записи на методе create() сохранить ее, лучше вызвать метод write() DS. Пользуйтесь методом DS.forceWrite().
__________________
С уважением, Игорь Ласийчук. |
|
26.04.2004, 12:23 | #5 |
Moderator
|
To George Nordic:
Не вижу ничего предосудительного в вызове write() на DS. Если создана новая запись, будет вызван insert(), если сохраняется существующая - update(). Вы же не имеете ничего против сохранения записи кнопкой "Save" сразу после ее создания (если задача так поставлена) ? To Garic: Работаю с 3.0 недавно, поясните вкратце, что и для чего делает метод DS.forceWrite(). И опять же про обязательные поля: если задача ставится таким образом, что записи должны сохраняться сразу (решал как-то подобную задачу), все проектируется для автоматического заполнения обязательных полей. А при сохранении через DS.write(), как и при ручном сохранении, все проверки выполнятся автоматически и запись просто не сохранится при наличии ошибок.
__________________
Андрей. |
|
26.04.2004, 12:33 | #6 |
Участник
|
Ускорение записи
Метод formDatasource::forceWrite был добавлен для ускорения занесения записи. Этот метод можно использовать для пометки записи как измененной и, таким образом, возможной для занесения, невзирая на изменения, сделанные в этой записи. Метод можно вызывать после super в formDataSource::Create(). Однако, так невозможно сделать в методе formDataSource::initvalue. |
|
26.04.2004, 12:46 | #7 |
Moderator
|
Спасибо за разъяснение. Мне, кстати, как раз такая фишка была нужна не так давно в 2.5
Но к вопросу, как мне кажется, данный совет имеет лишь косвенно отношение. Записи-то не сохраняются сразу же после создания, как требовалось.
__________________
Андрей. |
|