- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在将近 200 万行代码从 BDE 迁移到 Delphi XE5(即将成为 DX)中的 SQL Server。
我们遇到了一个大问题。
我们一直在使用 ADO,但刚刚被 Microsoft 未能实现 .Locate 所困扰,该字符串同时包含单引号和井号。示例:
TADOQuery1.Locate('FieldName', '2x4'' 10#', [])
失败:
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
Microsoft 的 ADO 文档指出这将失败。我们可以在 ADODB.pas 中看到它发生。对于简单的一个变量定位和包含多个变量的定位。
我们无法选择使用 WHERE 字符串在标准查询中执行这些定位,因为它们处于紧密循环中。
问题:FireDAC 有这个问题吗?有人可以帮我们一个忙并实际尝试上述操作吗?在 FireDac 中查找?
从 ADO 迁移到 Firedac 时我们可能会遇到哪些令人不快的“意外”?
谢谢。
最佳答案
我在 XE8 中创建了一个简约的 FireDAC 应用程序,其中包含 TFDConnection
、TFDQuery
和 TFDGUIxWaitCursor
,以及 TFDquery
> 连接到 TDataSource
、TDBGrid
和 TDBNavigator
。我将 TFDConnection
连接到 MS SqlServer 2014 数据库,并编辑数据行以包含您的测试值
2x4' 10#
在 VARCHAR(80) 列中。
当我调用 .Locate
时,调用 .First
,然后调用 FDQuery
的 .Locate
成功找到了该行> 仅在包含测试值的列上并且当它是两字段调用的一部分时。
所以,至少值得你自己测试一下。您提到上周在类似的 Locate
查询中您有 XE8。
至于其他令人不愉快的意外,我暂时想不出什么。我所能记得的就是,当我们在 2002 年左右放弃 BDE,通过 OLEDB 驱动程序 + Ado 转而使用 Sql Server 2000 时,摆脱了 BDE 真是一种幸运的解脱。我很高兴我们选择了我们所做的排序规则,Latin1_General_CI_AI,其中 CI = 不区分大小写,AI = 不区分重音。
我对 FireDAC 的主要保留意见是,虽然它似乎比 TAdoxxx 等“本地”对象更好地处理这些事情,但它似乎与它们相距甚远,我怀疑您可能很难让官方完成任何事情万一你确实被它的一些问题绊倒了。当然,它现在掌握在 EMBA 手中,这可能会说明从他们那里榨取错误修复(特别是因为他们现在似乎将错误修复更新限制在更新订阅上),尽管作者似乎确实非常积极地支持它上线。
顺便说一句,我不确定您的“微软失败”基于什么观察。我测试了 AdoQuery.Locate
并修改了 ADODB.Pas 的 GetFilterExpr
我在对您的其他问题的回答中发布了它,它工作正常,所以也许您基于它别的东西。
出于兴趣,我决定看看 ADOInt.Pas Recordset
对象是否可用于执行与 Locate
类似的操作,并且它可以而且工作得很好与您的搜索值 2x4' 10#
以及我使用的其他测试模式:
procedure TForm1.TestRecordSetFind;
var
Expr : String;
begin
Expr := 'applicant = ' + QuotedStr(edLocate.Text);
if cbMultiField.Checked then begin
Expr := '(' + Expr + ') and (country = ''EP'')';
end;
Memo1.Lines.Add(Expr);
AdoQuery1.RecordSet.Find(Expr, 0, adSearchForward, adBookmarkFirst);
AdoQuery1.Resync([]);
end;
当然,这样做有几个明显的限制,即 RecordSet.Find
是一个过程而不是返回 bool 值的函数,而且它不区分大小写(尽管无论是那是因为我的服务器排序规则是,我不知道)。
关于delphi - ADO 与 Firedac 报价标志在 .Locate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32829912/
F#中的“引号”是什么,它们的用途是什么? 最佳答案 In short, a quotation is metadata that represents the code of a particula
有人可以解释一下,为什么我可以使用 $1两次得到不同的结果? perl -wle '"ok" =~ /(.*)/; sub { "huh?" =~ /(.*)/; print for @_ }->(
我正在尝试向迷你购物车 block 添加一个 block (按钮):要么到 name="cart_sidebar"或者最好是 name="topCart.extra_actions"因为它自动呈现它的
我尝试做一些事情并尝试弄清楚。我只想向单击的 div 添加一个类。如果单击 div 号 1,然后单击 div 号 2,则该类将从 div1 中删除并添加到 div2 中。希望您能理解。 这是一个cod
我正在创建一个执行以下操作的 magento 支付扩展程序: 当用户在商家网站上点击结账时,他会被重定向到一个网站(如 paypal),并在该网站上输入他的支付数据。如果付款方式失败,用户将被重定向到
我正在开发一个自定义忠诚度积分模块。在结账期间,客户可以选择兑换积分。 在模块设置中,我创建了一个redeem_points eav_attribute(它存在于eav_attribute 表中),并
我目前正在做一个小项目,我需要对以下场景进行建模: 场景 客户打来电话,他想要一辆新车的报价。 销售代表。注册客户信息。 销售代表。在系统中创建报价,并将项目添加到报价(汽车)。 销售代表。通过电子邮
在 Elixir 中,什么时候应该使用 Macro.escape/1 而不是 quote/1?我看过beginner's guide但这没有帮助。 最佳答案 quote/2返回 abstract sy
我不明白什么是报价单。有人可以详细回答什么是 magento 报价、它们存储的数据、它们的生命周期和其他相关信息吗? 编辑:请注意区别:Magento vs Magneto。还有“magento”和“
我有一个 Terraform 脚本,它基于 Azure 市场中的此镜像在 Azure 上创建虚拟机: https://azuremarketplace.microsoft.com/en-us/mark
我正在尝试使用 JavaScript 重新创建(或“伪造”)Skype 报价。因此,我需要将 XML 字符串推送到剪贴板,格式为“SkypeMessageFragment”。警报显示效果很好,但使用
我的数据框 (ds) 中的每日数据看起来像这样跨越了几年: 对于每一天,我都需要将所有报价标准化为该特定日期的特定时间。例如,在 6 月 1 日,我需要将所有报价标准化为 6 月 1 日下午 3 点的
有人知道如何在 PL/SQL 存储过程中生成 .Net DateTime.Ticks,而无需在 Oracle 数据库中使用 .Net 程序集吗? 我在 .Net 中有一项服务,将 DateTime.T
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我在 Steam API 中搜索发送 Steam 报价的方法,但找不到。可以使用 API 或者您知道其他方法吗?我想在 PHP/Symfony 中使用它。 最佳答案 您目前无法通过 API 创建交易报
我是一名初学者 Scheme 程序员,我想丰富我在函数式编程方面的知识。我在 DrRacket IDE 中编程。最近我发现了一些有趣的代码: (car ''(a b)) 输出: 'quote
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有以下结构化数据: { "@context": "https://schema.org/", "@type": "Offer", "priceCurrency": "EUR", "p
我是一名优秀的程序员,十分优秀!