数据库Tquery(50分)

  • 主题发起人 主题发起人 delphifaq
  • 开始时间 开始时间
D

delphifaq

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库Tquery
在.dll库中加一datamodual里边放Tquery和table控件
运行时 运行query1.open时出错 好象是datamodual没
有创建 但在这里声名的变量可以用 为什么Tquery不能
用 应当怎么用?????
 
能否将你的Dll贴出,或E-mail过来排查一下?
 
想起来了,有的书上介绍:由Dll管理的全局内存块是应用程序间进行数据传输的
又一途径。是否应设置共享数据段。
 
unit voiceprg;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables;

type
TDataModule2 = class(TDataModule)
Query1: TQuery;
Table2: TTable;
private
{ Private declarations }
public
{ Public declarations }
end;

var
DataModule2: TDataModule2;
procedure xxxx;
implementation
{$R *.DFM}

procedure xxxx;
begin
DataModule2.query1.open;//此处出错 query1的其它参数已经设置好

end;
 
我前阵子也开发过dll中加datamodule,里头各种数据连接构件都有,但运行时没有你说的问题,你可否说得详细点?
一般地,开发dll中加datamodule程序跟别的程序没有两样,只是在调用dll中的过程或函数时,在使用到datamodule前要先create,释放dll前要先free掉。其他的没有两样。
 
要自己手动进行create一下才行,因为Datamodule实际也相当于一个form.
 
你的程序里不知是否有
Try
Query1.Open;
Excepte
Query1.ExceSQL;

End;
结构?若无,则毛病就出在此。
 
对DataModule,你当然要Create,而且还要记住Free。否则肯定出错。你声明了
变量,但并没有为其分配空间,能用但肯定出错。
 
我刚做过在DLL中如何使用DATAMODULE中的DATASET。
1。首先,你必须在调用此DLL的过程
在INTERFACE部分声明:
PROCEDURE OPENDLL;STDCALL;
在IMPLEMENTATION部分定义:
PROCEDURE OPENDLL;STDCALL
BEGIN
FORM1:=TFORM1.CREATE(APPLICATION);
WITH FORM1 DO
BEGIN
PARENT:=NIL;
POSITION:=POSCREENCENTER;
DATAMODULE1:=TDATAMODULE.CREATE(APPLICATION);
SHOWMODAL;
END;
END;
2.只有在DATAMODULE1:=TDATAMODULE.CREATE(APPLICATION)后才可以使用
DATAMODULE1.QUERY1.OPEN;
3.在DLL关闭时,必须将DATAMODULE1.FREE;否则下次调用此DLL会出错!
 
请继续讨论或结束问题
 
多人接受答案了。
 
后退
顶部