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

Использование API BDE для удаления записей

Delphi , Базы данных , BDE



unit Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, BDE, ExtCtrls, DBCtrls, Grids, DBGrids, Db, DBTables, Buttons;

type
  TMainForm = class(TForm)
    AliasesList: TComboBox;
    TablesList: TComboBox;
    EmptyBtn: TBitBtn;
    Label1: TLabel;
    Label2: TLabel;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure AliasesListChange(Sender: TObject);
    procedure EmptyBtnClick(Sender: TObject);
  private
    hDB: hDBIDB;
    hCursor: hDBICur;
    DBDesc: DBDesc;
    TblDesc: TBLBaseDesc;
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.DFM}

procedure TMainForm.FormShow(Sender: TObject);
var Rslt: DBIResult;
begin
  AliasesList.Items.Clear;
  TablesList.Items.Clear;
  hDB := nil;
  try
    DbiInit(nil); // Инициализация BDE
    DbiOpenDatabaseList(hCursor);
    repeat
      Rslt := DbiGetNextRecord(hCursor, dbiNOLOCK, @DBDesc, nil);
      if (Rslt <> DBIERR_EOF) then AliasesList.Items.Add(StrPas(DBDesc.szName));
    until (rslt <> DBIERR_NONE);
    DbiCloseCursor(hCursor);
  except
    on E: EDBEngineError do ShowMessage('Ошибка инициализации BDE');
  end;
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  try
  finally
    if hDB <> nil then DbiCloseDatabase(hDB); // Закрытие базы данных
    DbiExit; // Закрытие сеанса работы с BDE
  end
end;


procedure TMainForm.AliasesListChange(Sender: TObject);
begin
  try
    if hDB <> nil
      then DbiCloseDatabase(hDB); // Закрытие базы данных
    DbiOpenDatabase // Открытие базы данных
      (
      PChar(AliasesList.Text), // Псевдоним базы данных
      nil, // Тип базы данных
      dbiReadWrite, // Режим редактирования данных
      dbiOpenShared, // Режим разделения данных
      nil, // Пароль
      0, // Число дополнительных параметров
      nil, // Перечень полей для доп. параметров
      nil, // Список доп. параметров
      hDB // Дескриптор базы данных
      );
    DbiSetPrivateDir('c:\temp'); // Определение временного каталога
    DbiOpenTableList(hDb, False, False, '*.DB', hCursor);
    TablesList.Items.Clear;
    TablesList.Clear;
    while DbiGetNextRecord(hCursor, dbiNOLOCK, @TblDesc, nil) = dbiErr_None
      do TablesList.Items.Add(TblDesc.szName);
    DbiCloseCursor(hCursor);
  except
    on E: EDBEngineError do ShowMessage('Ошибка открытия базы данных');
  end;
end;

procedure TMainForm.EmptyBtnClick(Sender: TObject);
begin
  try
    DbiEmptyTable(hDB, nil, PChar(TablesList.Text), '');
  except
    on E: EDBEngineError do ShowMessage('Неверно задана таблица');
  end;
end;

end.

Скачать весь проект

Программный проект - это приложение Delphi, использующее BDE (Borland Database Engine) для взаимодействия с базами данных. Основная форма имеет несколько компонентов:

  1. AliasesList: комбобокс для выбора алиаса базы данных.
  2. TablesList: комбобокс для списка таблиц в выбранной базе данных.
  3. EmptyBtn: кнопка для очистки таблицы.

Приложение имеет три процедуры:

  1. FormShow: вызывается при отображении формы, инициализирует BDE, открывает список баз данных и заполняет AliasesList.
  2. FormClose: вызывается при закрытии формы, закрывает соединение с базой данных.
  3. AliasesListChange: вызывается при изменении выбранного алиаса в AliasesList, открывает соответствующую базу данных, устанавливает приватный каталог и заполняет TablesList.
  4. EmptyBtnClick: вызывается при клике на кнопку EmptyBtn, очищает таблицу.

Вот некоторые улучшения и предложения:

  1. Обработка ошибок: приложение не обрабатывает ошибки должным образом. Вместо отображения сообщения с описанием ошибки, лучше логировать ошибку и предоставлять более подробную информацию.
  2. Организация кода: код может быть организован лучше, разделяя заботы в различных модулях или единицах.
  3. Имя переменных: некоторые имена переменных не описательны (например, hDB, Rslt).
  4. Комментарии: в коде нет комментариев, что делает его трудным для понимания без документации.
  5. Стиль кода: код использует неравномерное пространство и отступы.

Вот пример рефакторинга процедуры FormShow:

procedure TMainForm.FormShow(Sender: TObject);
begin
  AliasesList.Items.Clear;
  TablesList.Items.Clear;

  try
    DbiInit(nil); // Инициализация BDE

    if not DbiOpenDatabaseList(hCursor) then
      raise EDBEngineError.Create('Failed to open database list');

    while DbiGetNextRecord(hCursor, dbiNOLOCK, @DBDesc, nil) = DBIERR_NONE do
      AliasesList.Items.Add(StrPas(DBDesc.szName));

    DbiCloseCursor(hCursor);

  except
    on E: EDBEngineError do
      ShowMessage('Failed to initialize BDE: ' + E.Message);
  end;
end;

В этом рефакторированном коде я добавил более описательные имена переменных, использовал неравномерное пространство и отступы, а также улучшил обработку ошибок.

Использование API BDE для удаления записей в базе данных.


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

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




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


:: Главная :: BDE ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 06:52:21/0.0035679340362549/0