query 多表删除问题:((30分)

  • 主题发起人 主题发起人 maginnn
  • 开始时间 开始时间
M

maginnn

Unregistered / Unconfirmed
GUEST, unregistred user!
我用query从两个表中查询出记录(xmjbqk 和 xmbrjfmx 他们的关联字段
是 xmjbqk.xmbh=xmbrjfmx.xmbh)
xmjbqk中的字段有(bh,xmbh,等等);xmbrjfmx中的字段有(xmbh,其他但是没有bh字段)
显示在dbgrid中
我现在要删除
dbgrid中的当前记录
我的代码是
with query1 do
begin
str:=FieldByName('bh').AsString;
str1:=fieldbyname('xmbh').asstring;
close;
SQL.Clear;
sql.Add('delete from xmbrjfmx where xmbh= '+str1);
SQL.Add('Delete from xmjbqk where bh= '+str);
ExecSQL;
showmessage('aaaaaaaaaa');
提示错误为
invalid field name??说无效的列名???
invalid column name"我的xmbh的字段的值"
 
在线等候
 
add('delete from xmbrjfmx where xmbh='''+str1+''';');
add('delete from xmjbqk where bh='''+str+''';');
 
楼上正确
SQL语句中加入变量要三个引号
 
to ysai
多谢,可以用了
可是我不明白为什么我的写法不对
但是,如果我删除一个表如值删除xmjbqk表中的记录
with query1 do
begin
str:=FieldByName('bh').AsString;
// str1:=fieldbyname('xmbh').asstring;
close;
SQL.Clear;
// sql.Add('delete from xmbrjfmx where xmbh= '+str1);
SQL.Add('Delete from xmjbqk where bh= '+str);
ExecSQL;
showmessage('aaaaaaaaaa');
这么写是可以的,怎么多加了一个// sql.Add('delete from xmbrjfmx where xmbh= '+str1);
就错了哪??
 
'''不是‘+空格的意思吗?
干吗后面也要加'''??
 
顺便问一句
语句太长该怎么换行??
mysqlstr:string;
mysqlstr:='select A.* ,B.*
from
xmjbqk A,
xmbrjfmx B
where
A.xmbh=B.xmbh'
这句话的正确写法应该是什么??
就是一行写不下了,该怎么换行写??
多谢
 
重要的是分号;是用来分开多条SQL语句的,而且只能用update,delete,不能用多条select
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
603
import
I
I
回复
0
查看
548
import
I
I
回复
0
查看
866
import
I
后退
顶部