RecBuf, // Буфер записи

Nil // Параметры записи

) ;

DbiGetField // Получение значения поля

(

hCur, // Дескриптор курсора таблицы

1, // Номер поля в структуре таблицы

RecBuf, // Буфер записи

SFValue, // Переменная, в которую передается значение

IsEmpty // Признак пустой ячейки

) ;
MainForm.CountryEdit.Text := FValue;
DbiGetField(hCur, 2, RecBuf, @FValue, IsEmpty);
MainForm.CapitalEdit.Text := FValue;
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction)/

begin try

finally

FreeMem(RecBuf); // Освобождение памяти буфера записи

DbiCloseCursor(hCur); // Закрытие курсора DbiCloseDatabase(hDB); // Закрытие базы данных DbiExit; // Закрытие сеанса работы с BDE

end end;
procedure TMainForm.PriorBtnClick(Sender: TObject);

begin try

if DbiGetPriorRecord(hCur, dbiNoLock, RecBuf, Nil) = DBIERR_BOF then PriorBtn.Enabled := False

else begin if Not NextBtn.Enabled then NextBtn.Enabled := True; Dbife№ield(hCur, 1, RecBuf, SFValue, IsBxpty) ; MainForm.CountryEdit.Text := FValue; rJoiGe№ield(hCur, 2, RecBuf, ©FValue, IsBxpty) ; MainForm.CapitalEdit.Text := FValue; end; except

QnBDEError;
end;
end;

procedure TMainForm.NextBtnClick(Sender: TObject) ; begin try

if riiGeWextr<ecord(bCur, dbiNoLock, RecBuf, Nil) =dbierr_eof

then NextBtn.Enabled := False

else

begin
if Not PriorBtn.Enabled then PriorBtn.Enabled := True;
rJoiGetField(hCur, 1, RecBuf, ©FValue, IsErrpty) ;
MairiFom.CountiyFjdit.Text := FValue;
rJoiGetField(hCur, 2, RecBuf, SFValue, IsErrpty);
MaihFom.C^italFdit.Text := FValue;
end;
except QnBDEError;
end;
end;

end.

Программирование в Delphi 7

Рис. 16.5. Главная форма проекта DirectBDE

При показе главной формы приложения в процедуре Formshow проводится инициализация BDE, открытие базы данных и таблицы. При этом создаются дескрипторы базы данных hDB И курсора таблицы heur, которые играют в дальнейшей работе приложения важную роль. Если при создании базы данных не указывать псевдоним БД, то обязательно нужно определить рабочий каталог базы данных с помощью функции DbiSetDirectory.

После этого отводится память под буфер записи, в который будут передаваться значения полей текущей строки таблицы. Размер буфера определяется при ПСМТПИ структуры cuRProps.

Затем курсор устанавливается на начало набора данных и на первую запись и осуществляется чтение значений двух полей таблицы.

Навигация по набору данных реализована в методах-обработчиках на нажатие кнопок формы. Их действие аналогично за исключением направления перемещения. При щелчке на кнопке выполняется переход на следующую или предьщущую запись, данные из новой записи помещаются в буфер записи RecBuf. Оттуда при помощи функции DbiGetField осуществляется чтение значений полей. При достижении начала или конца набора данных кнопка деактивируется.

При закрытии формы проводятся операции по освобождению памяти буфера записи, закрытию базы данных и BDE.

Соединение с источником данных

Все обращения из приложения к таблицам одной базы данных осуществляются через одно соединение, на которое замыкаются все компоненты доступа к данным, имеющие соответствующие значения свойства DatabaseName (см. ниже).


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Октябрь
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс