You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 22:57:07