我有一个表,我使用TableAdapter查询配置向导(VS2010)创建自定义查询。查询是:
SELECT AssociateName, TimeField, InOut, Reason, [Key] FROM PunchEventTable
WHERE (TimeField =
(SELECT MAX(TimeField) AS Expr1
FROM PunchEventTable PunchEventTable_1
WHERE (AssociateName LIKE ?))) AND (AssociateName LIKE ?)
它生成的代码是:
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0"), _
Global.System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter"), _
Global.System.ComponentModel.DataObjectMethodAttribute(Global.System.ComponentModel.DataObjectMethodType.Fill, false)> _
Public Overloads Overridable Function FillByLast(ByVal dataTable As TTDataSet.PunchEventTableDataTable, ByVal AssociateName As String) As Integer
Me.Adapter.SelectCommand = Me.CommandCollection(2)
If (AssociateName Is Nothing) Then
Me.Adapter.SelectCommand.Parameters(0).Value = Global.System.DBNull.Value
Else
Me.Adapter.SelectCommand.Parameters(0).Value = CType(AssociateName,String)
End If
If (Me.ClearBeforeFill = true) Then
dataTable.Clear
End If
Dim returnValue As Integer = Me.Adapter.Fill(dataTable)
Return returnValue
End Function
但是我发现这不起作用,因为每个&#39;?&#39;在查询中被视为一个单独的参数,所以我真正需要的是额外的行:
Me.Adapter.SelectCommand.Parameters.Add(New System.Data.OleDb.OleDbParameter)
Me.Adapter.SelectCommand.Parameters(1).Value = CType(AssociateName, String)
设置第二个&#39;?&#39;到AssociateName也是如此。如Designer.vb文件顶部所示,此文件是自动生成的,因此我的更改并不总是持久存在(因此手动执行此操作听起来像一个可怕的想法)。任何人都可以建议如何正确生成此代码吗?
谢谢,
大卫
答案 0 :(得分:0)
我删除了designer.vb文件,然后正确重新生成。我不知道你应该如何触发再生,但似乎这不应该持续几乎与它一样长(在几次构建之后等),但这次生成了正确的代码。