Delphi DataModule使用方法

 

数据显示页面:

 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls, DBCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);

 

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
uses Unit2;

procedure TForm1.Button1Click(Sender: TObject);
begin
       // DataModule1.Destroy;
         DataModule1.ADOQuery1.Connection:=DataModule1.ADOConnection1;
         DataModule1.ADOQuery1.SQL.Text:='select * from ts_cbsb';
         DataModule1.ADOQuery1.Active:=true;
         DataModule1.DataSource1.DataSet:=DataModule1.ADOQuery1;
         dbgrid1.DataSource:= DataModule1.DataSource1;
end;

end.

 

 

 

Unit2页面

 

unit Unit2;

interface

uses
  SysUtils, Classes, DB, ADODB;

type
  TDataModule1 = class(TDataModule)
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DataModule1: TDataModule1;

implementation

{$R *.dfm}

end.

 

 

工程文件 :

 

 

program Project1;


uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {DataModule1: TDataModule};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TDataModule1, DataModule1);

  Application.Run;
end.

以上转自一位仁兄,但在包bpl中调用是还会出现找不到dfm文件,正在研究。
----------------------------------------------------------------------------------------------------------- 
关于在formcteate事件中使用datamodule出错的解决方案:
我们先用记事本打开Project1.dpr文件发现有类似以下的语句
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TDataModule2, DataModule2);
Application.Run;
注意第一句和第二句的顺序
我们发现在执行formcteate的时候DataModule2还没有创建
所以我们直接使用DataModule2的话自然会报错,所以解决方法有二个:
一:将上面两句调换先后位置
二:在formcteate事件的开头加上一下语句:
DataModule2:=TDataModule2.create(application);
来创建DataModule2.
这样问题就解决了.
小弟也是遇到了这样的问题,经过各位大虾的指点加上自己的观察推测和实践.
终于发现问题所在,特在此和各位分享!!!!!!!!!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2.35.0.12 26-Dec-02 打开小型查询的速度优化(2378) MSConnection.Options已添加(2454) 添加了有限的MSConnection.ConnectString支持(2356) 现在从服务器获取输出字符串和(var)字节参数 最大长度不依赖于设置Param.Size(2355) DBMonitor客户端实现已移至COM服务器 修复了复杂表名的错误 修复了DT编辑器中丢失数据的常见错误(D2137) 修复了DataModule中设计时MSConnection的错误(O2290) 修复MSTable错误的设计时编辑器(2433) 优化服务器游标的BLOB字段发布(2117) 修复ClientDataSet的主/明细关系的错误(O2423) 修复了OutOfMem(1979)的一些错误 2.30 30-Sep-02 Delphi 7支持 ftString和ftVarBytes类型的新内存管理模型。允许显着减少大型表提取时的内存使用量。由FlatBuffers数据集选项控制 在CachedUpdates模式下支持blob字段 2.05 09-Aug-02 DBMonitor支持 2.00 18-Jul-02 支持服务器游标 支持多个结果集的查询 性能提升 打开查询而不支持将所有行提取到客户端(FetchAll = False) 增加了单向支持 快速获取身份价值 StoredProc支持刷新 FullRefresh支持 执行更新和删除时检查旧行值 在从提交到回滚的打开事务的关闭连接上更改了行为 1.30 21-Mar-02 支持C ++ Builder 6 1.20 08-Nov-01 添加了TMSParam类来表示参数 添加了查询分析器和企业管理器集成 在刷新时加速获取身份值 1.00 26-Aug-01 SDAC的第一个版本
Delphi XE10 是 Embarcadero 公司开发的一款集成开发环境(IDE),可以用来实现跨平台的客户端-服务器应用程序。其中的 DataSnap 技术是其重要特性之一,可以方便地实现分布式多层应用程序的开发。 DataSnap 是一种基于 HTTP/HTTPS 协议的轻量级远程通信框架。它使用 JSON 或者二进制格式进行数据交换,可以实现多种不同的通信模式和数据传输方式。DataSnap 的核心机制是通过 DataModule 组件将前端客户端和后端服务器分离,在前端和后端之间建立通信通道,进行方法调用和数据传输。 Delphi XE10 的 DataSnap 还提供了一些附加特性,如身份验证和授权控制、并发控制、消息发布和订阅等。这样可以帮助开发人员更好地组织和管理分布式应用程序的数据交换和业务逻辑。 使用 Delphi XE10 的 DataSnap 技术,开发人员可以快速构建跨平台的客户端-服务器应用程序。无论是 Windows 还是 macOS、iOS 还是 Android,都可以使用 Delphi XE10 来开发数据密集型的分布式应用程序。 总结来说,Delphi XE10 的 DataSnap 是一种方便、易用的远程通信框架,可以帮助开发人员构建跨平台的分布式多层应用程序。通过 DataSnap,开发人员可以简化远程数据交换、方法调用和业务逻辑的实现。无论您是初学者还是经验丰富的开发人员,都可以使用 Delphi XE10 的 DataSnap 来轻松地开发功能强大的客户端-服务器应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值