我计划将 Delphi 6 BDE 应用程序迁移到 Delphi 2010...
首先,我必须离开 BDE 吗?(我会,但如果可能的话,我更喜欢分阶段进行)
其次,dbExpress 是不是最好的选择?(我正在使用 MS SQL)
最后,在 dbExpress 中是否有 TUpdateSQL 的等价物?(或其他任何东西)
我有很多代码从网格中更新只读查询(使用 TUpdateSQL 和 ApplyUpdate)。
请帮忙~~~
非常感谢。
我计划将 Delphi 6 BDE 应用程序迁移到 Delphi 2010...
首先,我必须离开 BDE 吗?(我会,但如果可能的话,我更喜欢分阶段进行)
其次,dbExpress 是不是最好的选择?(我正在使用 MS SQL)
最后,在 dbExpress 中是否有 TUpdateSQL 的等价物?(或其他任何东西)
我有很多代码从网格中更新只读查询(使用 TUpdateSQL 和 ApplyUpdate)。
请帮忙~~~
非常感谢。
1)你肯定必须从 BDE 迁移到DbExpress。BDE 是一种过时和弃用的技术。
你可以阅读这些文章
2) DbExpress 是比 BDE 更好的与 sql server 通信的替代方案,但我更喜欢 ADO,因为它是 SQL Server 的本机。
3) dbExpress 没有类似于 TUpdateSQL 的组件,但是Luxene有一个 TDBXUpdateSQL,它是dbExpress eXtension组件的一部分。
您还可以查看来自ETHEA的InstantBDExpress(它是一个组件库,可以将旧 BDE 应用程序无缝迁移到 dbExpress 技术)
再见。
在 TDataSetProvider 上有一个名为 BeforeUpdateRecord 的事件,它基本上是一种更手动的方式来执行 TUpdateSQL
您必须自己创建 SQL,然后对其进行更新。(通过 TADOQuery 等)
它如何具有与 TUpdateSQL 中相同的旧值和新值的基础
sry 这是 c++ 我不知道 dehpli 但我认为它基本相同
DeltaDS->FieldByName("id")->NewValue;
和
DeltaDS->FieldByName("id")->OldValue;
你也必须设置
Applied = true;
这样它就不会在您手动完成更新后尝试进行更新
这里有一些链接应该有助于 关于 BeforeUpdateRecord
如果您需要更多信息,只需添加评论,我会回复您
使用 dbExpress 的 SQLQuery 组件,可以编写“查询”,例如
update <table>
set value = :v1
where something = :v2
然后调用“execsql”方法来物理更新表。
使用 ClientDatasets 和提供程序,您可以将 TDatasetProvider 与通用 OnUpdateRecord(?,现在不记得确切名称) 处理程序一起使用,并使其使用您在 TUpdateSQL 上使用的 sql。
只是一个想法,以防您不能使用 3rd 方组件....