【问题标题】:Ways to get Woll2Woll working with Delphi 7 dbExpress?让 Woll2Woll 与 Delphi 7 dbExpress 一起工作的方法?
【发布时间】:2012-07-12 20:32:56
【问题描述】:

我的理解是Woll2Woll中的Delphi组件直接继承自BDE,为了增加中的兼容性和稳定性,我们正试图摆脱它>Windows 7。但我们希望保留 TwwwDbGrid 数据感知组件。

我见过一种产品 (www.ethea.it),它声称使用模拟 BDE API 的工具使这变得“简单”。

我想知道是否有人对这种方法或任何其他方法有任何经验或建议?我们不想重写所有内容。

谢谢!

【问题讨论】:

  • 你在说哪些组件?我在 Delphi 7 中使用过 Woll2Woll 组件,现在在 Delphi 2007 中使用它们。不过,从未创建过使用 BDE 的应用程序。应用程序(相当大,50 万行代码,1500 个表单,其中大多数包含至少一个 Tww* 组件)在 Windows 7 中运行良好。它只使用数据源和(抽象)数据集,就像任何 DBAware 组件一样。
  • 我过去在 Delphi 2007 中使用过 TwwwDBGrid 和 dbExpress - 我不记得细节,但我认为它只是使用了 TDataSource,如 TDBGrid。
  • 感谢大家的反馈。 Delphi 2007 与 Delphi 7 不一样吗?我以为他们只是放弃了编号方案,转而支持发布年份。我不知道我们有多少行代码或屏幕,但这比我寂寞的人想要的要多。所有这些最初都是使用 BDE 在 Delphi 5 中编写的。我们只会在 Windows 7 上使用 XP 模拟器,但它不稳定。我们使用了许多 Woll2Woll 组件,但最重要的要转换的组件是 TwwDBgrid。
  • TwwDBGrid 允许 any TDataSet 派生自 InfoPower 2000 为 Delphi 4 和 5 发布(参见 woll2woll.com/ip2000/diinformantreview99.pdf)。如果您使用的是旧版本(2000 之前),则可能无法更新到当前版本。

标签: delphi dbexpress bde


【解决方案1】:

我使用过 Woll2Woll InfoPower 组件,但我不知道它们中的任何一个对 BDE 有任何依赖关系。我相信你的理解是不正确的。由于您面前有源代码,因此您可以准确地告诉我继承自哪个 BDE-ONLY 组件(例如 TTable),因为我的理解是它很可能继承自 TCustomDBGrid 或直接继承自 TCustomControl 之类的基类, 两者都没有任何 BDE 依赖性。它适用于 BDE TTable 数据集或任何其他数据集。

我相信你很困惑。标准 Delphi 数据源和数据库感知控件适用于任何数据集组件。 GUI 层(例如 DB 网格控件)和底层数据集类型之间没有依赖关系。任何数据集都与任何其他数据集一样。

TwwDBGrid 适用于任何数据集,包括 dbExpress。但是,我可能错了,因为您可能正在使用该组件的某个极其古老的版本,该版本以某种方式与 BDE 相关联,在这种不太可能的情况下,您可能需要一个新版本。但我对此表示怀疑。

【讨论】:

  • 我可能不知道发生了什么。让我澄清一下。我创建了一个 dbExpress TSQLConnection 组件,并设置其参数以连接到 Sybase ASE 数据库。然后我创建一个 TSQLQuery 组件,将其 SQLConnection 设置为连接组件,并设置其 SQL。然后我创建一个 TDataSource 组件,并将它连接到 TSQLQuery 组件。最后,我在表单上放置了一个 TwwDBgrid,并将其 DataSource 设置为 TSQLQuery 组件。我运行程序,没有任何反应。我知道我可以连接,因为我可以使用 Pascal 访问数据并将其显示在表单上。
  • 如果我尝试使用网格设计使用的 TwwQuery 组件,它无法连接到数据库,因为它需要 BDE 的别名。 Object TreeView 中显示红色和黄色大问号。
  • @UncaAlby:关于你的第一条评论,你确定你打开了TSQLQuery? (你特别提到做除此之外的所有其他事情,我只是想澄清一下。)
  • 只有 Twwquery 有 bde 依赖。不是dbgrid。谁在乎 wwQuery 它什么都不做。使用 TDATASOURCE 并在 db grid 数据源属性中使用它,以链接到 TSQLQuery 数据集。完成。
  • 现在是坏消息第一个坏消息。 网格复制了从查询中返回的结果。复制第一行以填满整个第一个屏幕,然后向下滚动随机数次复制该行。 第二个坏消息。如果您在任何时候尝试向上滚动,您会得到“在单向数据集上不允许操作。” ouchies !
【解决方案2】:

谢谢大家!我想我明白了! (直到我遇到下一个听力问题)

这是我所做的:

TSQLConnection -- 在设计时设置以连接到数据库

TSQLquery -- 定义 SQL 并将 SQLConnection 设置为 TSQLConnection 组件

TDataSetProvider -- DataSet 设置为 SQLQuery 组件

TClientDataSet -- ProviderName 设置为 DataSetProvider 组件 (那个有点混乱,因为Delphi 7一般都会把important属性放在red中,但是这个特殊的是not,所以有一个是很容易认为这不重要)

TDataSource -- DataSet设置为ClientDataSet组件

那么,当然: TwwDBgrid -- DataSource 设置为 DataSource 组件

(谁想出了这么多废话?我可以开枪打死他吗?)

无论如何我遗漏的大部分内容:当您准备好运行查询时,有 三个 需要激活的东西,而我只有 两个。

TSQLConnection(当然,我有那个)

TSQLquery,将 active 设置为 true,或者调用 Open 方法(这是我之前的经验)

TClientDataSet,设置 Active 为 true 最后一个,我不知道需要设置。我只是假设(是的,我知道,从不假设)它已经默认处于活动状态(为什么不应该这样?)

当然,你必须在编译和运行之前取消激活所有内容,以便在用户正确验证自己之后在运行时激活所有内容。

无论如何,再次感谢所有提供帮助的人!我真的很感激!

【讨论】:

  • 这些都是 Delphi 中真正的初学者级别的东西,具有任何数据库连接类型。请选择实际回答您问题的答案并接受它,以便将来的读者知道哪个答案适合您。
【解决方案3】:

我不清楚你在问什么。您是否要求迁移所需的 BDE 替代品?如果是这样,我会推荐 Sybase Advantage。他们写的一篇关于从 BDE 移植的文章:http://www.sybase.com/products/databasemanagement/advantagedatabaseserver/BDEtoADS

几年前,我们将一些 BDE 代码移植到了它,它与 BDE 的兼容性给我们留下了深刻的印象。表格格式当然不同,但 Delphi 语法和组件(如 TTable)都是可用的。 (有一些小的和记录的 SQL 语法差异......)

我相信它可以免费独立使用。

【讨论】:

  • 感谢您的反馈。我们需要以最小的努力替换 BDE,或者让 Woll2Woll 组件与 DBExpress 很好地配合使用。我将研究那个 Sybase 产品,看看它是否有帮助。再次感谢!
  • @UncaAlby:您是否联系过 Woll2Woll 以获得他们关于连接 DBExpress 的建议?顺便说一句,如果您认为我已经回答了您的问题,您可以点击我的答案左侧的复选标记,以表明我已经回答了您的问题。
  • 你误解了这个问题,罗伯特。 :-) 问题是关于 TwwwDBGrid 对 BDE 的依赖,而不是关于如何用其他东西替换 BDE。 (我同意 ADS 作为轻量级数据库引擎,但它不是 BDE 的“替代品”——它是替代品;替代品将是语法兼容的——并且“最小的努力”会产生误导。如果旧的基于 BDE 的应用程序直接使用 BDE API 调用,工作量并不小,并且可以使用直接使用 API 所需的 BDE 做任何有用的事情。)
  • 嗨,肯。谢谢你对我温柔! :-) 我认为你是对的,我确实误会了。顺便说一句,(虽然我为 BDE 辩护很愚蠢,它已经生命支持了十多年)但是我们用 BDE 为多个同时用户做很多有用的事情,并且从不调用 API。反正这里不是讨论的地方! :-) 感谢您的评论。
猜你喜欢
  • 2023-01-24
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-16
  • 2012-05-22
相关资源
最近更新 更多