使用 ReportViewer 控件和 Report w/Oracle 时指定 "where clause"

Specify a "where clause" when using a ReportViewer control and Report w/ Oracle

我正在尝试使用 Oracle DB 在本地处理模式下将 ReportViewer 控件与报表 (RDLC) 文件一起使用,但我不知道如何在查询中指定 "where clause"。我只想 return 1 行,因为我的报告将仅基于查询中的 1 行。

这是我到目前为止所做的:

  1. 我在 Visual Studio 2013 年创建了一个 C# Windows 表单应用程序 (.NET 4.5)。
  2. 我添加了一个名为 DataSet1 的数据集。
  3. 我向 DataSet 添加了一个 TableAdapter 并创建了一个到 Oracle 的连接并添加了一个查询。这是查询 "select * from Lei_Defect_Log"。 (它拉 在列名中。)
  4. 我在项目中添加了一个名为 Report1 的报表。
  5. 在"Report Data"window上,我将Dataset设置为我添加的数据集 多于。
  6. 我从报告数据中拖出一些任意列 window Dataset1 到 Report1,这样我就可以验证它是否正常工作。
  7. 我在项目的Form1中添加了一个名为reportViewer1的ReportViewer。我设置了 上面创建的 reportViewer1 到 Report1 的报告。

现在,当我 运行 应用程序时,报表显示来自查询的数据(必须是第一行 returned)。但是我从 (Lei_Defect_Log) 中提取的 table 有数千行,我想在我的查询中将 where 子句指定为仅 return 1 个特定行。 (我想在代码中这样做,而不是提示用户这样做。)

我尝试在 TableAdapter 查询中添加 where 子句,如下所示 "select * from Lei_Defect_Log where RA_SN = :RA_SN_PARAM" 这对于 Oracle 来说是正确的查询,但我收到以下错误:

The wizard detected the following problems when configuring the TableAdapter: "Fill": Details: Generated SELECT statement. Specified argument was out of the range of valid values.

它允许我单击“确定”,但如果我单击“确定”,我的数据集将不会填充列名称。所以不去了。

我已经在这上面工作了好几个小时了……我卡住了。

我所拥有的一切似乎都有效,但我只需要能够添加一个 where 子句来指定我需要的行。

那么我如何指定 where 子句(在代码或设计器中,我不希望提示用户输入它)以便我的查询 return 只是一个 row/record?

找到了!

在 DataSet 中,我右键单击 TableAdapter,然后在打开的菜单上单击 "Configure"。我像上面那样将参数添加到查询中,然后单击“完成”,然后单击“确定”并忽略错误。然后我右键单击显示 "FILL, GETDATA" 的文本并单击“属性”。现在转到主要属性 window,它应该是 "Fill Query" 的属性。查找参数 属性 并打开集合并将 DbType 从 Object 设置为 String.. 它起作用了!!!

查看此 WEB PAGE 的屏幕截图(我会发布但需要更多的 SO cred 才能这样做。)