定义的字段太多 Access DB Oledb

Posted

技术标签:

【中文标题】定义的字段太多 Access DB Oledb【英文标题】:Too many fields defined Access DB Oledb 【发布时间】:2021-06-10 09:40:00 【问题描述】:

你好,我的问题是这样的。当我想更新 Access 数据库中的数据记录时,我收到错误“定义的字段太多”。我自己创建更新字符串。

string query = "";
query = "UPDATE Example SET Dateiname = '" + listofObjects[i].fileName
                                                              + "', Dateidatum = '" + listofObjects[i].fileDate
                                                              + "', DateidatumString = '" + listofObjects[i].dateTimeString
                                                              + "', VolleStundeString = '" + listofObjects[i].fullHourString
                                                              + "', Datum = '" + listofObjects[i].date
                                                              + "', Transportiert = '" + listofObjects[i].transported
                                                              + "', Erfasst = '" + listofObjects[i].detected
                                                              + "', Transportnummer = '" + listofObjects[i].transportNum
                                                              + "', Bearbeitet = '" + listofObjects[i].processed
                                                              + "', SequenceNumber = '" + listofObjects[i].sequenceNum
                                                              + "', File_Delete = '" + listofObjects[i].file_Delete + "'";



                    for (int e = 0; e < anzahl; e++)
                    
                        query += ", WERT_" + (e + 1) + " = '" + listofObjects[i].LineValueObjects[e].value
                                                             + "', WERT_" + (e + 1) + "_O = '" + listofObjects[i].LineValueObjects[e].value_o
                                                             + "', WERT_" + (e + 1) + "_Q = '" + listofObjects[i].LineValueObjects[e].value_q
                                                             + "', WERT_" + (e + 1) + "_Q_VS = '" + listofObjects[i].LineValueObjects[e].value_q_full
                                                             + "', WERT_" + (e + 1) + "_VS = '" + listofObjects[i].LineValueObjects[e].value_full + "'";
                    
                    
                    query += " WHERE Dateiname = '" + listofObjects[i].fileName + "'";

                    dbm.updateDB(query);

我还没有找到合适的答案

【问题讨论】:

docs.microsoft.com/en-us/office/troubleshoot/access/… 不是这个。原因 Microsoft Access 用于跟踪表中字段数的内部列计数已达到 255,即使表中的字段可能少于 255 个。发生这种情况的原因是,当您删除字段时,Access 不会更改内部列数。 Access 还会为您修改其属性的每个字段创建一个新字段(将内部列数增加 1)。 啊,好吧,这是否意味着如果我更频繁地更新条目,那么即使我只编辑 40 列,它也会一直计数,因此有时会超过 255? 我了解,即使您编辑 40 列,当您尝试添加新字段时,它也会计数 +1。所以对于 1 行,它可能是 3 或 4 或 5 或 6... 我理解它的意思是访问限制为 255 个字段。但是,如果您使用 180 个字段进行更新,则它不起作用,因为对每个更新的字段的访问需要一个额外的字段来获取更新的值。换句话说,您只有 127 个字段可以在更新语句中更新。 是的。这是。所以我想你解决了。 【参考方案1】:

Microsoft Docs 这不是吗?

导致 Microsoft Access 用于跟踪表中字段数的内部列计数已达到 255,即使表中的字段可能少于 255 个。发生这种情况的原因是,当您删除字段时,Access 不会更改内部列数。 Access 还会为您修改其属性的每个字段创建一个新字段(将内部列数增加 1)。

【讨论】:

以上是关于定义的字段太多 Access DB Oledb的主要内容,如果未能解决你的问题,请参考以下文章

更新 Access db 中表的 SINGLE 字段

现有 Access DB 上的 C# 附件字段更新

根据 Access DB 中另一个表中的多条记录计算字段的值

JET OLEDB 参数如何将字符串与 Access DB 中的文本字段进行比较

尝试从 MS Access DB 检索字段值时,Java 中的希腊词作为问号 [重复]

vb如何获取access数据库的所有表和字段名??