- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 TField.origin 属性动态构建 SQL 查询的 where 子句。
因此,如果我有一个查询,例如;
select
p.firstname,
p.lastname,
g.description
from
people p
inner join groups g
我可以将名字字段的原点设置为;
FirstNameField.origin = 'p.firstname';
然后在动态查询的where子句中使用它,例如;
SQLWhere = 'where ' + FirstNameField.origin + ' = ''' + MyValue + ''' ';
(显然我有额外的代码来防止 SQL 注入(inject))。
我一直这样做,而且效果很好。然而,当试图追踪错误时,我注意到我有一个数据集不断将原点的值重置为例如;
people.firstname
而不是;
p.firstname
我追踪到数据集关闭然后重新打开的时间。然而我一直这样做,所以我无法理解为什么一个数据集有不同的行为。
我的问题是如何防止原始值被重置?
最佳答案
下面的代码来自D7的IBCustomDataSet单元(后面的代码会更复杂)XEx 版本)。
正是这段代码设置了 IBX TField 的 Origin
属性。
当数据集调用其 InternalOpen
时,将调用 TIBCustomDataSet.CreateFields方法(如果其 FDefaultFields
字段为 True)。如果进入 InternalOpen
则为 True数据集的 FieldCount
为零。如果没有字段,FieldCount
将为零在用户代码中或使用字段编辑器在 IDE 中提前创建在数据集上。 InternalOpen
由 TDataSet.Open 通过其 OpenCursor
方法调用。
因此,避免执行“CreateFields”和数据集字段“Origin
”的方法结果被重置的属性是使用这些方法之一(IDE 或用户代码)在打开数据集之前创建字段。换句话说,如果您通过这些方法之一设置 Origin
属性,应该可以避免它被重置。
procedure TIBCustomDataSet.CreateFields;
var
FieldAliasName, RelationName : String;
i : Integer;
f : TField;
begin
inherited;
for i := 0 to FQSelect.Current.Count - 1 do
with FQSelect.Current[i].Data^ do
begin
{ Get the field name }
SetString(FieldAliasName, aliasname, aliasname_length);
SetString(RelationName, relname, relname_length);
f := FindField(FieldAliasname);
if Assigned(f) then
begin
if (RelationName <> '') and (FieldAliasName <> '') then
f.Origin := RelationName + '.' + FieldAliasName;
end;
end;
end;
更新 TIBCustomDataSet.InternalOpen 的实现在 XE4 和 XE6 之间明显发生了变化,因此现在无条件调用 CreateFields(即,无论 DefaultFields 是否为 True)。因此,拥有已经存在的 TFields 将不会避免调用 CreateFields 并因此重置 Origin 属性。
关于delphi - 如何阻止 TField.Origin 重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32249639/
我正在尝试使用谷歌浏览器的 Trace Event Profiling Tool分析我正在运行的 Node.js 应用程序。选择点样本后,我可以在三种 View 之间进行选择: 自上而下(树) 自上而
对于一个可能是菜鸟的问题,我们深表歉意,但尽管在 SO 上研究了大量教程和其他问题,但仍找不到答案。 我想做的很简单:显示一个包含大量数据库存储字符串的 Android ListView。我所说的“很
我已经开始了一个新元素的工作,并决定给 Foundation 5 一个 bash,看看它是什么样的。在创建带有水平字段的表单时,我在文档中注意到的第一件事是它们使用大量 div 来设置样式。所以我在下
我有一个 Windows 窗体用户控件,其中包含一个使用 BeginInvoke 委托(delegate)调用从单独线程更新的第 3 方图像显示控件。 在繁重的 CPU 负载下,UI 会锁定。当我附加
我有一堆严重依赖dom元素的JS代码。我目前使用的测试解决方案依赖于 Selenium ,但 AFAIK 无法正确评估 js 错误(addScript 错误不会导致您的测试失败,而 getEval 会
我正在制作一款基于滚动 2D map /图 block 的游戏。每个图 block (存储为图 block [21][11] - 每个 map 总共 231 个图 block )最多可以包含 21 个
考虑到以下情况,我是前端初学者: 某个 HTML 页面应该包含一个沉重的图像(例如 - 动画 gif),但我不想强制客户缓慢地等待它完全下载才能享受一个漂亮的页面,而是我更愿意给他看一个轻量级图像(例
我正在设计一个小软件,其中包括: 在互联网上获取资源, 一些用户交互(资源的快速编辑), 一些处理。 我想使用许多资源(它们都列在列表中)来这样做。每个都独立于其他。由于编辑部分很累,我想让用户(可能
我想比较两个理论场景。为了问题的目的,我简化了案例。但基本上它是您典型的生产者消费者场景。 (我关注的是消费者)。 我有一个很大的Queue dataQueue我必须将其传输给多个客户端。 那么让我们
我有一个二元分类问题,标签 0 和 1(少数)存在巨大不平衡。由于测试集带有标签 1 的行太少,因此我将训练测试设置为至少 70-30 或 60-40,因此仍然有重要的观察结果。由于我没有过多地衡量准
我是一名优秀的程序员,十分优秀!