下面是一个完整的 Delphi 示例,展示如何使用 ADO + Access 数据库 创建一个信息录入窗体
以下代码由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 数据库文件
