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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.01.2013, 12:44   #1  
1234567890 is offline
1234567890
Участник
 
3 / 10 (1) +
Регистрация: 31.01.2013
Добрый день.
Я выгружаю в excel при помощи отчета. В триггере OnPostDataItem я создал алгоритм для поиска дублей, дело в том, что мне надо при поиске дублей записывать значения поля(назовем его Field1) в одну ячеку через запятую, то есть должна быть такая запись:

Товар1 Field1
тов1 А,B,C,D
тов2 E,F

Я делаю так:
Код:
xlSheet.Range('H'+ FORMAT(CurrIndex1,0,'<Integer>') ).Value:=Format(xlSheet.Range('H'+ FORMAT(CurrIndex2,0,'<Integer>') ).Value)+',';
Но тем самым я перезаписываю значение ячейки, как мне сделать дозапись или конкатенацию строки в этой ячейке?
Старый 31.01.2013, 13:05   #2  
max_hl_imported is offline
max_hl_imported
Участник
 
45 / 10 (1) +
Регистрация: 28.07.2006
Добрый день.

Может быть использовать временную переменную для получения текущего значения ячейки ? Аля

Код:
TextBuf Text 1024

TextBuf := xlSheet.Range('H'+ FORMAT(CurrIndex1,0,'<Integer>') ).Text;
IF TextBuf <> '' THEN
  TextBuf += ', ' + xlSheet.Range('H'+ FORMAT(CurrIndex2,0,'<Integer>')).Text;
xlSheet.Range('H'+ FORMAT(CurrIndex1,0,'<Integer>') ).Value := TextBuf;
Ну или я не понял вопроса..
Оператор
Код:
:=
- это перезапись, используйте
Код:
+=
для конкатенации.
Старый 31.01.2013, 13:17   #3  
1234567890 is offline
1234567890
Участник
 
3 / 10 (1) +
Регистрация: 31.01.2013
Цитата:
Сообщение от max_hl Посмотреть сообщение
Добрый день.

Может быть использовать временную переменную для получения текущего значения ячейки ? Аля

Код:
TextBuf Text 1024

TextBuf := xlSheet.Range('H'+ FORMAT(CurrIndex1,0,'<Integer>') ).Text;
IF TextBuf <> '' THEN
  TextBuf += ', ' + xlSheet.Range('H'+ FORMAT(CurrIndex2,0,'<Integer>')).Text;
xlSheet.Range('H'+ FORMAT(CurrIndex1,0,'<Integer>') ).Value := TextBuf;
Ну или я не понял вопроса..
Оператор
Код:
:=
- это перезапись, используйте
Код:
+=
для конкатенации.
Спасибо за ответ, с временной переменной всё получилось.
Я ещё хотел спросить, когда я попытался сделать с оператором "+=", то появилась ошибка: "В этой функции должно быть использованной возвращаемое значение"
Код:
 Format(xlSheet.Range('I'+ FORMAT(CurrIndex1,0,'<Integer>') ).Value)+=Format(xlSheet.Range('I'+ FORMAT(CurrIndex2,0,'<Integer>') ).Value)+',';
В чём может быть ошибка?
Старый 31.01.2013, 14:41   #4  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от max_hl Посмотреть сообщение
Код:
+=
для конкатенации.
'+=' работает с текстовыми переменными? Раньше не работало
Старый 31.01.2013, 15:22   #5  
max_hl_imported is offline
max_hl_imported
Участник
 
45 / 10 (1) +
Регистрация: 28.07.2006
Цитата:
Сообщение от Fordewind Посмотреть сообщение
Цитата:
Сообщение от max_hl Посмотреть сообщение
Код:
+=
для конкатенации.
'+=' работает с текстовыми переменными? Раньше не работало
Работает, постоянно пользуюсь т.к. меньше писать.

Цитата:
В чём может быть ошибка?
А в левой части FORMAT зачем ? там ведь в значение ячейки результат помещается..
В целом, рекомендую проштудировать основы программирования CAL
Старый 31.01.2013, 19:44   #6  
dmites is offline
dmites
Участник
Аватар для dmites
 
221 / 14 (1) ++
Регистрация: 10.08.2005
Если уткнулись в максимальный размер переменной Text (1024) в Nav, а в ячейку надо запихнуть большее
значение ячейки

xlWorkSheet.Range(....).FormulaR1C1:=
FORMAT(xlWorkSheet.Range(....).Value)+pValue;
Старый 01.02.2013, 11:51   #7  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Цитата:
Сообщение от dmites Посмотреть сообщение
Если уткнулись в максимальный размер переменной Text (1024) в Nav, а в ячейку надо запихнуть большее
значение ячейки

xlWorkSheet.Range(....).FormulaR1C1:=
FORMAT(xlWorkSheet.Range(....).Value)+pValue;
а это рабочий код? применялся где-нибудь при размере ячейки и pvalue > 1024?
Старый 07.02.2013, 19:04   #8  
dmites is offline
dmites
Участник
Аватар для dmites
 
221 / 14 (1) ++
Регистрация: 10.08.2005
Цитата:
Сообщение от InTacto Посмотреть сообщение
Цитата:
Сообщение от dmites Посмотреть сообщение
Если уткнулись в максимальный размер переменной Text (1024) в Nav, а в ячейку надо запихнуть большее
значение ячейки

xlWorkSheet.Range(....).FormulaR1C1:=
FORMAT(xlWorkSheet.Range(....).Value)+pValue;
а это рабочий код? применялся где-нибудь при размере ячейки и pvalue > 1024?
Да, применяется при выгрузке текстовых описаний товара в интернет магазин.
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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