为什么数据没有显示?

时间:2018-01-14 14:43:35

标签: sql-server delphi

sql server上的存储过程是:

ALTER PROCEDURE [dbo].[sp_archive] 
@p1 varchar(21)
AS
BEGIN
    SET NOCOUNT ON;
    SELECT * from audit where UpdateDate like '%@p1%'
END

UpdateDate是一个varchar(21)字段。

在Delphi中我有:

procedure TForm5.cxButton1Click(Sender: TObject);
begin
DataModule2.Archive.Params.ParamByName('p1').AsString := datetostr(cxDateEdit1.Date);
DataModule2.Archive.Prepare;
DataModule2.Archive.ExecProc;
end;

然而,如果我在cxDateEdit1中选择哪个数据(日期)存在的日期 在审计表中,不显示任何内容。 如果我在sql server上运行查询:

  

从AUDIT中选择*,其中UpdateDate类似'%30.12.2017%'

显示数据。 所以我猜cxdataedit显示的dateformat有问题。即使我将cxdateedit的显示和编辑格式更改为:dd.mm.yyyy 我仍然无法检索数据。我在这里缺少什么?

我也尝试过:

  

DataModule2.Archive.Params.ParamByName('p1')。AsString:=   cxDateEdit1.Text;

但无济于事......

2 个答案:

答案 0 :(得分:0)

让它发挥作用。将存储过程更改为:

  

SELECT * from audit其中UpdateDate类似于+ @ p1 +'%'

将cxDateEdit显示和编辑格式更改为:

  

DD.MM.YYYY

在Delphi中我用过:

  

DataModule2.Archive.Params.ParamByName(' p1')。AsString:=   cxDateEdit1.Text;

答案 1 :(得分:0)

%放在引号中,然后将变量@p1放在它们之间,如下所示

SELECT * from audit where UpdateDate like '%'+@p1+'%'