好; close; sql.clear; sql.Add('delete from xx where xxmc=:xxmc and njbh=:nj'); prepare; parambyname('xxmc').asstring:=combobox1.text; parambyname('nj').asstring:=combobox2.text; execsql; open;//假如没有这句下面的语句不能执行,原因:DATASET CLOSE; 假如有这句运行出错,句柄问题 locate('xxmc;njmc',vararrayof([combobox1.text,combobox2.text]),[loCaseInsensitive]);
在open前,应该重新获得数据集,应加上 .... close; sql.clear; sql.Add('select field1,field2 from table ');//括号中加的应是你执行删除前的sql语句,这里只是随便加的语句 open; ..... 或则用另一个Query with Query do begin close; sql.clear; sql.Add('delete from xx where xxmc=:xxmc and njbh=:nj'); prepare; parambyname('xxmc').asstring:=combobox1.text; parambyname('nj').asstring:=combobox2.text; execsql; end;
close; sql.clear; sql.Add('delete from xx where xxmc=:xxmc and njbh=:nj'); prepare; parambyname('xxmc').asstring:=combobox1.text; parambyname('nj').asstring:=combobox2.text; execsql; open;//假如没有这句下面的语句不能执行,原因:DATASET CLOSE; 假如有这句运行出错,句柄问题 locate('xxmc;njmc',vararrayof([combobox1.text,combobox2.text]),[loCaseInsensitive]); 加引号啊。 parambyname('xxmc').asstring:=#39+combobox1.text+#39; parambyname('nj').asstring:=#39+combobox2.text+#39;
一半要
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add();
adoquery1.open; 或 adoquery1.execsql
如果返回的不对应任何cursor,就用execute
adoquery1.sql.clear;
adoquery1.sql.add();
adoquery1.active := true; 就ok了,
adoquery1.sql.clear;
adoquery1.sql.add();
adoquery1.active := true; 就ok了,
ExecSQL 与 Open 的区别:
1、ExecSQL 用于不需返回结果集!如:Insert、Delete等语句;
2、反之,Open则需返回结果集用!如:Select语句!
-------------------------------------------------------乖~~别悲伤了 ~~ 嘻嘻 ^o^
query1.close;
query1.sql.clear;
query1.sql.add()
query1.execsql;
的格式我用过。
看看你其他控件的属性有没有问题
close;
sql.clear;
sql.Add('delete from xx where xxmc=:xxmc and njbh=:nj');
prepare;
parambyname('xxmc').asstring:=combobox1.text;
parambyname('nj').asstring:=combobox2.text;
execsql;
open;//假如没有这句下面的语句不能执行,原因:DATASET CLOSE;
假如有这句运行出错,句柄问题
locate('xxmc;njmc',vararrayof([combobox1.text,combobox2.text]),[loCaseInsensitive]);
execsql;
close;
open;
试试
execsql;
close;
open;
试试
是干什么用的?
能说说吗?
....
close;
sql.clear;
sql.Add('select field1,field2 from table ');//括号中加的应是你执行删除前的sql语句,这里只是随便加的语句
open;
.....
如果多条,是否可一条条的读取
不是还有filter吗/
有什么区别?
FILTER应该是列表吧
....
close;
sql.clear;
sql.Add('select field1,field2 from table ');//括号中加的应是你执行删除前的sql语句,这里只是随便加的语句
open;
.....
或则用另一个Query
with Query do
begin
close;
sql.clear;
sql.Add('delete from xx where xxmc=:xxmc and njbh=:nj');
prepare;
parambyname('xxmc').asstring:=combobox1.text;
parambyname('nj').asstring:=combobox2.text;
execsql;
end;
delete后clear原query里的语句或另用一个query作select选择xx表里的数据后再用locate定位。
sql.clear;
sql.Add('delete from xx where xxmc=:xxmc and njbh=:nj');
prepare;
parambyname('xxmc').asstring:=combobox1.text;
parambyname('nj').asstring:=combobox2.text;
execsql;
open;//假如没有这句下面的语句不能执行,原因:DATASET CLOSE;
假如有这句运行出错,句柄问题
locate('xxmc;njmc',vararrayof([combobox1.text,combobox2.text]),[loCaseInsensitive]);
加引号啊。
parambyname('xxmc').asstring:=#39+combobox1.text+#39;
parambyname('nj').asstring:=#39+combobox2.text+#39;