Вывод в отчет части поля после слеша

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Necrz
Новичок
Сообщения: 24
Зарегистрирован: 06 фев 2014, 11:30

Вывод в отчет части поля после слеша

Сообщение Necrz »

Добрый день!

Такой вопрос: есть поле, состоящее из символов вида ...\...\ (цифры и буквы до слеша и после типа 125-a18\eh158-32\)

Необходимо в отчете вывести только часть этого поле, идущую ПОСЛЕ ПЕРВОГО слеша (т.е. на примере - eh158-32\), причем необходимо проверить наличие в поле обоих слешей (прямой и обратный), дабы не пропустить ошибочно введенные позиции (когда вместо прямого ставят обратный). Как это можно реализовать?

Заранее спасибо.
Irina_
Местный житель
Сообщения: 547
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: Вывод в отчет части поля после слеша

Сообщение Irina_ »

Здравствуйте. Используйте функции:
function Length(s): byte; - возвращает длину строки.
function Pos(substr: string; s: string): byte; - возвращает позицию вхождения подстроки в строку.
function SubStr(s: string;position: byte;len: byte): string; - возвращает подстроку, начиная с заданной позиции, заданной длины.
evchic
Местный житель
Сообщения: 216
Зарегистрирован: 25 апр 2006, 12:05
Откуда: г.Ростов-на-Дону
Контактная информация:

Re: Вывод в отчет части поля после слеша

Сообщение evchic »

Код: Выделить всё

Function ExtractDelimitedWord (
  String,
  Byte,
  String
) : String;
external 'G_ExpImp
Вот пример
str:= '125-a18\eh158-32\...\...\...\';
ExtractDelimitedWord(srt,2,'\') //Вернет 2 значения через разделитель \ - eh158-32
Necrz
Новичок
Сообщения: 24
Зарегистрирован: 06 фев 2014, 11:30

Re: Вывод в отчет части поля после слеша

Сообщение Necrz »

Спасибо всем! Еще вопрос. В присоединенной форме slk я вывожу номера документов, которые начинаются с нулей (вида 0005345-78 и т.д.), Excel нули обрубает, тем самым в итоге в поле выводится значение без нулей (вида 5345-78). Каким образом можно вывести значения в Excel так, как это представляется в Галактике (т.е. в экселевском поле должно быть значение 0005345-78)?
evchic
Местный житель
Сообщения: 216
Зарегистрирован: 25 апр 2006, 12:05
Откуда: г.Ростов-на-Дону
Контактная информация:

Re: Вывод в отчет части поля после слеша

Сообщение evchic »

chr(39)+Pole
Necrz
Новичок
Сообщения: 24
Зарегистрирован: 06 фев 2014, 11:30

Re: Вывод в отчет части поля после слеша

Сообщение Necrz »

Спасибо. А без апострофа никак нельзя?
evchic писал(а):chr(39)+Pole
evchic
Местный житель
Сообщения: 216
Зарегистрирован: 25 апр 2006, 12:05
Откуда: г.Ростов-на-Дону
Контактная информация:

Re: Вывод в отчет части поля после слеша

Сообщение evchic »

Я не помню slk сохраняет формат ячейки или нет! Попробуйте поставить формат ячейки Текст
Necrz
Новичок
Сообщения: 24
Зарегистрирован: 06 фев 2014, 11:30

Re: Вывод в отчет части поля после слеша

Сообщение Necrz »

Уже пробовал, почему-то не сохраняет. Т.е. формат сохраняет, но выводит все равно без нулей.
evchic писал(а):Я не помню slk сохраняет формат ячейки или нет! Попробуйте поставить формат ячейки Текст
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Вывод в отчет части поля после слеша

Сообщение edward_K »

лучше вместо slk делать текстовую форму, в которой вывести в xls - так вы сможете использовать шаблон, в котором указать для всего столбца тип "текстовый", хотя апострофы и там надежней. Но в любом разе форма будет гораздо красивей - одни параметры страницы чего стоят.
Necrz
Новичок
Сообщения: 24
Зарегистрирован: 06 фев 2014, 11:30

Re: Вывод в отчет части поля после слеша

Сообщение Necrz »

Спасибо. Т.е. в slk реализовать вывод нулей невозможно, не прибегая к апострофам?
edward_K писал(а):лучше вместо slk делать текстовую форму, в которой вывести в xls - так вы сможете использовать шаблон, в котором указать для всего столбца тип "текстовый", хотя апострофы и там надежней. Но в любом разе форма будет гораздо красивей - одни параметры страницы чего стоят.
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Вывод в отчет части поля после слеша

Сообщение RAJAH »

Necrz писал(а):А без апострофа никак нельзя?
Пробел перед "0".
Necrz
Новичок
Сообщения: 24
Зарегистрирован: 06 фев 2014, 11:30

Re: Вывод в отчет части поля после слеша

Сообщение Necrz »

Ясно. Всем спасибо!
Buddy
Постоянный обитатель
Сообщения: 119
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

Re: Вывод в отчет части поля после слеша

Сообщение Buddy »

Всем доброго времени суток.
Столкнулся с аналогичной проблемой. В SLK-отчете номер договора (в частном случае) состоит из 25 цифр, и при формировании отчета представляется числом с экспонентой.
Что было предпринято:
Добавил пробел в начале строки - вывелось нормально, но клиент пробелом недоволен.
Соответственно, пробел в конце строки клиент тоже не хочет. Про апостроф даже не спрашивал :)
Проставил у всего столбца в шаблоне тип Текстовый. При формировании XLS-файла проверяю - в ячейке число с экспонентой, но тип Текстовый!

Подсказали переделать отчет с SLK на текстовый в выводом в XLS, но как-то жалко переделывать весь отчет из-за такой ерунды, тем более что у меня как у начинающего программиста это займет много времени.
В общем, ищу обходные пути для решения этой проблемы.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: Вывод в отчет части поля после слеша

Сообщение Алексей »

SLK отчеты не запоминают типы полей, которые устанавливаешь... потому в Вашем случае переписать отчёт и формировать отчёт напрямую функциями записи в эксель файл в заранее подготовленный шаблон, с установленными настройками полей.
Buddy
Постоянный обитатель
Сообщения: 119
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

Re: Вывод в отчет части поля после слеша

Сообщение Buddy »

Алексей писал(а):SLK отчеты не запоминают типы полей, которые устанавливаешь... потому в Вашем случае переписать отчёт и формировать отчёт напрямую функциями записи в эксель файл в заранее подготовленный шаблон, с установленными настройками полей.
Эх... Спасибо. Буду переписывать.
Ответить