4

我计划将 Delphi 6 BDE 应用程序迁移到 Delphi 2010...

  • 首先,我必须离开 BDE 吗?(我会,但如果可能的话,我更喜欢分阶段进行)

  • 其次,dbExpress 是不是最好的选择?(我正在使用 MS SQL)

  • 最后,在 dbExpress 中是否有 TUpdateSQL 的等价物?(或其他任何东西)

我有很多代码从网格中更新只读查询(使用 TUpdateSQL 和 ApplyUpdate)。

请帮忙~~~

非常感谢。

4

4 回答 4

3

1)你肯定必须从 BDE 迁移到DbExpress。BDE 是一种过时和弃用的技术。

你可以阅读这些文章

2) DbExpress 是比 BDE 更好的与 sql server 通信的替代方案,但我更喜欢 ADO,因为它是 SQL Server 的本机。

3) dbExpress 没有类似于 TUpdateSQL 的组件,但是Luxene有一个 TDBXUpdateSQL,它是dbExpress eXtension组件的一部分。

您还可以查看来自ETHEA的InstantBDExpress它是一个组件库,可以将旧 BDE 应用程序无缝迁移到 dbExpress 技术

再见。

于 2009-10-28T03:48:01.783 回答
1

在 TDataSetProvider 上有一个名为 BeforeUpdateRecord 的事件,它基本上是一种更手动的方式来执行 TUpdateSQL

您必须自己创建 SQL,然后对其进行更新。(通过 TADOQuery 等)

它如何具有与 TUpdateSQL 中相同的旧值和新值的基础

sry 这是 c++ 我不知道 dehpli 但我认为它基本相同

DeltaDS->FieldByName("id")->NewValue;

DeltaDS->FieldByName("id")->OldValue;

你也必须设置

Applied = true;

这样它就不会在您手动完成更新后尝试进行更新

这里有一些链接应该有助于 关于 BeforeUpdateRecord

如果您需要更多信息,只需添加评论,我会回复您

于 2010-01-06T22:57:13.060 回答
0

使用 dbExpress 的 SQLQuery 组件,可以编写“查询”,例如

update <table>
set value = :v1
where something = :v2

然后调用“execsql”方法来物理更新表。

于 2009-10-28T09:44:52.933 回答
0

使用 ClientDatasets 和提供程序,您可以将 TDatasetProvider 与通用 OnUpdateRecord(?,现在不记得确切名称) 处理程序一起使用,并使其使用您在 TUpdateSQL 上使用的 sql。

只是一个想法,以防您不能使用 3rd 方组件....

于 2009-10-29T15:04:52.567 回答