Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2012, 16:36   #1
eraserhp
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 24
По умолчанию Ошибка "Размер поля недостаточен, чтобы принять добавляемые данные. Попробуйте вставить меньшее количество данных"

День добрый.

Есть следующий код:

Код:
string[] GetItemsCollection(string FieldName, string TableName)
        {
            GlobalVariables.QueryText = "Select Distinct " + FieldName + " From " + TableName;
 
            OleDbCommand DbCommand = GlobalVariables.DBC.CreateCommand();
            DbCommand.CommandText = GlobalVariables.QueryText;
 
            OleDbDataAdapter DataAdapter = new OleDbDataAdapter { };
            DataAdapter.SelectCommand = DbCommand;
 
            GlobalVariables.Result = new DataTable();
            GlobalVariables.Result.Locale = System.Globalization.CultureInfo.InvariantCulture;
 
            try
            {
                DataAdapter.Fill(GlobalVariables.Result);
            }
            catch (AccessViolationException exception)
            {
                MessageBox.Show(exception.Message);
                GlobalVariables.Result.Clear();
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
            }
            catch (OleDbException exception2)
            {
                MessageBox.Show(exception2.Message);
                GlobalVariables.Result.Clear();
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
            }
            catch (Exception exception3)
            {
                MessageBox.Show(exception3.Message + " Попробуйте уменьшить кол-во выгружаемых столбцов.");
                GlobalVariables.Result.Clear();
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
            }
 
            string[] ObjectCollection = new string[GlobalVariables.Result.Rows.Count];
 
            for (int i = 0; i < GlobalVariables.Result.Rows.Count; ++i)
            {
                ObjectCollection[i] = GlobalVariables.Result.Rows[i][0].ToString();
            }
            return ObjectCollection;
        }
В Access есть таблица, в которой всего одно поле типа мемо, максимальная длина данных в этом поле на данный момент 530 символов, при попытке заполнить DataTable (DataAdapter.Fill(GlobalVariables.R esult)) вылетает с ошибкой, которая указана в теме.
К Access подключаюсь через OLEDB.4 или ACE.12 без разницы.

Самое главное, что есть другой запрос, который реализован на этом же механизме и там есть поля мемо с максимальной длинной в 3000, но он работает.

В этой таблице всего 3 записи, в которой длинна больше 255 символов, обрезал до 255, все норм, почему в другом более сложном и объемном запросе нет такого ограничения?
eraserhp вне форума Ответить с цитированием
Старый 22.08.2012, 17:49   #2
eraserhp
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 24
По умолчанию

Неужели никто не знает с каким ограничением может быть связана данная ошибка.
Я бы понял, если ошибка бы вылетала при попытке добавления записей, но при считывании...
eraserhp вне форума Ответить с цитированием
Старый 23.08.2012, 10:12   #3
eraserhp
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 24
По умолчанию

Проблема так и не разрешилась(((
eraserhp вне форума Ответить с цитированием
Старый 24.08.2012, 10:35   #4
eraserhp
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 24
По умолчанию

Какие ограничения на размеры выборок для OLEDB и ACE?
eraserhp вне форума Ответить с цитированием
Старый 29.08.2012, 12:13   #5
eraserhp
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 24
По умолчанию

Коллеги, прошу помощи!
eraserhp вне форума Ответить с цитированием
Старый 29.08.2012, 12:18   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
почему в другом более сложном и объемном запросе нет такого ограничения?
Ну наверное потому что там сделано правильно а тут нет.
Весь код надо переделать, он вообще не правильный.
eval вне форума Ответить с цитированием
Старый 29.08.2012, 14:25   #7
eraserhp
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 24
По умолчанию

Там сделано точно так же! Код писался мной в одной проге, поэтому я точно уверен, что он одинаков. В чем ошибки?
eraserhp вне форума Ответить с цитированием
Старый 29.08.2012, 14:38   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

В чем ошибка вам говорит сама ошибка.
"Размер поля недостаточен, чтобы принять добавляемые данные", делайте выводы.
eval вне форума Ответить с цитированием
Старый 29.08.2012, 14:54   #9
eraserhp
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 24
По умолчанию

Проблема в том, что эту ошибку вызывает класс из стандартной библиотеки... причем при селекте...

В другом селекте, который выполняется через такой же код, все ок, хотя полей превышающих 255 символов там штук 20...

Код селекта:
Код:
SELECT DISTINCT 
PublDt, NotifNr, StatusT_Name, FormT_Name, FO_Nm, RegNm, Org_CustNm, OrgType, INN, KPP, OGRN, Org_SubCustNm, Org_ProviderNm, ClaimReglament, ClaimDtBeg, ClaimDtEnd, TendDt, KBK, Budgets_Name, TenderDocReglament, OKDPCode, OKDP, TendNm, TenderPrice, TenderLot, SMP, PaymentReglament, TenderNote, LotNr, LotNm, LotType, PriceStart, PriceMax, ClaimObesp, ContrObesp, Lot_RegNm, ConsigneeNm, ConsigneeInfo, PlanTName, PlanTYear, PlanTVal, SupplyDt, ContrExpVal, WinnerOrg, WinnerInfo, SupplyReglament, PriceOther, LotNote, LotSpecPos, InnR, TradeNmR, ProdNm, Form, LotSpecPrice, LotSpecNum, LotSpecValue, UnitsName, LotSpecNote, SrcInf, CreateDate, UpdateDate
FROM
(tender LEFT JOIN lot ON tender.Tender_ID=lot.tender_id) LEFT JOIN lotspec ON lot.Lot_ID=lotspec.lot_id
eraserhp вне форума Ответить с цитированием
Старый 29.08.2012, 14:55   #10
eraserhp
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 24
По умолчанию

Данных во втором запросе на гиг с небольшим выбирается
eraserhp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчитать количество букв "й", "ы" и "я", содержащихся в заданной строке. VoltZZZ Помощь студентам 2 01.03.2012 23:39
Ошибка "Недостаточно сведений для обновления ключевого поля" как её избежать Gulik БД в Delphi 0 11.08.2011 21:23
Как вставить кнопку "Поделится" или "мне нравится" в phpbb3 borecc PHP 1 07.03.2011 13:44
Создание кнопки "сброс все данных" и автоматического поля со списком Рыжулька Microsoft Office Excel 7 11.12.2010 09:11