问题标签 [datamodule]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2766 浏览

delphi - Delphi 风格:如何为可单元测试的代码构建数据模块?

我正在寻找一些关于构建 Delphi 程序以实现可维护性的建议。尽管我第一次学习使用 Turbo Pascal 编程,但我在主要使用 C/C++ 几十年后才开始接触 Delphi 编程,所以我对基本语言并不感到不舒服。在我之前使用 C++ 和 C# 的经验中,我通过使用 cxxtest 和 NUnit 成为了 TDD 转换者。

我继承了我现在负责维护的这个程序。它主要由表单和几个数据模块组成。应用的业务逻辑和数据访问主要分散在表单上,​​数据模块多半只是全局ADO对象生存的地方。数据库访问一般通过引用 TADOQuery 或 TADOCommand 的全局实例,将 SQL 文本直接格式化为对象的相关属性,并调用其 Open 或 Execute 方法来完成。

我正在尝试将业务逻辑进行一定程度的封装,以便对其进行单元测试。我已经看到了这个答案,就从表单中抽象逻辑而言,它非常有意义。我想知道数据访问的最佳实践是什么。我的想法是数据模块应该公开一种特定于应用程序的迷你 API(可能带有所有虚拟方法),以便可以用模拟对象替换它们以进行测试。这个其他答案的链接展示了一些示例,让我相信自己走在正确的轨道上,但我仍然有兴趣查看有关数据模块的某种最佳实践文档。我可以通过 Google 找到的大多数页面都提供了相同类型的示例,这些示例介绍了您在设计时可以做的所有很酷的事情,例如将数据绑定控件连接到查询之类的事情,我对这些事情不太感兴趣在这一刻。

0 投票
1 回答
593 浏览

delphi - 在设计模式下获取 TDataModule

如何在设计模式(组件编写)中获取所有创建的对象(假设是 TDataModule 类型)?

0 投票
2 回答
1692 浏览

delphi-2010 - TDataModule 继承

当我试图继承 TDataModule 时,Delphi 将后代类视为一种形式,为它们提供字体和客户端属性等属性。(运行时出现“属性不存在”异常)

我该怎么做才能让它发挥作用?

0 投票
1 回答
359 浏览

delphi - 从数据模块访问一个标签页上的组件

也许微不足道,但似乎无法弄清楚.... 我正在使用 RAIZE 组件,即 rzPageControl1,我的一张工作表称为 PRO。它 (rzPageControl1) 位于 Form1 上。现在,我在该表上有一个 cxTextEdit4,我需要在新记录事件中从 Datamodule2.Tablename2 访问它。

但似乎无法正确访问它...

有谁知道语法?

我试过了 ; Form1.rzPageControl1。等等,但似乎无法让delphi列出我可用的组件......请帮助......

0 投票
4 回答
3096 浏览

delphi - 在delphi中使用数据模块分离数据集实例

我正在使用Delphi6并有一个数据模块,ADO DataSet它由两种形式使用,formA 和 FormB。每个表格都有一个Dataset.Open()inOnCreateDataset.Close()in OnClose。如果两个表单同时打开并且 formB 关闭,则数据集在 formA 中关闭。我该如何防止这种情况,基本上我需要为每个表单提供单独的数据集实例,但同时使用数据模块。

0 投票
0 回答
674 浏览

wcf - 通过“数据模块”将 MVC 模型绑定到 WCF 服务的最佳实践?

我有点菜鸟,所以请多多包涵。

我正在构建一个 MVC 项目,该项目从 Web 服务 (WCF) 获取数据,该数据由将参数传递给服务的“数据模块”类公开。现在我拥有的是一个看起来像这样的视图模型:

一个看起来像这样的“数据模块”类:

还有一个如下所示的控制器操作:

我觉得在我的每个控制器中手动绑定这样的数据不是很干净(或类似 MVC)。是否有最佳实践方法来绑定这样的数据?

0 投票
2 回答
2277 浏览

delphi - 为什么在 Delphi XE 中打开项目时主窗体无法访问 DataModule 的图像和操作?

我的 Delphi XE 应用程序几天前都很好,但我不知道出了什么问题。我的项目布局:

  • 可视化控件位于主窗体上
  • 这些控件的操作和图像列表位于数据模块上

当我打开我的项目时,主窗体没有与任何控件关联的任何图像或操作,即使它们应该是。当我编译时,我收到错误消息:“模块'winMain'链接到模块'modGeneral',在当前项目中找不到。你想删除/重定向到另一个模块的链接吗?”。

解决方法:在我打开项目后关闭主窗体,然后在 IDE 中通过在项目管理器中双击它来打开模块(是的,它存在于当前项目中),然后重新打开主窗体形式:我所有的动作和图像现在都正确显示了。

你怎么看,这是一个已知的 Delphi 错误吗?我的项目有问题?

0 投票
4 回答
3812 浏览

delphi - 类 TADOConnection / TADOTable 未找到

好的,所以我的应用程序工作得很好,直到我决定通过创建一个 DataModule 表单并将所有数据库组件移动到它来稍微清理设计时表单。我正在使用 Delphi XE2 Update 1 和这些组件,TADOConnection、TADOTable、TADOQuery、TADOCommand。当我第一次尝试使用 DataModule 表单上的上述命名组件而不是主表单运行应用程序时,它现在在执行 DPR 的此行时返回错误:

Application.CreateForm(TDataModule1, DataModule1);

引发的错误是找不到类 TADOConnection。. 现在我删除并重新添加了 TADOConnection 到 DataModule 表单,它现在引发了一个不同的错误:找不到类 TADOTable。,但我认为这只是因为 DataModule 上的创建顺序发生了变化,TADOTable现在 a 是在表单上创建的第一个对象。

uses在 DataModule 中的条款是:

uses System.SysUtils, System.Classes, Data.Win.ADODB, Data.DB;

我阅读了其他帖子,说在 uses 子句中包含 ADODB 和 DB 以克服此错误,但这似乎没有帮助。

我的完整 DPR 文件是:

我什至尝试从创建 DataModule 的 DPR 文件中删除该行并在主窗体中手动执行此操作,但是当我收到相同的错误消息时,它只会改变。

除了将所有组件移回主窗体之外,我不确定接下来要尝试什么。DataModule 表单在 XE2 中的工作方式与 Delphi 的先前版本不同,为什么当组件位于主表单上时,没有出现相同的 TADOConnection 和 TADOTable 类未找到消息?

非常感谢任何想法或见解。

詹姆士

0 投票
4 回答
8072 浏览

delphi - 如何在执行时连接火鸟数据库?

我很难让我的代码正常工作。我想用我在 Delphi 7 中的应用程序连接到数据库,但是如果我更改应用程序的文件夹,例如,如果我安装在另一台计算机上,我的数据模块将停止工作。错误是:

引发异常类 EdatabaseError 并带有消息“缺少驱动程序名称”

我的实际代码是:

我想在任何路径或安装位置使用我的 .exe 连接到数据库。

0 投票
1 回答
1356 浏览

delphi - Delphi - 在 DLL 的 DataModule 中使用 TTable 时出错

我有一个运行良好的应用程序...移植它以作为 DLL 实现。我有一个数据模块,上面有我的数据库和 TTable 组件...在设计模式下,数据库设置为活动。表指向数据库,它们被设置为活动的。我可以右键单击表格,进入字段编辑器,查看所有列,所以我知道结构/属性设置得很好......

问题出在运行时...它在这条线上给了我一个 AV...

我在网上看到了一些提示,需要做一些特殊的事情才能在 DLL 中使用数据模块,但我没有得到任何工作。

具体报错信息为:

模块 'DocAssistCom.dll' 中地址 06D4E22E 的访问冲突读取地址 0000070'