【问题标题】:SSRS Textbox action is executed only onceSSRS 文本框操作仅执行一次
【发布时间】:2018-02-20 08:12:50
【问题描述】:

我正在尝试创建在文本框中具有操作链接的报告,该链接将更新数据库中的记录。首先,我创建了 datasource,并启用了“在单个事务中执行”设置。我创建了 dataset,它使用参数调用 存储过程 然后指定参数: 我创建了最后一列是“Action”的表。

在 TextBox 属性中,在 Action 菜单中设置为转到同一报表并将参数值设置为表中的值:

问题是它只工作一次,如果我再次单击同一字段,则不会执行 procedure。我猜这个参数没有设置,但我不确定。

更新:

玩了一段时间后,我看到,该变量已设置,因此问题不在变量中。此外,如果我单击另一行,则该行将按预期更新。之后我也可以更新第一行,所以问题是我不能一次更新同一行两次。

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)
)

更新 2: 我能够解决这个问题。我已经添加了默认值 =NOW() 的内部日期时间变量,这迫使 SSRS 每次都刷新报告。

【问题讨论】:

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


    【解决方案1】:

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

    我已经完成了很多这样的报告,从未遇到任何问题。我怀疑您的工作流程不太正确。

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

    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

    这就是我要做的全部,我不使用单个事务或其他任何东西,我只是按照上面的方法进行操作。

    【讨论】:

    • 我在您提供的描述中找不到任何区别,唯一的参数是@code,默认值是'test'。在存储过程中,我有第一条语句,即 IF (@code = 'test') RETURN 1;。但是我已经将日志记录到它之前的语句中并且没有添加日志,因此没有执行该过程。所以,从一开始:当我打开报告时,我在日志中看到“测试”,然后我点击该行并在那里看到“proper_value”,然后我第二次点击那里没有记录。
    • 你能发布存储的过程代码吗?另外,当你最后一次运行它时,你的参数值显示了什么,它显示了你的期望吗?
    • 更新问题
    猜你喜欢
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多