下面是一个完整的 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 数据库文件