为何说我标准表达式类型不匹配(50分)

  • 主题发起人 主题发起人 dai1016
  • 开始时间 开始时间
D

dai1016

Unregistered / Unconfirmed
GUEST, unregistred user!
var
ssbm:string;
strsql:string;
begin
ssbm:=edit2.text;
strsql:='delete jsk where bh='+ssbm+'';
data_w.tsgl_dc .ExeCute(StrSQL);
end;
为何说我标准表达式类型不匹配,要是想转换eidt2.text的类型应该怎么写。
 
>>strsql:='delete jsk where bh='+ssbm+'';
strsql:='delete jsk where bh=' + '''' + '+ssbm+' + ''''';
 
strsql:='delete jsk where bh=:aaa';
parameter.parambyname('aaa').value:=edit1.text;
 
惭愧,前面我答错了。sorry
 
var
ssbm:string;
strsql:string;
begin
ssbm:=edit2.text;
strsql:='delete jsk where bh='+''''+ssbm+'''';
data_w.tsgl_dc .ExeCute(StrSQL);
end;
 
不知道大虾的
data_w.tsgl_dc.execute是个啥东东??
我只是知道
ssbm:=edit2.text;
strsql:='delete jsk where bh='+ssbm+'';
改称
strsql:='delete jsk where bh='''+ssbm+'''';
就可以了.
如果还是不行,请关闭任何输入法,重新输入!!!!
 
把ssbm和strsql定义为AnsiString类型就可以了


 
在DELPHI中,如果要在字符串中出现引号,要用两个引号输出引号,如:
''abc''则表示:'abc'。所以你是想输入这样的SQL语句delete jsk where bh='XXX',记住
这是字符串,所以两边要加上单引号,那XXX两连的引号就用两个引号输出,则变为:
' delete jsk where bh=''XXX'' '
 
应这样:
strsql:='delete jsk where bh='''+ssbm+'''';
这样的问题也很好调试,在运行时,把sql语句显示在memo中,
然后把memo的语句拿到数据库里去执行,看是否对不对?
 
引号在这种问题中很头痛,主要是平常如果写的多了,就好了,刚开始建议用单步跟踪
看看执行的结果。
 
这个问题很简单:

strsql:='delete jsk where bh='+chr(39)+ssbm+chr(39)
 
strsql:='delete jsk where bh='"'ssbm'"';

 
错应该是strsql:='delete jsk where bh='+''''+'+ssbm+'+'''';
 
用我的方法是绝对正确的,因为sql中的文本要用单引号括起来,而单引号被delphi用来分
开字符串了,所以用chr(39)之后就可以了。我就是这样用的。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
737
import
I
后退
顶部