Слишком много полей определено в базе данных доступа Oledb

#c# #database #ms-access #oledb

Вопрос:

Здравствуйте, моя проблема в следующем. Когда я хочу обновить запись данных в своей базе данных 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);
 

Я еще не нашел подходящего ответа

Комментарии:

1. docs.microsoft.com/en-us/office/troubleshoot/access/… Разве это не так. Причина.Внутреннее количество столбцов, используемое Microsoft Access для отслеживания количества полей в таблице, достигло 255, хотя в таблице может быть меньше 255 полей. Это может произойти из-за того, что Доступ не изменяет внутреннее количество столбцов при удалении поля. Access также создает новое поле (увеличивая количество внутренних столбцов на 1) для каждого поля, свойства которого вы изменяете.

2. ах, хорошо, значит ли это, что если я буду обновлять запись чаще, то она будет учитываться все время и, таким образом, в какой-то момент превысит 255, даже если я отредактирую только 40 столбцов?

3. Я понимаю, что даже если вы отредактируете 40 столбцов, при попытке добавить новые поля это будет 1. Так что для 1 ряда это будет, может быть, 3, или 4, или 5, или 6…

4. Я понял, что это означает, что доступ ограничен 255 полями. Но если вы выполните обновление со 180 полями, это не сработает, потому что доступ к каждому обновленному полю требует дополнительного поля для обновленного значения. Другими словами, у вас есть только 127 полей, которые могут быть обновлены в инструкции update.

5. ДА. Это. Так что, я полагаю, вы решили эту проблему.

Ответ №1:

Microsoft Docs — это не так?

Причина.Внутреннее количество столбцов, используемое Microsoft Access для отслеживания количества полей в таблице, достигло 255, хотя в таблице может быть меньше 255 полей. Это может произойти из-за того, что Доступ не изменяет внутреннее количество столбцов при удалении поля. Access также создает новое поле (увеличивая количество внутренних столбцов на 1) для каждого поля, свойства которого вы изменяете.