procedure TForm2.dxButton13Click(Sender: TObject); //商品销售过程
begin
ADoquery1.Close;
adoquery1.SQL.clear;
adoquery1.sql.add('select SPshuliang from SPlist where SPName=:SPName');
adoquery1.Parameters.ParamByName('SPName').Value:=edit20.text;
adoquery1.Open;
adoquery1.Close;
adoquery1.sql.clear;
adoquery1.SQL.add('update SPshuliang set [SPshuliang - xl] where SPName from SPlist');
ADoquery1.Parameters.ParamByName('xl').Value:=edit16.text;
adoquery1.Parameters.ParamByName('SPName').Value:=edit20.text;
adoquery1.execsql;
end;
很急,专家们帮我看看!
begin
ADoquery1.Close;
adoquery1.SQL.clear;
adoquery1.sql.add('select SPshuliang from SPlist where SPName=:SPName');
adoquery1.Parameters.ParamByName('SPName').Value:=edit20.text;
adoquery1.Open;
adoquery1.Close;
adoquery1.sql.clear;
adoquery1.SQL.add('update SPshuliang set [SPshuliang - xl] where SPName from SPlist');
ADoquery1.Parameters.ParamByName('xl').Value:=edit16.text;
adoquery1.Parameters.ParamByName('SPName').Value:=edit20.text;
adoquery1.execsql;
end;
很急,专家们帮我看看!
adoquery1.parameters.parambyname('xl').value:=edit16.text;
adoquery1.parameters.parambyname('spname').value:=edit20.text;不知道楼主是不是这个意思,将splist表的spshuliang字段更新么??
看的头晕..
adoquery1.SQL.clear;
adoquery1.sql.add( 'select SPshuliang from SPlist where SPName=:SPName ');
adoquery1.Parameters.ParamByName( 'SPName ').Value:=edit20.text;
adoquery1.Open;
adoquery1.Close;
adoquery1.sql.clear;
adoquery1.SQL.add( 'update SPshuliang set [SPshuliang - xl] where SPName from SPlist ');//这个地方把xl改成:xl
ADoquery1.Parameters.ParamByName( 'xl ').Value:=edit16.text;
adoquery1.Parameters.ParamByName( 'SPName ').Value:=edit20.text;
adoquery1.execsql;
语句语法错误。SPshuliang 从你上一条SQL看出来应该是字段。
update语法应该是:
UPDATE
{
table_name WITH ( < table_hint_limited > [ ...n ] )
| view_name
| rowset_function_limited
}
SET
{ column_name = { expression | DEFAULT | NULL }
| @variable = expression
| @variable = column = expression } [ ,...n ] { { [ FROM { < table_source > } [ ,...n ] ] [ WHERE
< search_condition > ] }
|
[ WHERE CURRENT OF
{ { [ GLOBAL ] cursor_name } | cursor_variable_name }
] }
[ OPTION ( < query_hint > [ ,...n ] ) ]
我不知道这是不是楼主要的效果,因为原来那个update语句语法就错了好几个地方
你先说你的SQL操作是要干什么再说吧。
忘了提醒你
既然是更新,你[SPshuliang - xl]是什么意思呀
这叫更新吗
应该
update SPshuliang set [SPshuliang - xl]//这儿有问题SPshuliang到底是字段还是表名,没搞清楚 where SPName//条件语句就这一个SPName吗
from SPlist
另外如果参数的话,前面都加个冒号
adoquery1.SQL.add('update SPList set SPshuliang = SPshuliang - :xl where SPName = :SPName');
ADoquery1.Close;
adoquery1.SQL.clear;
adoquery1.sql.add('select SPshuliang from SPlist where SPName=:SPName');
adoquery1.Parameters.ParamByName('SPName').Value:=edit20.text;
adoquery1.Open;
adoquery1.SQL.add('update SPlist set SPshuliang = SPshuliang - :xl where SPName=:SPName');
ADoquery1.Parameters.ParamByName('xl').Value:=edit16.text;
adoquery1.Parameters.ParamByName('SPName').Value:=edit20.text;
adoquery1.execsql;
end;
adoquery1.SQL.add( 'update SPshuliang set [SPshuliang - xl] where SPName from SPlist ');
ADoquery1.Parameters.ParamByName( 'xl ').Value:=edit16.text;
adoquery1.Parameters.ParamByName( 'SPName ').Value:=edit20.text;
adoquery1.execsql;
------------------------------------------------------------------------------------------
修改成:(注意执行以下语句时,对数量进行合法性校验)
adoquery1.sql.clear;
adoquery1.SQL.add( 'update SPlist set SPshuliang=SPshuliang-'+edit16.text+' where SPName='''+edit20.text+'''');
adoquery1.execsql;