查询过于复杂的访问异常

时间:2014-07-07 09:46:47

标签: vb.net ms-access

我想使用带有ms-access的vb.net在单个查询中更新表中的200列。有没有其他方法来更新表或将表拆分为两部分,然后运行查询?

//Function in my Module
Public Function selectdata(ByVal str as String) As DataTable
//str for passing the string which returns datatable in my function
cmd = new OleDbCommand(str,con)
adp = new OleDbAdapter(cmd)
cmdb = new OleDbCommandBuilder(adp)
adp.fill(odt)
Return odt
End Function

Datatable返回包含200列的表

//Onclick button Event
Dim dt As New DataTable
query = "SELECT * FROM tblName WHERE tableID = " & tb.Text
dt = selectdata(query)
{
    //My field values to be updated
}

adp.Update(dt)

在此之后它会捕获“查询过于复杂”

的例外情况

我应该怎么做才能拆分表并将其更新为两部分,因为127是在单个Update查询中更新字段的Ms访问限制,我想运行更新查询而不将单个表拆分成多个表。

1 个答案:

答案 0 :(得分:0)

问题是适配器是否为您自动生成更新查询。

此查询将如下所示:

UPDATE Column1 SET VALUE = 'foo' 
WHERE Column2 = 'bar' AND Column3 = 'bar' AND ...(every col)... Column200 = 'bar'

您只需要使用WHERE子句中表的主键

自己指定Update查询