查询分析器里面没有有关问题,在ADOQuery.sql.add()种为什么就出错呢
查询分析器里面没有问题,在ADOQuery.sql.add()种为什么就出错呢?
SELECT * FROM AddProduct WHERE (KeHuName = '中国饭店 ') AND (Product = '佛跳墙) AND (AddDate =(SELECT MAX(AddDate) FROM AddProduct where (KeHuName = '中国饭店 ') AND (Product = '佛跳墙)))
在Delphi中我是这样写的:
DM.ADOQuery5.Close;
DM.ADOQuery5.SQL.Clear;
DM.ADOQuery5.SQL.Add( 'SELECT * FROM AddProduct WHERE (KeHuName =:KHN) AND (Product =:PN) AND (AddDate =(SELECT MAX(AddDate) FROM AddProduct where (KeHuName = :KHN) AND (Product = :PN))) ');
DM.ADOQuery5.Parameters.ParamByName( 'KHN ').Value:=ComboBox4.Text;
DM.ADOQuery5.Parameters.ParamByName( 'PN ').Value:=CheckBox4.Caption;
DM.ADOQuery5.Open;
我感觉参数没有错啊。可是运行的时候出现:“不正常地定义参数对象,提供了不一致或不完整的信息”
------解决方案--------------------
DM.ADOQuery5.SQL.Add()参数不能为有参数的sql语句。
写法如下:
DM.ADOQuery5.SQL.Add( 'SELECT * FROM AddProduct WHERE (KeHuName ' + ComboBox4.Text + ') AND (Product = ' + CheckBox4.Caption + ') AND (AddDate =(SELECT MAX(AddDate) FROM AddProduct where (KeHuName = ' + ComboBox4.Text + ') AND (Product = ' + CheckBox4.Caption + '))) ');
------解决方案--------------------
看看这样改行不
DM.ADOQuery5.SQL.Clear;
DM.ADOQuery5.SQL.Add( 'SELECT * FROM AddProduct WHERE (KeHuName =:KHN) AND (Product =:PN) AND (AddDate =(SELECT MAX(AddDate) FROM AddProduct where (KeHuName = :KHN1) AND (Product = :PN1))) ');
DM.ADOQuery5.Parameters.ParamByName( 'KHN ').Value:=ComboBox4.Text;
DM.ADOQuery5.Parameters.ParamByName( 'PN ').Value:=CheckBox4.Caption;
DM.ADOQuery5.Parameters.ParamByName( 'KHN1 ').Value:=ComboBox4.Text;
DM.ADOQuery5.Parameters.ParamByName( 'PN1 ').Value:=CheckBox4.Caption;
DM.ADOQuery5.Open;
------解决方案--------------------
DM.ADOQuery5.Close;
DM.ADOQuery5.SQL.Clear;
DM.ADOQuery5.Text:= 'SELECT * FROM AddProduct WHERE (KeHuName = '+Quotedstr(ComboBox4.Text)+ ') AND (Product = '+Quotedstr(CheckBox4.Caption)+ ') AND (AddDate =(SELECT MAX(AddDate) FROM AddProduct where (KeHuName = '+Quotedstr(ComboBox4.Text)+ ') AND (Product = '+Quotedstr(CheckBox4.Caption)+ '))) ';
DM.ADOQuery5.Open;
------解决方案--------------------
哈哈...楼主想省事呀???
DM.ADOQuery5.Close;
DM.ADOQuery5.SQL.Clear;
DM.ADOQuery5.SQL.Add( 'SELECT * FROM AddProduct WHERE (KeHuName =:KHN) AND (Product =:PN) AND (AddDate =(SELECT MAX(AddDate) FROM AddProduct where (KeHuName = :KHN) AND (Product = :PN))) ');
DM.ADOQuery5.Parameters.ParamByName( 'KHN ').Value:=ComboBox4.Text;
SELECT * FROM AddProduct WHERE (KeHuName = '中国饭店 ') AND (Product = '佛跳墙) AND (AddDate =(SELECT MAX(AddDate) FROM AddProduct where (KeHuName = '中国饭店 ') AND (Product = '佛跳墙)))
在Delphi中我是这样写的:
DM.ADOQuery5.Close;
DM.ADOQuery5.SQL.Clear;
DM.ADOQuery5.SQL.Add( 'SELECT * FROM AddProduct WHERE (KeHuName =:KHN) AND (Product =:PN) AND (AddDate =(SELECT MAX(AddDate) FROM AddProduct where (KeHuName = :KHN) AND (Product = :PN))) ');
DM.ADOQuery5.Parameters.ParamByName( 'KHN ').Value:=ComboBox4.Text;
DM.ADOQuery5.Parameters.ParamByName( 'PN ').Value:=CheckBox4.Caption;
DM.ADOQuery5.Open;
我感觉参数没有错啊。可是运行的时候出现:“不正常地定义参数对象,提供了不一致或不完整的信息”
------解决方案--------------------
DM.ADOQuery5.SQL.Add()参数不能为有参数的sql语句。
写法如下:
DM.ADOQuery5.SQL.Add( 'SELECT * FROM AddProduct WHERE (KeHuName ' + ComboBox4.Text + ') AND (Product = ' + CheckBox4.Caption + ') AND (AddDate =(SELECT MAX(AddDate) FROM AddProduct where (KeHuName = ' + ComboBox4.Text + ') AND (Product = ' + CheckBox4.Caption + '))) ');
------解决方案--------------------
看看这样改行不
DM.ADOQuery5.SQL.Clear;
DM.ADOQuery5.SQL.Add( 'SELECT * FROM AddProduct WHERE (KeHuName =:KHN) AND (Product =:PN) AND (AddDate =(SELECT MAX(AddDate) FROM AddProduct where (KeHuName = :KHN1) AND (Product = :PN1))) ');
DM.ADOQuery5.Parameters.ParamByName( 'KHN ').Value:=ComboBox4.Text;
DM.ADOQuery5.Parameters.ParamByName( 'PN ').Value:=CheckBox4.Caption;
DM.ADOQuery5.Parameters.ParamByName( 'KHN1 ').Value:=ComboBox4.Text;
DM.ADOQuery5.Parameters.ParamByName( 'PN1 ').Value:=CheckBox4.Caption;
DM.ADOQuery5.Open;
------解决方案--------------------
DM.ADOQuery5.Close;
DM.ADOQuery5.SQL.Clear;
DM.ADOQuery5.Text:= 'SELECT * FROM AddProduct WHERE (KeHuName = '+Quotedstr(ComboBox4.Text)+ ') AND (Product = '+Quotedstr(CheckBox4.Caption)+ ') AND (AddDate =(SELECT MAX(AddDate) FROM AddProduct where (KeHuName = '+Quotedstr(ComboBox4.Text)+ ') AND (Product = '+Quotedstr(CheckBox4.Caption)+ '))) ';
DM.ADOQuery5.Open;
------解决方案--------------------
哈哈...楼主想省事呀???
DM.ADOQuery5.Close;
DM.ADOQuery5.SQL.Clear;
DM.ADOQuery5.SQL.Add( 'SELECT * FROM AddProduct WHERE (KeHuName =:KHN) AND (Product =:PN) AND (AddDate =(SELECT MAX(AddDate) FROM AddProduct where (KeHuName = :KHN) AND (Product = :PN))) ');
DM.ADOQuery5.Parameters.ParamByName( 'KHN ').Value:=ComboBox4.Text;