delphi 如何使用参数连接dbgrid和adoquery

xa9qqrwz  于 2023-03-02  发布在  其他
关注(0)|答案(1)|浏览(220)

我试图使用参数(开始日和结束日)在 Delphi 7的Adoquery,但问题是当我点击按钮过滤器(假设过滤dbgrid使用sdateedit1.datesdateedit2.date)我得到了一个空行,请帮助我

  • 我尝试检查adoquery是否已启用
  • 我尝试检查连接字符串,sql查询正确
  • 我试着检查dbgriddatasource是否使用了正确的adoquery
vecaoik1

vecaoik11#

TDBGrid用于查看与之链接的数据集中的可见记录(通过DataSource属性)。因此,如果要查看某些记录(通过筛选器),必须在数据集控件中设置筛选器(TADOQuery或其他:TClient数据集、TFDemTable、TFDQuery等)。
要在Delphi数据集中设置过滤器,必须在Filter属性中编写SQL过滤语句,如以下代码所示:

begin
ADOQuery1.Filtered := False;
ADOQuery1.Filter := 'State = ' + QuotedStr('CA') + ' OR ' +
'State = ' + QuotedStr('CA');
ADOQuery1.Filtered := True;
end;

有关设置过滤器的详细信息,请查看以下链接:

另一方面,ADODB数据集中的参数是可以合并到参数化SQL语句中的变量(就像函数Format()中的格式化字符串)。这些参数是TParameter对象,其值可以在设计时或运行时赋值,然后通过替换相应的参数将其包含在语句中。SQL语句中的参数以:开头例如,在以下语句SELECT * FROM customer WHERE customer_id = :AnId;中,:AnId字符串将替换为名为AnId的参数的值。
首先必须在TADOQuery中设置一个参数化SQL语句,然后通过从语句中查找同名参数来创建参数,并为参数分配类型和值,以便在执行之前在语句中设置参数的格式。

var
  Param : TParameter;

begin
  ADOQuery1.SQL.Add(SQLStr);

  Param := ADOQuery.Parameters.ParamByName('AnId');
  Param.DataType := ftInteger;
  Param.Value := 1;
end;

您可以检查此代码示例,以了解如何在TADOQuery中的查询中使用参数:https://docwiki.embarcadero.com/CodeExamples/Alexandria/en/ADOQuery_(Delphi)
下面是有关在查询中使用参数的更多信息:https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Using_Parameters_in_Queries

相关问题