我用树形显示产品,item为产品名称,subitem为此产品编号,型号,产地。所有item来源是sql server数据库里的表。所以用adoquery。我还有一个增加按钮,4个edit框,可以在客户端上填写相对应的edit来增加产品及其相关编号,型号,产地等信息,最后点击保存按钮保存。但是此时问题来了:如果用户新增产品时,此产品已存在,那么我就需要提醒用户此产品已存在。我想用以下语句实现判断。
with adoquery2 do
begin
close;
sql.clear;
sql.add('select plu,name,style,chandi from dbo.Tproduct ');
sql.add(' where plu = '''+ edit1.text(此框为编号输入框)+ '''');
open;
end;
我想通过以上语句,将用户要添加的产品的编号在数据库里搜索,如果产品已存在,则上述查询语句结果必不为空,那么我提示:‘此产品已存在’,如果为空,则说明此编号在数据库中并不存在,则为新产品,可以添加。
现在,我的问题就是:以用户输入的产品编号为条件在sql server数据库中查询后,如何判断adoquery查询的结果是否为空?
各位最好说的详细些,我是自学新手,很多都不知道。各位最好顺便说一下adoquery中的parameters何parambyname()什么意思。我对他们的用法模棱两可。
1、使用adoquery2.IsEmpty判断是否为空
或者使用if adoquery2.RecordCount>0 then
if not(adoquery2.IsEmpty) then
begin
ShowMessage("此产品已存在");
exit;
end;
2、 SQL语句中引入参数之后,在执行SQL语句之前就必须给参数赋值。如何赋值呢?这就要用到ADOQuery组件的Parameters属性。该属性是一个下标从0开始的数组:
Parameters[0]、Parameters[1]、Parameters[2]、…、
其中的每个数组元素与ADOQuery组件的SQL语句中的参数相对应,例如要给SQL语句中的第一个参数赋值,可以执行如下语句:
ADOQuery1.Parameters[0].Value:=<参数值>
要给SQL语句中的第二个参数赋值,可以执行如下语句:
ADOQuery1.Parameters[1].Value:=<参数值>
以此类推 …
除了用Parameters[0].Value 、Parameters[1].Value 等来给SQL语句中的参数赋值外,还可以使用如下语句:
Parameters.ParamByName(<参数名>).Value:=<参数值>
来给参数赋值。例如,例Parameters[0].Value:=edit1.Text;可以改为:
Parameters.ParamByName(‘XianShi’).Value:=edit1.Text;
很明显,后一种方式比前一种更直观一些。
SQL命令中带有多个参数的情形
SQL命令中可以带有多个参数,例如:某个Query组件,为它编写如下的动态SQL语句:
Insert Into Customer(CustNo,Name,Country) Values(:CustNo ,:Name ,:Country)
对于上述这条动态SQL语句中的三个参数,可以利用Query的Params属性为参数赋值:
Query.Params[0].AsString:=”1998” ;
Query.Params[1].AsString:=”AAA” ;
Query.Params[2].AsString:=”China”;
上述语句将把“1998”赋给参数CustNo,“AAA”赋给参数Name,“China”赋给参数Country。
或者使用if adoquery2.RecordCount>0 then
if not(adoquery2.IsEmpty) then
begin
ShowMessage("此产品已存在");
exit;
end;
2、 SQL语句中引入参数之后,在执行SQL语句之前就必须给参数赋值。如何赋值呢?这就要用到ADOQuery组件的Parameters属性。该属性是一个下标从0开始的数组:
Parameters[0]、Parameters[1]、Parameters[2]、…、
其中的每个数组元素与ADOQuery组件的SQL语句中的参数相对应,例如要给SQL语句中的第一个参数赋值,可以执行如下语句:
ADOQuery1.Parameters[0].Value:=<参数值>
要给SQL语句中的第二个参数赋值,可以执行如下语句:
ADOQuery1.Parameters[1].Value:=<参数值>
以此类推 …
除了用Parameters[0].Value 、Parameters[1].Value 等来给SQL语句中的参数赋值外,还可以使用如下语句:
Parameters.ParamByName(<参数名>).Value:=<参数值>
来给参数赋值。例如,例Parameters[0].Value:=edit1.Text;可以改为:
Parameters.ParamByName(‘XianShi’).Value:=edit1.Text;
很明显,后一种方式比前一种更直观一些。
SQL命令中带有多个参数的情形
SQL命令中可以带有多个参数,例如:某个Query组件,为它编写如下的动态SQL语句:
Insert Into Customer(CustNo,Name,Country) Values(:CustNo ,:Name ,:Country)
对于上述这条动态SQL语句中的三个参数,可以利用Query的Params属性为参数赋值:
Query.Params[0].AsString:=”1998” ;
Query.Params[1].AsString:=”AAA” ;
Query.Params[2].AsString:=”China”;
上述语句将把“1998”赋给参数CustNo,“AAA”赋给参数Name,“China”赋给参数Country。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2010-07-24
通过adoquery2.RecordCount是否为0可以判断有没有查到想要的值
第2个回答 2010-07-24
加上一句判断
if not ADOQuery.IsEmpty then
//不是空
else
//是空
if not ADOQuery.IsEmpty then
//不是空
else
//是空