Распечатать страницу

Альтернативный вариант ввода и записи данных в VFP

« Назад

Замечание. Ввод и отображение данных можно выполнить, используя взамен свойства Value свойство ControlSource полей ввода формы. Например, добавив в форму новое свойство-массив aAuthor(4) и в качестве источников данных для полей AuthorId, Author, InputDate и Information указать соответственно элементы aAuthor(1), …, aAuthor(4) массива (рис. 2.22).

15.1.-Источник-данных-элемент-массива

Рис. 2.22. Источник данных – элемент массива

При этом несколько изменятся код рассмотренных выше обработчиков и метода:

&& Обработчик события Init формы AuthorEdit

&&

if not Used('Authors') then

This.aAuthor = ""

return

endif…

with This

if oPr = 'new' then             && Новая запись

scatter memo to .aAuthor blank

calculate Max(AuthorId) to .aAuthor(1)

go recOld

.aAuthor(1) = .aAuthor(1) + 1

.aAuthor(3) = Date( )          && Текущая дата

else                                      && Редактирование записи

Caption = 'Редактирование записи'

scatter memo to .aAuthor

endif

endWith

&& Метод CheckFields формы AuthorEdit

&&

for ind = 1 to 3

if Empty(ThisForm.aAuthor(ind)) then

MessageBox('Заданы не все данные!')

return .F.

endif

next

&& Обработчик события Click кнопки

&&

local selectedDate

do (appPath + 'Prgs\OleCalendar') with ThisForm.aAuthor(3), selectedDate

if not Empty(selectedDate) then

ThisForm.aAuthor(3) = selectedDate

ThisForm.InputDate.Refresh

endif

В обработчике события Click кнопки "Сохранить" вместо команды INSERT – SQL появятся две команды:

append blank

gather from .aAuthor memo

а вместо команды REPLACE – команда

gather from .aAuthor memo