Delphi 10.4中DBGrid连接数据库后无法显示数据求助
Delphi 10.4 DBGrid无数据显示的排查与解决
针对你使用Delphi 10.4按Delphi 2010教程开发数据库程序时,DBGrid始终无法显示数据的问题,结合版本差异,按以下步骤排查解决:
1. 确认数据集激活状态
- 检查数据模块中**数据集组件(如TTable、TQuery)**的
Active属性是否设为True;若设计时未勾选,可在程序启动时手动激活,比如在数据模块的OnCreate事件中添加代码:
procedure TDataModule1.DataModuleCreate(Sender: TObject); begin Table1.Active := True; // 替换为你的数据集组件名称 end;
Delphi 10.4对数据集自动激活的逻辑与旧版本有细微差异,手动激活能规避自动激活失败的问题。
2. 核对组件绑定关系
- 确保
TDataSource的DataSet属性指向正确的数据集组件,同时DBGrid的DataSource属性已绑定到该TDataSource。 - 右键DBGrid选择**"Columns Editor"**,确认列已正确关联数据集的字段(若为自动生成列,需确保数据集包含可读取的有效字段)。
3. 修正数据库连接字符串兼容性
Delphi 10.4默认的Access驱动与Delphi 2010不同,针对.mdb文件,推荐使用ACE驱动,示例连接字符串:
ADOConnection1.ConnectionString := 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=' + ExtractFilePath(ParamStr(0)) + '你的数据库名.mdb;Persist Security Info=False';
注意:若系统未安装ACE驱动,需先安装对应32/64位版本的Microsoft Access Database Engine,版本需与Delphi编译位数一致。
4. 验证数据集是否读取到数据
- 在数据模块
OnCreate事件中添加代码,检查数据集记录数:
procedure TDataModule1.DataModuleCreate(Sender: TObject); begin if Table1.Active then ShowMessage('记录数:' + IntToStr(Table1.RecordCount)); end;
若消息显示记录数为0,说明数据库连接或数据集配置存在问题;若有记录数,问题大概率出在DBGrid或DataSource的绑定环节。
5. 匹配编译位数与驱动
Delphi 10.4默认可能为64位编译,而旧版Jet驱动仅支持32位。如果使用Jet驱动,需在Delphi中设置Project > Options > Building > Platform为Win32,重新编译运行。
内容的提问来源于stack exchange,提问作者TerrorLS
相关产品推荐
相关产品推荐

