adoquery参数传递错误
DAHelper.unit单元定义ExeSqlQuery函数,用于其它模块调用执行sql,其定义如下;Control_BrigeList.unit单元包含DAHelper.unit单元,其中定义一个函数QueryBrige调用ExeSqlQuery函数,其定义如下;另一窗体中的查询按钮单击事件中执行
procedure TFrm_BrigeList.Btn_QueryClick(Sender: TObject);
begin
self.DataS_BrigeList.DataSet:=control_BrigeList.QueryBrige;
dbgrid_BrigeList.DataSource:=self.DataS_BrigeList;//dbgrid.DataSource属性赋值为DataSource控件;
control_Brigelist.QueryBrige.Parameters.AddParameter;
control_BrigeList.QueryBrige.Parameters.ParamValues['name']:=edt_query.Text ;//参数anme赋值为edit.text属性值
control_Brigelist.QueryBrige.Open;
end;
调试没有错误,但是dbgrid返回却是空行,请大家帮忙查找错误,多谢
function QueryBrige:TADOQuery;
var
sql:string;
begin
sql:='select * from 桥涵设施普查基层表 where 桥梁名称=:name' ;
result:=DAHelper.ExeSqlQuery(sql);
end;
// 执行有返回值的sql语句,返回得到的ADOQuery;
function ExeSqlQuery(sql:string):TADOQuery;
implementation
function ExeSqlQuery(sql:string):TADOQuery;
var
query:TADOQuery;
begin
try
//判断连接状态是否关闭, 若关闭则打开
if stClosed in Config.ADOCon.State then
Config.ADOCon.Open;
query:=TADOQuery.Create(nil);
query.Connection:=Config.ADOCon;
query.Close;
query.SQL.Clear;
query.SQL.Add(sql);
query.Open;
except
result:=nil;
end;
result:=query;
end;
[解决办法]
先检查是否有数据,记得要动手去调试,不要看到现象就来问,这个问题很容易跟踪的,跟踪数据集是否打开,若打开是否有数据
[解决办法]
用Query.RecordCount来验证是否有数据。