Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как получить номер записи в dBASE или Paradox

Delphi , Базы данных , Записи

Как получить номер записи в dBASE или Paradox

Попали в одну камеру разбойник и хакер. Разбойник:
- Я вот сижу за ограбление магазина... А ты за что сидишь? Хакер:
- Ограбил банк на 7 миллионов долларов... Разбойник:
- Да ты че... ни фига себе.. как же ты унес их из банка - денег-то офигенно много? Хакер рассказывает в общих чертах о компьютерах, сетях, взломах и т. д. Разбойник:
- Ну ни фига себе, а как же ты попался? Хакер:
- Брандмауэр засек и сработала защита.. Разбойник:
- Ах ты... Брандмауэр, твою мать... Всегда знал, что евреев опасаться надо...


function FindRecordNumber (aDataSet : TDataSet): longint;
 var
  cP: CurProps;
  rP: RECProps;
  DBRes: DBiResult;
 begin
  {Return 0 if dataset is not Paradox or dBase}
  Result := 0;
 
  with aDataset do
   begin
    if state = dsInactive then exit;
 
    {we need to make this call to grab the cursor's iSeqNums}
    DBRes := DBiGetCursorProps(Handle,cP);
    if DBRes <> DBIERR_NONE then exit;
 
    {synchronize the BDE cursor with the dataset's cursor}
    UpdateCursorPos;
 
    {fill rP with the current record's properties}
    DBRes := DBiGetRecord(Handle,DBiNOLOCK,nil,@rP);
    if DBRes <> DBIERR_NONE then exit;
 
    {what kind of dataset are we looking at?}
    case cP.iSeqNums of
     0: result := rP.iPhyRecNum; {dBase}
     1: result := rP.iSeqNum;    {Paradox}
    end;
   end;
 end;

Функция для извлечения номера записи из базы данных dBASE или Paradox!

Функция FindRecordNumber принимает параметр TDataSet, aDataSet, который представляет соединение с либо дБASE, либо Paradox базой данных. Функция возвращает номер записи в виде longint.

Работа функции следующая:

  1. Сначала функция проверяет, является ли dataset неактивным (т.е., state = dsInactive). Если это так, она выходит из функции сразу.
  2. Затем функция вызывает DBiGetCursorProps для получения свойств курсора для текущего dataset. Это возвращает значение DBiResult, которое проверяется на ошибки.
  3. Функция синхронизирует курсор BDE с курсором dataset, используя UpdateCursorPos.
  4. Затем функция получает свойства записи для текущей записи, используя DBiGetRecord. Опять же, она проверяет на ошибки.
  5. Наконец, функция определяет тип dataset, examining the iSeqNums свойство в свойствах курсора.

Для дБASE dataset номер записи хранится в поле iPhyRecNum свойств записи. Для Paradox dataset он хранится в поле iSeqNum.

Вот разбивка кода:

function FindRecordNumber(aDataSet: TDataSet): longint;
var
  cP: CurProps; // свойства курсора
  rP: RECProps; // свойства записи
  DBRes: DBiResult; // результат базы данных
begin
   {Возвращаем 0, если dataset не Paradox или dBase}
  Result := 0;

  with aDataSet do
    begin
      if state = dsInactive then exit;

       {Мы должны вызвать этот вызов для grabbing iSeqNums курсора}
      DBRes := DBiGetCursorProps(Handle, cP);
      if DBRes <> DBIERR_NONE then exit;

       {Синхронизируем курсор BDE с курсором dataset}
      UpdateCursorPos;

       {Заполняем rP свойствами текущей записи}
      DBRes := DBiGetRecord(Handle, DBiNOLOCK, nil, @rP);
      if DBRes <> DBIERR_NONE then exit;

       {Какой тип dataset мы обрабатываем?}
      case cP.iSeqNums of
        0: result := rP.iPhyRecNum; {dBase}
        1: result := rP.iSeqNum;     {Paradox}
      end;
    end;
end;

В целом, эта функция предоставляет способ извлечения номера записи из либо дБASE, либо Paradox базы данных с помощью библиотеки BDE (Borland Database Engine).

Представлен код функции FindRecordNumber, которая позволяет получить номер записи в дата-сете dBASE или Paradox.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Записи ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:22:58/0.0056319236755371/1