SSRS文本框操作仅执行一次

时间:2018-02-20 08:12:50

标签: sql-server reporting-services ssrs-2012

我正在尝试创建将在文本框中具有操作链接的报告,该文档框将更新数据库中的记录。首先,我使用" 在单一交易中执行"创建了数据源。设置。我创建了使用param调用存储过程 dataset enter image description here 然后指定参数: enter image description here 我创建了最后一列是" Action"的表格。

在TextBox属性中,在Action菜单中设置为转到同一报表并将param值设置为表中的值: enter image description here

问题是它只能工作一次,如果我再次点击同一个字段,则不会执行过程。我想那个参数没有设定,但我不确定。

更新

经过一段时间的游戏后,我看到,该变量已设置,因此问题不在变量中。此外,如果我单击另一行,则此行将按预期更新。之后我也可以更新第一行,所以问题是我无法在滚动中两次更新同一行。

CREATE PROCEDURE [dbo].[change_salesperson_status]
    @code AS CHAR(5)
AS
    BEGIN

       INSERT INTO dbo.test VALUES (@code);
        IF (@code = 'test') RETURN 1;

        UPDATE dbo.salespersons
           SET status_code = CASE WHEN status_code = 'I' THEN 'A' ELSE 'I' END
         WHERE code = @code;
    END;


GO

CREATE TABLE dbo.test
(
    a VARCHAR(200)
)

UPDATE2: 我能够解决这个问题。我添加了内部日期时间变量,默认值为= NOW(),此强制SSRS每次都刷新报告。

1 个答案:

答案 0 :(得分:1)

这不是一个真正的答案,它是我如何做到这一点的指南,但是太久不能作为评论。

我已完成了其中一些报告,从未遇到过任何问题。我怀疑你的工作流程不太合适。

我通常做的是编写一个数据集查询,该查询接受更新数据库的参数,除非传递默认值。 我不确定你要做什么,但如果我们举一个简单的例子,创建一个名为myReport的报告,如果点击一列,员工就会处于非活动状态,那么我们可能会有一个简单的表< / p>

EmpID    EmpName    MakeInactive
  1      Dave         click
  2      Bob          click

数据集看起来像这样......

SET NOCOUNT ON
IF @EmployeeID > 0
        BEGIN
            UPDATE myTable SET Active = 0 WHERE EmpID = @EmployeeID
        END

    SELECT EmpID, EmpName FROM myTable

myReport报告在这个简单的情况下只有一个参数@EmployeeID,默认值为-1所以当我们第一次运行报告时,不会发生任何更新。

在最后一列中,您可以按原样执行操作,即将操作设置为调用相同的报告(myReport),并将@EmployeeID参数设置为EmpID第一栏。

这就是我要做的所有事情,我不会使用单笔交易或其他任何事情,我只是按照上述方式进行操作。