Crystal Report从“Like”Sql传递存储过程参数

时间:2014-03-16 16:07:13

标签: sql vb.net crystal-reports

我在将存储过程参数传递给crystal report时遇到问题。我尝试传递参数,但结果不像我预期的那样。参数可以传递,但问题是参数的值必须正好是参数的值。在我的情况下,我想制作能够显示报告的报告" like"查询,因此参数可以是实数值上的一个,两个或其他字母。

我尝试过使用该组并在选择公式中记录,但结果相同,参数必须与该值完全相同,并且不能只是该值的字母成员的一部分。

我的桌子可能有点像这样:

employee table

id | name | address   | 
-----------------------
01 | Chloe| St. Rose  |
02 | Ann  | St. Orchid|

我的sql可能有点像这样:

create proc sp_search
@name varchar(50),
@address varchar(50)
as
select * from employee where name like '%'+@name+'%' 
and address like '%'+@address+'%'

用于传递参数的.net代码:

Sub show_search_employee()
    With Me
        Dim report As New employee_report
        report.SetDataSource(ds)
        report.SetParameterValue("@name", name.text) //name parameter
        report.SetParameterValue("@address", address.Text) //address parameter
        form_employee_report.crv_employee.ReportSource = report //set report source
    End With
End Sub

我的水晶报告公式(我只需双击数据库字段,输入' =',然后双击参数)

{sp_employee_report;1.name} like {?@name} and 
{sp_employee_report;1.address} like {?@address}

如果name参数和地址参数恰好是值,则可以显示结果,如果我想要显示' 01',我必须输入名称和地址'克洛伊'和' st。玫瑰&#39 ;.如果我只是设置名称' C'或地址“玫瑰”,没有显示任何价值。我想设置名称参数就像' C'或者' Ch'显示第一行,就像' Like'函数从sql工作。 谢谢你的回复

2 个答案:

答案 0 :(得分:1)

注意:这不是经过测试的代码

尝试这样的事情

{sp_employee_report;1.name} like "%"+{?@name}+"%" and 
{sp_employee_report;1.address} like "%"+{?@address}+"%"

答案 1 :(得分:0)

最后我得到了答案..经过长时间的搜索和浏览,解决方案是晶体报告公式(也许我认为)不能接受'%'对于我们的sql参数传递的'like'语法来水晶报道。所以我在公式上将'%'更改为'*',如下所示:

{sp_employee_report;1.name} like '*'+{?@name}+'*' and
{sp_employee_report;1.address} like '*'+{?@address}+'*'

我希望这可以帮助那些像我一样有问题的人