Delphi 中与数据库网格的 ADO 查询连接有问题吗?

Problem with ADO query connection to a DB Grid in Delphi?

问题背景: 所以我试图从我的数据库中通常在 DBGrid 中显示 table(特定的 table 在我的 GUI 中的无线电组中得到 selected),以便当用户输入一个 SQL 查询,他们将能够在 DBGrid 中看到 table 中的更改。 (除非另有说明,所有图片均来自Delphi的设计视图)

您可以 select a table 的广播组图片(广播组尚未执行任何操作):

主要问题: 问题是它没有显示所有内容,它只显示 DBGrid 上的第一列,没有其他内容。

我正在谈论的输出示例:

关于表单、组件等的额外信息: 连接到声明为 TDataSource 组件的我的 DBGrid 的数据源称为 dsrSQL。我正在使用一个名为 qrySQL 的 TADOQuery 组件,它连接到 conClientInfo(一个连接到数据库的 TADOConnection 组件)。该数据源具有 qrySQL 作为数据集。所有组件都处于活动状态并已启用。它们也都在一个名为 DM_client_u 的单一数据模块中。 (我确实在我的表单代码中声明了正在使用的数据模块)

Access 中 table 之一的图像:

我试过的: 我重做了 conClientInfo 中的连接字符串,检查了 qrySQL 组件和 DBGrid。我还是没看出程序表面有什么问题。

提前致谢!

如果您不介意我这么说,您试图使用相同的 DBGrid 来为自己制造问题 当您不知道如何操作时,显示来自 2 table 具有不同结构的数据。 无论如何,尝试这样做意味着您失去了在设计时设置网格外观的能力 并对其进行调整以适应来自每个 table.

的特定数据

以下是我建议您改为执行的操作:

  1. 向您的表单添加一个 TPageControl 并向其添加两个 TTabSheets。

  2. 在每个TTabSheet上放一个TDataSource、TDBGrid和TDBNavigator,将每个TDataSource连接到 数据模块中的数据集之一。假设涉及的 AdoQueries 已经 Sql 适合 要检索您希望显示的数据,请将两个 AdoQueries 设置为活动状态并使用列编辑器 (您可以通过右键单击每个 TDBGrid 来访问)为每个设置和调整网格列的大小 场.

  3. 现在您可以独立控制每个 AdoQuery 的显示,而不会束缚自己。

如果使用 TPageControl 不合您的口味,请执行一些操作,例如将每个 TDBGrid 嵌入它自己的 TPanel, 使两个 TPanel 在您的表单上占据完全相同的区域并使用代码显示其中一个面板 或另一个取决于您的 TRadioGroup 的设置,通过将一个 TPanel 的 Visible 属性 设置为 True 和另一个为 False。

顺便说一句,一旦你让 2 个 TDBGrids 看起来和工作如你所愿,设置 AdoQueries 到 Active = False 并使用代码在 运行 时间打开它们 - 这是不好的做法 在设计时保持数据库连接和数据集等活动。你会 当您遇到意想不到的问题时找出原因,例如当您希望您的应用程序独占访问 table 时,例如在 运行-time.

尝试重组它们时