当我把参数赋值后execsql但总是报错为“can't find object...",why???(100分)

  • 主题发起人 李玉琼
  • 开始时间

李玉琼

Unregistered / Unconfirmed
GUEST, unregistred user!
我的QUERY的SQL为insert into "zbtp.DB" //我想把查询结果插入
SELECT 单位 FROM ddzb.DB" WHERE 单位 IN //zbtp.db中
(SELECT DISTINCT 单位 FROM "wscfrb.db" WHERE 日期 =:dt )
当我把dt赋值后,execsql单总是报错为“can't find object..."
敬请各位高手帮我FIND WHY!!!!?谢谢。
 
"Can't find object"是指对象找不到,
也就是表、视图、索引什么的不存在,
仔细检查一下,看那些表在不在,字段对不对。

我看你的ddzb.DB好象少了一个引号,
是笔误还是的确错了?
 
to liying:
这个我已经事先查过,表都在一个目录下,
并把目录加上也不行,但我不含子查询WHERE IN()时
倒可以,是不是INSERT SELECT 不支持复杂的select 子句?
 
绝对支持,我用过,不过我看你的问题写的不是很清楚,请将sql写明白一点
 
to lss:
我的sql中WHERE 单位 IN (SELECT DISTINCT 单位
FROM "wscfrb.db" WHERE 日期 =:dt )
是想让”单位 ”在子查询结果中,我将此sql 分成
两个:insert into "zbtp1.db" SELECT DISTINCT 单位 FROM "wscfrb.db" WHERE 日期 =:dt //zbtp1.db为临时表
和:insert into "zbtp.DB" SELECT 单位 FROM "ddzb.DB"
WHERE 单位 IN ( SELECT 单位 FROM "zbtp1.db" )
倒可以,不知为何,这虽实现了结果,但是多了一半的工作,还是
不理想,怎么办???清高见。



 
改一下:
where X in
(Select distinct A from ....)

改为
where exists
(Select * from ....
where A=X)

这是比较标准的用法
 
由于没看清后面的式子,对上一次的回答表示sorry
我找了三个库试了一下,query的sql中的insert into不支持带参数的形式,
你可以采用以下形式调用:
query1.sql.text:='insert into...where 日期='''+FormatDateTime('mm"/"dd"/"yy',yourdate)+''')';
Query1.ExecSQL;
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
822
import
I
I
回复
0
查看
719
import
I
顶部