总是报错为:“invalid pamramer",WHY???。。。。(60分)

  • 主题发起人 主题发起人 lihouqi
  • 开始时间 开始时间
L

lihouqi

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手:
在下用两个QUERY进行主从查询
并将子查询结果放入一个临时表中,
但是总是报错为:“invalid pamramer"
我的部分源代码如下:q2.datasource为q1.datasource//保证主从查询
q1.ParamByName('dt').Asdate:=strtodate(rq.text);
q1.prepare;
q1.open;
q1.first;
while not wsftrz.q1.Eof do//根据q1的每个查询结果,
//用q2 对表rztp.db插入相应的查询结果
begin
wsftrz.q2.ParamByName('dd').Asdate:=strtodate(rq.text);
wsftrz.q2.prepare;
wsftrz.q2.execsql;
wsftrz.q1.next;
// wsftrz.q2.close//不知此句是否需要
end ;
wsftrz.q2.ParamByName('dd').Asdate:=strtodate(rq.text);
wsftrz.q2.prepare;
wsftrz.q2.execsql
end;
其中q1.sql为SELECT 单位 FROM "ddzb.DB" WHERE (日期 =:dt) q2.sql为insert into "rztp.DB" SELECT 矿别, 工作面名 FROM "wsftrz.DB" where (日期=:dd) and (矿别=:单位)
谢谢各位相助,我倾家荡产了,分不多请包涵!以后补上。
 
是哪一句报错?
 
我试了一下这个程序,你的错误可能在q2中dd参数的类型没有指定
请在q2控件中的paramk中的datatype指定为ftfate
 
to lss:
我检查了Q2的DD参数类型没有错,可能是别的问题,
并且我把Q1的两条查询 结果对Q2付参执行,都能得到插值结果,
但是用WHILE语句全部做时就不行了,请各位帮我再看看,谢谢!
 
如果是执行到wsftrz.q2.execsql报错,那麽:
insert into "rztp.DB" SELECT 矿别, 工作面名
FROM "wsftrz.DB" where (日期=:dd) and (矿别=:<font color=red>单位</font><font color=green>改称英文试试</font>)
还有就是在属性监视器里设定好参数的属性

 
Query的 param 坚决不要使用中文名字
 
先prepare再用parambyname赋值!
 
这样,不Prepare就行了,如果需要效率推荐用SP
 
你不应使用中文变量的,即“单位”,对SQL来说可能,但对DELPHI来
说可能不行。
 
yanghaijun:SQL数据库如果支持就应该可以吧。
请继续讨论或结束此题
 
王寒的 “param 坚决不要使用中文名字”
我支持。



 
DBMS STANDS FOR DATABASE MANAGEMENT SYSTEM
请继续讨论或结束问题
如连不上:
http://202.120.85.61/DELPHIBBS/
 
我遇见过你说的情况,可能和你使用的环境有冲突
解决方法是不使用参数指定写入SQL语句的办法,而是
在程序中去写你的SQL语句,执行整条SQL语句时直接用
execsql的办法。(当然,程序要难写一点,但能作到。)
 
后退
顶部