问题标签 [tdbgrid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1527 浏览

delphi - 数据库网格:如何使用一个当前行的列作为另一个索引?

我不确定问题标题是否足够清晰,请随时编辑。

基本上,我有两个数据库网格,它们反映了两个数据库表,每个网格显示一个。

当用户在第一个表中选择一行时(我们称之为oders),我想用与第一个表的选定行的列匹配的任何行的详细信息来更新第二个。

比如说,该表orders有一个列customer_id,我想order_details用该客户的所有订单的详细信息填充第二个表(我们称之为它),每行一个订单。

我可以连接 2@datasource、查询和连接到这两个TDbGrids,但我对如何编写order_detailsSQL 感到困惑。

SQL for ordersis just SELECT * from orders,但另一个?

我想要类似的东西SELECT * from order_details WHERE cutomer_id=<orderQuery>.currentRow.FieldByName("customer_id").AsInteger-但我不知道该怎么做...

有人可以帮我一些德尔福代码吗?

另外,一旦我建立了这种关系,在orders数据库网格中选择一个新行会自动更新order_details数据库网格吗?还是我需要为此添加代码。

Ps 我知道不再有books标签了(更遗憾的是),但是有人可以推荐一本好书来解释编程 DB 感知控件的基础知识吗?我显然需要一个。谢谢

0 投票
2 回答
3910 浏览

delphi - 如何在关闭行选择的情况下为 DBGrid 中的整行着色?

RowSelect 破坏了 OnCellClick 的功能,所以我需要关闭 RowSelect。那么如何通过突出显示当前行的所有单元格来模拟行选择的外观呢?

0 投票
1 回答
4055 浏览

delphi - 如何使用 dgRowSelect = False 跟踪选定的行

当 dgRowSelect = False 我如何检测 OnDrawColumnCell 方法中的选定行?

不是选定的单元格,而是包含选定单元格的行。

0 投票
1 回答
10580 浏览

delphi - 当 dgRowSelect 设置为 True 时,检测在 TDBGrid 中单击了哪个单元格?

在 Delphi 2010 中,有什么方法可以检测dgRowSelect设置为 True 时单击了哪个单元格?

通常我会使用OnCellClick(Column: TColumn)事件处理程序,但这不能按预期工作。使用dgRowSelect = False此过程会传递单击的列,但使用dgRowSelect = True此过程会传递第一列,而不管单击了哪一列。

我无法弄清楚调用参数OnCellClick传递的代码在哪里TColumn,如果我能发现我可能能够解决这个奇怪的行为。

0 投票
2 回答
8367 浏览

delphi - 将 DBgrid 导出为 CSV?

我有一个排序的数据库网格(用户单击了几个单选按钮和复选框来影响显示)。

我想将排序相同的所有数据(不仅仅是网格中可见的数据)导出到 CSV - 我该怎么做?数据 - 不是用户设置,只是为了澄清。

提前感谢您的帮助


[更新] 我sqlQuery一点一点地构建,取决于用户对复选框和单选组的设置,然后,当其中一个更改时,我

也就是说没有硬编码查询,它会变化,我想导出当前设置。

如果我想从网格或数据集中导出,我不太清楚(我只是不是一个 db 人,这是我的第一个 DBgrid),但我怀疑我想要网格,因为它有一个字段的子集他的数据集。

我想这TJvDBGridCSVExport是一个绝地组件(?)到目前为止,我一直试图避免它们,听起来很棒,因为我更喜欢谨慎的、独立的组件,而不是安装一个庞大的集合。这可能不是最聪明的做法,但这就是我的感受——ymmv(prolly 确实如此)

0 投票
2 回答
578 浏览

mysql - 如何在 C++ Builder XE 中编辑计算字段值

我有一个显示一些计算字段的 TDBGrid。我正在使用 MySQL 数据库。

我需要编辑一个名为“日期”的计算字段的字段值,但我不能。我尝试编辑其他具有 StringField 类型的名为“Description”的字段并且它有效!

Date 显示修改后的 DateTime 类型值,仅使用 DayOfTheMonth 方法显示 Day。

这个怎么做?是否有任何方法可以编辑计算字段的值?请帮帮我...

提前致谢。

0 投票
1 回答
142 浏览

c++builder - TDateTime 值有什么问题

我有一个名为 currMonth 的 TDateTime 变量。currMonth 的值为“2000 年 6 月 30 日晚上 11:59:59”。我需要插入 currMonth 作为 TDBGrid 中名为 dtBegin 的字段的默认值。

我试试这段代码:

并且编译器成功编译了项目,但是当我调试它时,我得到的 dtBegin 值不是“6/30/2000 11:59:59 PM”而是{ 36738.9999999884 }。

有人知道这个 TDateTime 对象有什么问题吗?

提前致谢。

0 投票
0 回答
2770 浏览

delphi - 如何自动调整 DBGrid 列宽

我一直在尝试将此 Delphi 代码与 C++ Builder XE 一起使用。我手动将语言转换为 C++ Builder 语言。

此过程运行正常。当我尝试最大化保存 DBGrid 的表单时,此过程成功地根据网格宽度拆分列宽度。但是,如果我尝试使用表单右侧或左侧的鼠标控制来最小化表单宽度,则此过程不会将列宽调整为每列上值的长度或标签的长度。

有什么办法可以解决吗?或者有人有其他程序来解决这样的问题吗?

编辑:好的,这是代码。我已经手动将上面的代码转换成这个代码:

提前致谢。

0 投票
2 回答
3442 浏览

delphi - 触发 TDBGrid Columns 调整大小事件的位置

我有一个 TDBGrid 组件。我需要捕捉在调整网格列大小时触发的事件。

0 投票
2 回答
8389 浏览

delphi - 为什么不显示 TDBGrid 上的垂直滚动条?

我在一个表单上有两个数据库网格,一个有一个垂直滚动条,另一个没有,即使 DataSource 查询返回的结果多于网格的可见行。

为什么不显示垂直滚动条TDBGrid


[更新] Delphi XE2 启动器,使用 AnyDac。

当我第一次启动程序时,数据库网格确实有一个垂直滚动条,但后来它消失了,我缩小了范围,但仍然不明白如何纠正这个问题。

我有两个 MySql 表和两个 DBgrids。一个是所有测试运行的概述,另一个包含在测试运行期间进行的测量的详细信息。当用户单击“摘要”网格的一行时,我会更新“详细信息”网格的查询参数。这有效并且不会删除滚动条。

当我开始新的 tets 运行并将新行插入“摘要”表时,问题就来了 - “详细信息”表的滚动条消失了!

AnyDac 查询分别是

如您所见,measurements表中有对test_runs表的引用

当我执行以下 SQL 时,测量表的滚动条消失了:

谁能告诉我我做错了什么?感谢 0x000F4240


[更新] 再次问题是,当我在表格中添加一行时test_runs,反映measurements表格查询的DB网格的垂直滚动条消失了。

因此,不知何故,一个数据库网格/数据集/表正在影响另一个数据库网格。

实际MySql数据库中的数据是没问题的。无论我是否使用命令INSERT INTO和两个指定查询(在设计时固定 SQL 并且从未更改),或者如果我使用 @kobik 建议,都会出现问题dataset.append

数据库内容很好,数据库内容正确,当我单击摘要test_runs数据库网格时,详细measurements数据库网格的内容已正确更新。

唯一的问题是在查询的表中插入一行test_runs会导致滚动条从 DB 网格的measurementsDB 网格中消失。

当我将其注释掉时,我可以单击test_runs数据库网格并在没有滚动条消失的情况下在测试运行之间进行交换,但永远无法返回当前测试,因为数据库网格中没有它的条目。

当我第一次开始新测试dataset时,.RecordCount` 当然是零 - 这可能会导致滚动条消失?

但是,随着测量的进行(每隔一秒,基于计时器),我已经检查并且dataset.RecordCount` 的值会增加,所以这里应该是第二次测量后的滚动条吗?或者,一旦控件决定不需要它,我是否必须强制它出现?(使 DB 网格无效并不会导致出现丢失的滚动条)


[更新] 正如@kobik 所建议的,我已将 run_id 设为表上的主自动增量键和test_runs表上的索引measurements。我已经更新了上面给出的表格详细信息。我还将mastersource填充测试 drun 数据库网格的查询设置为测试运行“摘要”数据库网格查询的数据源。

我删除了数据库(我的代码在第一次运行时自动重新创建它)。起初,两个数据库网格都没有垂直滚动条,因为它们都是空的。当我添加第一个测试时,“摘要”数据库网格没有滚动条,因为它只有一个条目,“详细信息”数据库网格在 0 和条目处没有滚动条,滚动条出现在第二组测量中。

我添加了第二次测试运行,并且“sumamry”数据库网格有一个滚动条,因为它现在有两个条目,但是一旦我将第二个条目添加到摘要中,滚动条就从“详细信息”数据库网格中消失了(其中当有一个单一的测试运行时它没有这样做),无论它有多少条目(我在添加每组测量时设置断点并检查measurementsQuery.RecordCount并查看它是否为 0、1、2 ...)

值得指出的是,这只发生在我添加新的测试运行(第一次除外)时。如果我启动该程序,两个数据库网格都具有预期的滚动条(> 1 个条目)。我可以通过摘要单击或鼠标滚轮来显示相应测试运行的详细信息。滚动条永远不会消失——直到我添加一个新的测试运行,它将一行 i 插入到摘要数据库网格中。

[更新]
请参阅https://stackoverflow.com/questions/15399769/why-is-the-vertical-scrollbar-on-a-tdbgrid-not-displayed-redux