我在将存储过程参数传递给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工作。 谢谢你的回复
答案 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}+'*'
我希望这可以帮助那些像我一样有问题的人