骇人哪! 用Query 操作的SQL 语法正确, 却怎么也通不过.(50分)

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

liuaono1

Unregistered / Unconfirmed
GUEST, unregistred user!
我的天呀,用Query 操作的SQL 语法正确, 却怎么也通不过,我已
使出浑身解数还是提示出错——"Invalid parameter."
哪位好心且资深的大仙, Save me !!!

(表结构及源码如下:)
ruku2.db
-----------------------
字段名 类型 Size
Bianma A 17
Huoping A 20
Yazhi A 10
-----------------------
cltj_li.db
-----------------------
Bianma A 17
Huoping A 20
-----------------------
store.db
-----------------------
Mingcheng A 10
Lx A 2
-----------------------

with Query1 do
begin
SQL.clear;
SQL.Add('insert into cltj_li(Bianma,Huoping)');
SQL.Add('select distinct Bianma Huoping from ruku2');
SQL.Add('where Yazhi in( ');
SQL.Add('select Mingcheng');
SQL.Add('from store');
SQL.Add('where (Lx=:ll) and (Mingcheng<>:mm) ) ');
params[0].AsString:='YZ';
params[1].AsString:='油压班';
ExecSQL;
close;
end;
 
哇,你的查询条件太复杂了,我看了都头昏,不能简化一点吗?注意在每行语句
首尾加空格,我看你列出的这些代码几乎每一行都没有加空格,如果这是从你的
程序里直接贴下来的,那不出错才怪,不过我想不会是这样的,是吗?
 
SQL.Add('select distinct Bianma,Huoping from ruku2'); //少了,
 
'select distinct Bianma Huoping from ruku2'
'select distinct Bianma , Huoping from ruku2'
 
唉,旧问题刚了,新问题又来了——此处编译还是不能通过,
又提示 " Could not find object."
 
那句不能编译???
 
你的语句编译应该没有问题!
SQL.Add('insert into cltj_li(Bianma,Huoping)');
SQL.Add('select distinct Bianma Huoping from ruku2');//select前加空格,Bianma后加逗号.
SQL.Add('where Yazhi in( ');//where 前加空格
SQL.Add('select Mingcheng');
SQL.Add('from store');//from前加空格
SQL.Add('where (Lx=:ll) and (Mingcheng<>:mm) ) ');//where前加空格


 
debug一下,找出执行时的SQL语句,贴出来,不就好办了!
 
加不加空格无所谓,Delphi自动为每个Add加#$D#$A.
 
好消息:(from localsql.hlp)
Note Insertion of one or multiple rows from one table to another
<strong>through a subquery is not supported</strong>.
如果你用的是paradox的db, 那么默哀吧.
 
你是动态生成的query吗?是否忘了free?
 
不好意思,来完了点,网路塞车啦!方才可能没说透彻,
我将 SQL.Add('insert int cltj_li(Bianma,Huoping)');一句删掉,调试可通过;
或将 SQL.Add('where Yazhi in( select Mingcheng ... 剔除,调试也可通过,
所以,从每一行来看,调试应该没问题,但为什么作为一个整体,却为何不能通过呢?
哇,该不会是"相克"吧! 太可怕了! {::-<
 
你看看Another_eYes的回答吧。
 
对不起, SQL.Add('insert int cltj_li(Bianma,Huoping)');
应为 SQL.Add('insert into cltj_li(Bianma,Huoping)');
 
该死的 paradox !!!


( >>:<
 
后退
顶部