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;
但无济于事......
答案 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+'%'