问题标签 [tdataset]

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 回答
555 浏览

delphi - 如何在 Delphi 的主/从关系中查找 DataSet 是否为主?

我想创建一个“复制记录”操作,当调用该操作时,会在任何TDataSet后代中复制当前记录。如何确定数据集是否是主/从关系的主数据集?使用TClientDataSet它相当容易,但我需要将此操作用于TDataSet.

0 投票
2 回答
2305 浏览

delphi - 如何将 TDataSet.DisableControls 与 Master/Detail 数据集一起使用?

调用TDataSet.DisableControls禁用主/详细数据集之间的链接。是否有另一种方法可以在不影响主/从关系的情况下禁用更新数据感知控件?我知道我可以将单个组件设置DataSourcenil,但这对我来说不是实用的方法。

0 投票
1 回答
1217 浏览

delphi - 应用过滤器时刷新数据集

我在 Delphi 5 中有一个 TRxQuery(它源自 TQuery)绑定到一个网格。我正在添加一个过滤器编辑框,并希望在用户键入时过滤网格。有没有办法在不关闭和重新打开查询的情况下过滤数据集,因为这会导致不必要的闪烁。

非常感谢

0 投票
1 回答
5332 浏览

delphi - 将记录从一个表复制到另一个不起作用

我正在使用 BDE 和平面表。我有两个相同的表,tblOnetblTwo 正在尝试将数据从一个表复制到另一个表。不是整个数据库,只是一个使用这个的特定记录:

单步执行所有这些值对于 From Table 都是“Null”。

发布后,我将一条空白记录添加到tblTo. 所有的值都是空的,这并不奇怪。:)

我在复制数据时哪里出错了?它没有进入复制功能。

我已经在这工作了几个小时,无法让它工作。可能我忽略了一些简单的事情。我添加了“var”参数以查看是否有任何区别,但没有。

哦,顺便说一句,我从“1”而不是“0”开始循环,因为两个文件中的第一个字段都是AutoInc.

0 投票
0 回答
1345 浏览

delphi - 过滤 Delphi TDataSet 时,NULL 和 BLANK 关键字之间有区别吗?

使用 TDataSet 的 Filter 属性时,我输入以下过滤器:

BLANK 是否意味着空但不为空,或者它们是否等效,或者这两个过滤器之间是否存在其他差异?

0 投票
1 回答
4344 浏览

delphi - 当 RowCount > VisibleRowCount 没有选择网格的第一行时,DBGrid 的最顶行中出现什么数据集行?

当底层数据集中的记录数大于DBGrid 中显示的行数,并且 DBGrid 已滚动。

这是我的问题。从附加到 DBGrid 的拖放事件处理程序中,我可以使用 MyGrid.MouseCoord(X,Y).Y 确定放置事件与 DBGrid 的哪个可见行相关联。当基础数据集包含的记录数少于或等于 DBGrid 中显示的行数时,该值也是基础数据集中关联记录的行号。

当底层数据集包含的记录多于 DBGrid 中可见行数时,MyGrid.MouseCoord(X, Y).Y 和 TDataSet(MyGrid.DataSource.DataSet).RecNo 仅在数据集的第一行出现时相同在网格的第一行。

是否有某种方法可以在未选择 DBGrid 行的情况下识别 DBGrid 中最顶部显示记录的基础数据集中的记录号(或偏移量)?我知道,如果我实际上选择了 DBGrid 的最顶行,那么我可以使用 TDataSet(MyGrid.DataSource.DataSet).RecNo 来获取基础数据集的当前记录号。但是,从 DBGrid.OnDragOver 或 DBGrid.OnDragDrop 事件中,我只有对 DBGrid 和鼠标坐标的引用(从中我可以确定网格的哪一行是放置的目标)。

例如,如果我可以确定 DBGrid 在网格的最顶行显示底层数据集中的第三条记录,那么我的问题就解决了。同样,如果我可以读取特定行的底层 TField(例如,最上面的行)而无需选择该行,我就有了我需要的东西。但是,我看不到这样做的方法。

任何建议将不胜感激。

编辑:我之前发布了一篇关于拖放到 DBGrid 中的博客。有了这个新信息,我可以解决以前已知的问题。我将在本周的某个时候更新该博客,并在我完成此操作后在此处添加指向该博客的链接。

还有一个问题。当可见行数小于底层记录数时,我们还需要计算在最后一个可见行之后发生的drop。在最后一个可见行之后删除时,MouseCoord(x,y).Y 返回 -1。

这是对 Uwe 代码的修改,以实现该目的:

编辑:正如我在原始问题中提到的,我对这个答案很感兴趣,以便修复我的代码中实现拖放到 DBGRid 中的行为。有了这个答案,我已经更新了我的拖放行为,并且我在我的博客中写了这个更新。您可以在以下 URL 找到此讨论,包括原始博客文章的链接:重新访问DBGrid 拖放

0 投票
3 回答
5699 浏览

database - Delphi - 在运行时将字段更改为计算字段。这是一个好习惯吗?

正如问题的标题一样,我与一位同事争论应该如何使用计算字段。据我所知,计算字段是在运行时创建的,就像弗朗索瓦对在运行时将计算字段添加到查询中的问题的回答一样。在同一个问题上,还有另一个答案,来自 sabri.arslan,它建议将现有字段更改为计算字段(代码如下)

我相信这种变化会导致指定 TField 的未知行为。在运行时将数据集字段更改为计算字段是否安全?这会产生什么样的问题?

乐:这是一个问题。其目的是展示在运行时在数据集上添加计算字段的良好实践。而且,是的,在运行时添加计算字段是糟糕的设计。

LE2:这只是“不要这样”的一个例子。作为一个论点,我问这样做之后讨论中该领域的行为是什么。该领域将如何运作?

0 投票
2 回答
1980 浏览

delphi - 如何让 TDataset 存储空字符串而不是 null?

我的数据库中有一个必填字段(NOT NULL),但允许使用空字符串。

如何让 delphi TDataset 使用它?将字段对象的 required 属性设置为 true 或 false 时,它​​似乎仍在尝试存储 null 而不是空字符串。

有关使用 TIBDataset 和 TIBStringField 的信息。

0 投票
1 回答
2676 浏览

delphi - 如何实现 IsFirstRecord 和 IsLastRecord?

当用户单击它们毫无意义时,我喜欢禁用控件。

一个特殊情况是一组自定义菜单按钮,它们模拟标准的第一个、上一个、下一个和最后一个按钮TDBNavigator

当用户点击第一个按钮时,第一个和前一个按钮都被禁用。

当用户然后单击下一个和上一个按钮时,底层证券与以前TDataSet一样位于同一记录上,但第一个和上一个按钮仍处于启用状态。

当前的实现如下所示:

Bof并且Eof不是禁用按钮的正确方法,因为我必须事先知道当前记录是否将成为第一条/最后一条记录。

所以我想用IsFirstRecordandIsLastRecord方法重写它:

我认为这不是一个好主意,因为我见过第一个记录RecNo = 0不正确的情况。(即过滤的 TADSQuery)

IsFirstRecord和的可靠实现是IsLastRecord什么?甚至可以使用当前的TDataSet架构吗?

0 投票
2 回答
2116 浏览

sql - RecordCount 与 UniDAC 数据集组件

我正在使用 UniDAC 的 TUniQuery 组件。我想显示我有多少记录,所以

我已将以下代码显示在状态栏中:

UnyQuery1.RecordCount 始终返回零。但是,如果我从按钮单击事件运行此代码,它就可以工作。

我做错了什么?