在dll中定义:addrec(aquery:tadoquery;sdat:string);我想把sdat的内容通过Aquery添加到数据库中,aquery的实参为一个datamodule中的adoquery1,为什么我调用的时候会出现类似对象没有创建的错误提示?1、我已经包含了adodb,db
2、在调用之前,datamodule中的adoquery1已经建立
2、在调用之前,datamodule中的adoquery1已经建立
解决方案 »
- 请帮我看一下
- 急,现场给分 我在一个fsMDIForm用ShowModal打开一个窗体
- 怎么打印树结构的节点呢?
- 如何将一张图片导入到WORD中呢?
- 特急:为什么每次我在DELPHI中编译程序的时候就会出现这样的提示,然后就进入DEBUG状态。
- MIDAS更新时出现"不能在手动或分布事务方式下创建新的连接"错误是何故?
- 在csdn首页有篇文章提到在Delphi7.0中有Delphi for .NET的预览版,可我安装后没有找到,应该怎样安装呢?
- 怎么得到ClientDataSet的一段数据,比方说从第3条到第5条记录,再把它添加到另一个ClientDataSet
- 谁能帮我把下面这段代码转为Delphi代码,谢谢
- CSDN的同志们,我想把我的东东移到D6上去,但是我又没有支持D6的GIF控件。你们有吗?
- 一个弱弱的问题,Delphi IDE里,怎么知道当前打开文件的绝对路径啊?
- TChart中坐标的值如何设定?
addrec(var aquery:tadoquery;const sdat:string):integer;
begin
with aQuery do
begin
close;
SQL.Clear;
SQL.Add('insert into atable(afield)');
SQL.Add(' values(:patable)');
Parameters.ParamByName('patable').Value := sdat;
try
ExecSQL;
Result := 0;
except
Result := 1;
end;
close;
end;
end;
begin
with aQuery do
begin
close;
SQL.Clear;
SQL.Add('insert into atable(afield)');
SQL.Add(' values(:patable)');
Parameters.ParamByName('patable').Value := sdat;
try
ExecSQL;
Result := 0;
except
Result := 1;
end;
close;
end;
end;
写上个adoquery1:=tadoquery.create;
如何,
好像记着:常量对象不能作为变量参数传递,adoquery1属于常量对象吗?
{
switch(reason)
{
case DLL_PROCESS_ATTACH: //初始化 COM
CoInitialize(NULL);
break;
case DLL_PROCESS_DETACH: //释放 COM
CoUninitialize();
break; case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return 1;
}
const
conSql=' values(''%s'')';
var
cSql:string;
begin
cSql:=format(cSql,[sdat]);
with aQuery do
begin
close;
SQL.Clear;
SQL.Add('insert into atable(afield)');
SQL.Add('cSql);
try
ExecSQL;
Result := 0;
except
Result := 1;
end;
close;
end;
end;
当然不是...你说的应该是跨套间访问COM对象的限制.(跨线程访问COM是跨套间访问COM情况之一)
另外,楼主,抓异常的代码最好也要改一下..才容易发现问题..addrec(var aquery:tadoquery;const sdat:string):integer;
~~~~~~~~~~~这儿不需要这个VAR....是不是你调用DLL弄错了?
begin
try
with aQuery do
begin
close;
SQL.Clear;
SQL.Add('insert into atable(afield)');
SQL.Add(' values(:patable)');
Parameters.ParamByName('patable').Value := sdat;
ExecSQL;
close;
Result := 0;
end;
except on e:exception do
Writelog(e.Message);//自定的函数,记录信息到日志文件.
Result := 1;
end;
end;