请问这个条件的修改SQL语句怎样写,还是搞不懂里面的单引号的应用
with datamodule1.ADOSavelist do
begin
close;
sql.Clear;
updatestr:='update savelist set Kwhdata='''+Ekwh+''',Writedate='''+datetimetostr(now)+''' where ChanelNO='+quotedstr(ChanelNo);
sql.Text:=updatestr;
ExecSQL;
end;
上面是可以的,现在要改成下面的要添加一个两数据相减之后如果大于2才执行修改的条件,外部变量为kwhstr(字符串)减去内部的一个字段kwhdata(也为字符串)我把他写成这样但不通过:不知应当怎样写
with datamodule1.ADOSavelist do
begin
close;
sql.Clear;
updatestr:='update savelist set Kwhdata='''+Ekwh+''',Writedate='''+datetimetostr(now)+''' where ChanelNO='+quotedstr(ChanelNo) and '''((strtofloat(kwhstr)-strtofloat(kwhdata))>2)'''';
sql.Text:=updatestr;
ExecSQL;
end;
with datamodule1.ADOSavelist do
begin
close;
sql.Clear;
updatestr:='update savelist set Kwhdata='''+Ekwh+''',Writedate='''+datetimetostr(now)+''' where ChanelNO='+quotedstr(ChanelNo);
sql.Text:=updatestr;
ExecSQL;
end;
上面是可以的,现在要改成下面的要添加一个两数据相减之后如果大于2才执行修改的条件,外部变量为kwhstr(字符串)减去内部的一个字段kwhdata(也为字符串)我把他写成这样但不通过:不知应当怎样写
with datamodule1.ADOSavelist do
begin
close;
sql.Clear;
updatestr:='update savelist set Kwhdata='''+Ekwh+''',Writedate='''+datetimetostr(now)+''' where ChanelNO='+quotedstr(ChanelNo) and '''((strtofloat(kwhstr)-strtofloat(kwhdata))>2)'''';
sql.Text:=updatestr;
ExecSQL;
end;
oracle里面这样写就成,她会自己转化类型
Sqlserver的话你就自己试试吧
如果不行你自己找一下sqlserver中对应的转化函数
应该是这样 你试试..
strtofloat 是用来转化变量,常量的..
应该是你的 kwhdata 值应该在数据库里面的类型应该就用SQL 语句 去转化!
前面的你查下在SQL里面转换成你需要的.
应该是这样..我没有编译过 你试试看.
你把"'+(strtofloat(kwhstr)+'" 的双引号去了..应该没问题了..在有问题 我估计会吐血
你这样测试下..'update savelist set Kwhdata="'+Ekwh+'",Writedate="'+datetimetostr(now)+'" where ChanelNO="'+quotedstr(ChanelNo)+'" and convert(float,kwhdata)>2'
先看看这样能不能过..
'update savelist set Kwhdata="'+Ekwh+'",Writedate="'+datetimetostr(now)+'" where ChanelNO="'+quotedstr(ChanelNo)+'" and '+(strtofloat(kwhstr)+'>0'
在看看这样能不能过..
这样试下..ACCESS 数据库 的语言 和其他的不大一样.转化函数也不一样.
楼主的表也有点奇怪 既然是拿去运算的列为什么要去其他类型呢.