AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.09.2003, 16:30   #1  
Maks is offline
Maks
Участник
 
33 / 10 (1) +
Регистрация: 16.04.2003
? [attain] Размер источника больше размера буфера получателя
При импорте данных (CSV) если в источнике встречается строка в поле длинее 250 байт, то интерпретатор выдает ошибку "Размер источника больше размера буфера получателя".

Можно ли как нибудь принудительно обрезать строку до 250 при импорте?
Старый 25.09.2003, 17:14   #2  
Alex_V is offline
Alex_V
Участник
 
159 / 10 (1) +
Регистрация: 19.02.2003
NewString := COPYSTR(String, 1, MAXSTRLEN(NewString))
Старый 25.09.2003, 17:33   #3  
Maks is offline
Maks
Участник
 
33 / 10 (1) +
Регистрация: 16.04.2003
?
Я вошел в порт. Сел на

OnBeforeImportRecord()

добавил

Adress := COPYSTR(Adress, 1, 250);

не режет?
Старый 25.09.2003, 17:44   #4  
Alex_V is offline
Alex_V
Участник
 
159 / 10 (1) +
Регистрация: 19.02.2003
с какой стати оно будет тебе резать если ты длину указал 250?!
250 - максимальная длина строки.
Adress := '12345'
Adress := COPYSTR(Adress, 1, 3);
//Adress = '123'
Старый 25.09.2003, 17:46   #5  
Maks is offline
Maks
Участник
 
33 / 10 (1) +
Регистрация: 16.04.2003
?
проблема следующая.

есть CSV файл, в котором ряд полей имеют длину более 250.

при импорте появляется ниже описанная ошибка.

как ее обойти? желательно обрезать длинные строки до 250.
Старый 25.09.2003, 18:05   #6  
Alex_V is offline
Alex_V
Участник
 
159 / 10 (1) +
Регистрация: 19.02.2003
попробуй сам датапорт настроить по другому. типа использовать св-ва starPos, width св-в полей. соответственно и сам файл возможно предется перегенерить.
Старый 25.09.2003, 18:08   #7  
Maks is offline
Maks
Участник
 
33 / 10 (1) +
Регистрация: 16.04.2003
насколько я понимаю эти свойства актуальны в том случае, когда источник имеет записи с фиксированной длинной.

у меня другой случай.

предполагаю, что проблема останется. т.к. поле все равно будет больше 250.
Старый 26.09.2003, 10:14   #8  
Shm is offline
Shm
Участник
 
26 / 10 (1) +
Регистрация: 27.05.2003
Автор вопроса явно один и тот же, а для будущих поколений пригодится http://www.navisoft.ru/forum/showthr...=&threadid=226
Старый 26.09.2006, 17:35   #9  
Polar is offline
Polar
Участник
Аватар для Polar
 
281 / 74 (3) ++++
Регистрация: 28.07.2003
Адрес: Ростов-на-Дону
Это ладно 250 символов, а вот у меня больше 70 символов не получается выгрузить такая же ошибка выскакивает. Даже не знаю почему. Но мне очень надо . Помогите пожалуйста. Может у кого-то тоже так было?

Nav 3.6 SQL
__________________
Удачи!
Старый 18.10.2006, 12:03   #10  
e39-528i is offline
e39-528i
Участник
 
81 / 12 (1) ++
Регистрация: 20.08.2005
Адрес: г Москва
аналогичная проблема проявлялась при попытке импортировать в т18 Customer

удалось победить только так:
1. датапорт заливал данные в буферную временную таблицу
2. после окончания работы датапорта все записи из буферной таблицы переносились в табл 18.

имхо, природа глюка зарыта глубоко в недрах Navision.
Прошу корифеев высказаться - в 4.0 проблема осталась, или вылечили?
Старый 06.12.2006, 21:39   #11  
artkashin is offline
artkashin
Участник
MCBMSS
 
519 / 18 (2) ++
Регистрация: 06.12.2006
Описать переменную Adrs типа Text длинной 1024(Максимальная длинна Text для переменной, не поля)
В Dataport Fields вместо поля Adress, указать Adrs
Причем, навижн автоматически обрежет и запишет в переменную Adrs значение, длина которого больше максимальной.
Т.е. Если надо "обрезать" данные до длинны 100, то описать надо переменную Adrs Text 100

И OnBeforeImportRecord триггер Вызывается ДО импорта строки данных, т.е. поля табличной переменной в этом случае еще не заполнены данными из файла. Поэтому, обработку надо проводить в триггере
OnAfterImportRecord (!)
Adress := Adrs;
Если свойство датапорта AutoUpdate стоит Да, тогда MODIFY в триггере ставить не обязательно

Последний раз редактировалось artkashin; 06.12.2006 в 21:47.
Старый 08.12.2006, 16:23   #12  
e39-528i is offline
e39-528i
Участник
 
81 / 12 (1) ++
Регистрация: 20.08.2005
Адрес: г Москва
2 Maks: афтар, атчитайся. удалось победить?
Старый 08.12.2006, 17:15   #13  
Corleone is offline
Corleone
Участник
 
355 / 10 (1) +
Регистрация: 27.05.2004
Адрес: London
Проблема связана с тем, что первичный ключ у таблицы, в которую идет загрузка слишком длинный и его значение становится больше определенного ограничения при загрузке. У меня такая ошибка вылезала на таблице, в первичном ключе которых был Text > 200.
Возможные решения:
1. Временная таблица с другим первичным ключем.
2. Обрезание длинных ключевых полей при загрузке до минимума.
3. Грузить все в переменные и делать INSERT.
Старый 08.03.2007, 17:25   #14  
Storkich is offline
Storkich
Участник
 
149 / 10 (1) +
Регистрация: 08.03.2007
! Всё просто
Привет мегамонстры программирования расскажу в чём проблема и Вам.
У таблицы есть свойство(Ptoperty)
DataCaptionFields
Поля из этого свойства отображаются в заголовке формы и диалоге во время использования DataPort.
Обычно туда пихают Description.
Чтобы всё было Ок, есть два выхода, либо в таблице убираем поля из свойства DataCaptionFields
Либо в датапорте делаем ShowStatus=Нет
И всё работает.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Navision Attain через Citrix Alex_V NAV: Администрирование 2 15.12.2003 17:43
Переход на Navision Attain Makc_1 NAV: Прочие вопросы 3 30.07.2003 14:36
Изменение длины полей в Attain'e Real NAV: Программирование 11 10.07.2003 09:55
attain - Переход на attain Helen NAV: Прочие вопросы 8 04.06.2003 20:34
1С и Attain SlavaShevtsov NAV: Прочие вопросы 2 25.02.2003 17:20

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:58.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.