Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как сделать правильнее? / 4 сообщений из 4, страница 1 из 1
14.10.2004, 08:23
    #32737417
Sas_N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать правильнее?
Доброго времени суток!
Прошу помощи, чтобы разобраться в следующем вопросе:
Имеется форма с Grid имеются кнопки "Новая" "Редактирование"
Grid построен на основе курсора с опцией readwrite, используется табличная буферизация
При нажатии кнопки "Новая" реализован следующий подход:
- активизируется форма с с несколькими textbox контролами у которых в качестве источника данных Controlsourse подключены соотвествующие поля курсора, причем свойство Value = имеет пустое значение
- производится контроль вводимых данных
- при нажатии кнопки "Записать" делаю append blank
- Tableupdate ()
- replace на введенные значения в исходной таблице
- гашу texbox
- активизирую Grid

Вопрос собственно в следующем, если делать append blank при нажатии кнопки "Новая", то Grid нормально отображает значения новой записи (если в данном случае пользователь нажмет кнопку "Отмена" пустая запись останется в курсоре, поэтому вариант не подходит), если делать добавление при нажатии кнопки "Записать" - меняет значения для текущей строки Grida

Как сделать правильнее, имея целью видеть добавленную запись в Grid, причем не засоряя курсор новыми записями, появившимися в случае кнопки "Отмена" пользователем - первый вариант или по второму варианту -втавка записи только, когда пользователь нажал кнопку "Записать" что в принципе на мой взгляд логичнее, только еще бы добавленную запись нормально в Gride отобразить
...
Рейтинг: 0 / 0
14.10.2004, 08:51
    #32737454
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать правильнее?
Sas_NДоброго времени суток!
Прошу помощи, чтобы разобраться в следующем вопросе:
Имеется форма с Grid имеются кнопки "Новая" "Редактирование"
Grid построен на основе курсора с опцией readwrite, используется табличная буферизация
При нажатии кнопки "Новая" реализован следующий подход:
- активизируется форма с с несколькими textbox контролами у которых в качестве источника данных Controlsourse подключены соотвествующие поля курсора, причем свойство Value = имеет пустое значение
- производится контроль вводимых данных
- при нажатии кнопки "Записать" делаю append blank
- Tableupdate ()
- replace на введенные значения в исходной таблице
- гашу texbox
- активизирую Grid

Вопрос собственно в следующем, если делать append blank при нажатии кнопки "Новая", то Grid нормально отображает значения новой записи (если в данном случае пользователь нажмет кнопку "Отмена" пустая запись останется в курсоре, поэтому вариант не подходит), если делать добавление при нажатии кнопки "Записать" - меняет значения для текущей строки Grida

Как сделать правильнее, имея целью видеть добавленную запись в Grid, причем не засоряя курсор новыми записями, появившимися в случае кнопки "Отмена" пользователем - первый вариант или по второму варианту -втавка записи только, когда пользователь нажал кнопку "Записать" что в принципе на мой взгляд логичнее, только еще бы добавленную запись нормально в Gride отобразить

А зачем тебе использовать связи текст-боксов с курсором? Не проще ли сделать свободные текст-боксы. При нажатии кнопки "Записать" сделать что-то типа insert into ... (это, кстати, удобнее, чем делать append blank, а затем replace...) и перенести данные в таблицу/курсор. При нажатии же кнопки "Отмена" - не делать сохранения. При этом данные, введенные в текст-боксы, естественно, нигде не сохранятся и потеряются...
...
Рейтинг: 0 / 0
14.10.2004, 09:10
    #32737492
Dushes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать правильнее?
Я использую следующий вариант: делаю одну форму, как уже было сказано, какбы со свободными контролами (тестовыми полями и пр.), в обработке события INIT прописываю параметр для передачи, например, tlEditFlag, который и передаю в форму при вызове режимов "Новая запись" и "Редактирование записи" - соотвественно .F. или .T.. Таким образом, я знаю, что я должен сделать в дальнейшем - толи append blank с последующием replace и tableupdate (insert into ...) для добавления новой записи или же просто replace (update ....) для режима редактировоания текущей записи - инифиализация соотвесвующих текстовых полей и пр. происходит соотвеснно в init в зависимости от tlEditFlag, значение этих же контролов и использую в replace (update)......Почему использую такой подход? - как правило, формы для редактирования (добавления новой записи) подразумевают редактирование (добавление) не конкретной записи из какой-дибо таблицы, а совокупности данных в разные таблицы, т.е. работы с конкретной сущностью проекта, документом......, а тут соотвеснно и отношения 1:M и доп. обработки данных на valid и пр....


С уважением
duШes
....return ThisForm.exGrid1.p_oColumns("COLUMN1").M_AddHeader("header4",4)
...
Рейтинг: 0 / 0
14.10.2004, 11:02
    #32737753
Sas_N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать правильнее?
Большое спасибо за советы
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как сделать правильнее? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]