下面是一个完整的 Delphi 示例,展示如何使用 ADO + Access 数据库 创建一个信息录入窗体

作者: koic 分类: 控件 发布时间: 2025-06-01 17:54

以下代码由chatgpt生成,本人还未测试

下面是一个完整的 Delphi 示例,展示如何使用 ADO + Access 数据库 创建一个信息录入窗体,包含以下控件和功能:

  • 文本框(TEdit)用于输入姓名等;

  • 下拉文本框(TComboBox)用于选择(如职业);

  • 可检索下拉输入框(TComboBox + 动态查询);

  • 性别单选框(TRadioButton);

  • 使用 ADOQuery 操作 Access 数据库。


✅ 1. 数据库准备(Access)

使用 Microsoft Access 创建一个数据库 sample.accdb,包含以下表:

表名:Users

字段名 类型
ID 自动编号
Name 短文本
Gender 短文本
Job 短文本
Department 短文本

将数据库文件放在项目文件夹下。


✅ 2. Delphi 窗体设计(VCL)

窗体上放置以下控件:

控件类型 名称 用途
TEdit edtName 输入姓名
TRadioButton rbtnMale 性别:男
TRadioButton rbtnFemale 性别:女
TComboBox cmbJob 选择职业
TComboBox cmbDeptSearch 输入后可检索部门(带下拉)
TButton btnSubmit 提交按钮
TADOConnection ADOConnection1 数据库连接
TADOQuery ADOQuery1 查询 & 插入
TDataSource DataSource1 绑定数据源(如需显示)

✅ 3. 数据库连接配置(ADOConnection)

设置 ADOConnection1

  • LoginPrompt 设为 False

  • ConnectionString 示例(使用 OLEDB):

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=sample.accdb;Persist Security Info=False;

 

✅ 4. 示例代码(完整逻辑)

procedure TForm1.FormCreate(Sender: TObject);
begin
  // 初始化下拉框
  cmbJob.Items.Add('程序员');
  cmbJob.Items.Add('设计师');
  cmbJob.Items.Add('产品经理');
  cmbJob.Items.Add('测试员');
  cmbJob.ItemIndex := 0;

  // 初始化性别选择
  rbtnMale.Checked := True;

  // 设置检索下拉框事件
  cmbDeptSearch.OnChange := cmbDeptSearchChange;
end;

procedure TForm1.cmbDeptSearchChange(Sender: TObject);
begin
  // 动态查询匹配的部门
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'SELECT DISTINCT Department FROM Users WHERE Department LIKE :keyword';
  ADOQuery1.Parameters.ParamByName('keyword').Value := '%' + cmbDeptSearch.Text + '%';
  ADOQuery1.Open;

  cmbDeptSearch.Items.Clear;
  while not ADOQuery1.Eof do
  begin
    cmbDeptSearch.Items.Add(ADOQuery1.FieldByName('Department').AsString);
    ADOQuery1.Next;
  end;
end;

procedure TForm1.btnSubmitClick(Sender: TObject);
var
  name, gender, job, dept: string;
begin
  name := edtName.Text;
  gender := IfThen(rbtnMale.Checked, '男', '女');
  job := cmbJob.Text;
  dept := cmbDeptSearch.Text;

  if name = '' then
  begin
    ShowMessage('请输入姓名');
    Exit;
  end;

  // 插入记录
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'INSERT INTO Users (Name, Gender, Job, Department) VALUES (:name, :gender, :job, :dept)';
  ADOQuery1.Parameters.ParamByName('name').Value := name;
  ADOQuery1.Parameters.ParamByName('gender').Value := gender;
  ADOQuery1.Parameters.ParamByName('job').Value := job;
  ADOQuery1.Parameters.ParamByName('dept').Value := dept;
  ADOQuery1.ExecSQL;

  ShowMessage('信息已成功录入!');
end;

 


✅ 5. 注意事项

  • sample.accdb 数据库必须存在,并正确设置权限;

  • 如果使用的是旧版 Delphi,可能需要用 .mdb 格式,且用 Jet.OLEDB.4.0

  • 若运行时报错 “找不到提供程序”,请安装 Access Database Engine

  • 检索下拉功能通过 LIKE 实现模糊匹配;


✅ 示例界面布局建议

[ 姓名:__________     ] (TEdit)
[ 性别: ( )男 ( )女    ] (TRadioButton)
[ 职业: [下拉]         ] (TComboBox)
[ 部门搜索:________↓ ] (TComboBox 输入+下拉)
[  [提交]按钮           ]

 


如果你希望我生成一个 .dfm 或 Delphi 项目文件夹结构,也可以继续告诉我。可以根据你用的 Delphi 版本生成对应代码。

示例目录结构

MyProject\
├── Project1.dproj
├── Unit1.pas
├── sample.accdb ← Access 数据库文件

发表回复