完全免责声明:我是一个完整的C#< - > DB noob。我对C#并不擅长,而且我对Access并不苛求,但将两者融为一体对我来说是新的。
在我的项目中,我正在使用OleDB / ADO.Net(我想 - 老实说,我只是用互联网的话来说)和Visual Studio内置的DataSource向导来处理Access数据库。 / p>
一切似乎[终于]正常工作,直到我进行验证。在验证时,我相信程序会尝试针对数据库验证DataSet,这就是我的错误发生的地方 - 我有一个似乎不想验证的计算字段。
我希望能够从推送的更新中排除该字段。
所以我的保存代码就是这样:
private void saveDatabase()
{
this.Validate();
this.standardizedPatientsBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.hSS_SPsDataSet);
}
当我验证时,它会抛出此错误:
System.Data.OleDb.OleDbException (0x80040E21): Cannot update 'FullName'; field not updateable.
[... a list of all the methods where it breaks, many of which are called behind the scenes...]
我知道为什么它不可更新 - 它是一个计算字段 - 但我无法弄清楚的是如何忽略该字段。
答案 0 :(得分:1)
您很可能必须手动编辑与TableAdapter关联的UpdateCommand(以及InsertCommand),以便在DataSet中为所述DataTable编辑。
您可以使用图形查询构建器从更新中删除FullName字段并插入查询。
我不知道这可以自动为Access计算字段完成。我可能错了。
干杯