强类型数据集设置变量 TOP 值

Strong Typed Dataset set variable TOP value

我的项目中的强类型数据集查询有问题。

我有这样的查询:

SELECT * FROM dbo.PositionData WHERE ID_Tracker=@ID_Tracker

工作正常,数据table 函数已正确生成。

现在我想在查询中添加一个 TOP 值,它可以是可变的。这可能看起来像这样,但这不起作用:

SELECT TOP @TopValue * FROM dbo.PositionData WHERE ID_Tracker=@ID_Tracker

还有其他方法可以完成这个任务吗?

我用我的 table 适配器的部分 class 以某种方式尝试了它,但我不知道如何访问正确的命令(我在 CommandCollection 中看到我的自定义命令,但我不知道如何评估正确的命令来替换 CommandText 中的内容)。

是否可以使用强类型数据集来做到这一点?

任何帮助都会很棒。 非常感谢。

此致, 西尔文

你可以把它放在括号里:

SELECT TOP (@TopValue) * FROM dbo.PositionData WHERE ID_Tracker=@ID_Tracker

这是有效的,并为 table-adapter 的 SqlCommand 正确生成了 int 参数。


根据您的评论,如果可以在强类型 DataSet 中参数化 ORDER BY 的 sort-direction。是的,有可能:

SELECT TOP @TopValue * FROM dbo.PositionData WHERE ID_Tracker=@ID_Tracker
ORDER BY 
    CASE WHEN @OrderDirection = 'ASC'  THEN [Time] END ASC, 
    CASE WHEN @OrderDirection = 'DESC' THEN [Time] END DESC

但是您必须手动将参数添加到 command-collection,因为 visual studio 不需要。因此

  • right-click 命令和
  • 点击properties
  • 单击 parameters(在屏幕截图的底部)

添加 @OrderDirection 参数,如下所示:

但也许您应该使用两种不同的方法或使用 stored-procedure。