我想使用带有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访问限制,我想运行更新查询而不将单个表拆分成多个表。
答案 0 :(得分:0)
问题是适配器是否为您自动生成更新查询。
此查询将如下所示:
UPDATE Column1 SET VALUE = 'foo'
WHERE Column2 = 'bar' AND Column3 = 'bar' AND ...(every col)... Column200 = 'bar'
您只需要使用WHERE子句中表的主键
自己指定Update查询