Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Преобразование и форматирование числа в строку / 21 сообщений из 21, страница 1 из 1
16.04.2009, 15:54
    #35936522
rsolanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
Здравствуйте!
Помогите пожалуйста преобразовать число 73146000 в строку и отформатировать ее к виду: 73 146 000р. в построителе выражений для отчета.
...
Рейтинг: 0 / 0
16.04.2009, 16:01
    #35936551
AlexBessonov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
А почему именно преобразовать в строку? А просто денежный формат поля в отчете тебе не подойдет? Видимый результат абсолютно такой же как ты просил.
...
Рейтинг: 0 / 0
16.04.2009, 16:02
    #35936556
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
format(73146000,"### ### ###")&"р."
...
Рейтинг: 0 / 0
16.04.2009, 16:11
    #35936588
AlexBessonov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
Владимир Санычformat(73146000,"### ### ###")&"р."
Владимир Саныч, решеток можно и поменьше Достаточно "# ###"
...
Рейтинг: 0 / 0
16.04.2009, 16:16
    #35936598
rsolanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
AlexBessonovА почему именно преобразовать в строку? А просто денежный формат поля в отчете тебе не подойдет? Видимый результат абсолютно такой же как ты просил.
Дело в том, что необходимо чтобы значение переменной, содержащей агрегированное значение являло собой часть в одной большой строке, например:
Код: plaintext
='Всего по счету '+[ContractInternal_1]+': '+CStr(Count(*))+' сделок, '+CStr(Sum([LotCount]))+' лотов, '+CStr(Sum([O]))+' рублей.'
Выглядело это так:
Код: plaintext
Всего по счету R0013: 13 сделок, 25 лотов, 73146000 рублей.
Но только та часть строки, которая содержит деньги, была отформатирована.
P.S. Видимо изначально некорректно сформулировал вопрос, под конец дня голова кипит :-)
...
Рейтинг: 0 / 0
16.04.2009, 16:20
    #35936618
rsolanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
Владимир Санычformat(73146000,"### ### ###")&"р."
Вот и все заработало:
Код: plaintext
='Всего по счету '+[ContractInternal_1]+': '+CStr(Count(*))+' сделок, '+CStr(Sum([LotCount]))+' лотов, '+Format(Sum([O]);"# ###")+' рублей.'
Большое всем спасибо!
...
Рейтинг: 0 / 0
16.04.2009, 16:28
    #35936649
AlexBessonov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
Можно в принципе "рублей" писать сразу в формате поля:
Код: plaintext
=Format([Деньги];"# ###"" рублей""")
Но это так, к слову. Разницы почти никакой
...
Рейтинг: 0 / 0
16.04.2009, 16:35
    #35936664
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
AlexBessonovВладимир Санычformat(73146000,"### ### ###")&"р."
Владимир Саныч, решеток можно и поменьше Достаточно "# ###"
Я проверил, прежде чем написать. Почему-то формат "# ###" дал мне 73146 000p., без первого пробела.
...
Рейтинг: 0 / 0
16.04.2009, 16:41
    #35936679
AlexBessonov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
Владимир СанычЯ проверил, прежде чем написать. Почему-то формат "# ###" дал мне 73146 000p., без первого пробела.
Хм. Владимир Саныч, я бы тоже без проверки не решился давать советы такому "монстру"
Правда проверял я в 2007-м.
Код: plaintext
=Format([Деньги];"# ###"" рублей""")
...
Рейтинг: 0 / 0
16.04.2009, 17:00
    #35936741
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
Может, это как-то связано с региональными настройками...
...
Рейтинг: 0 / 0
16.04.2009, 17:21
    #35936819
Преобразование и форматирование числа в строку
Владимир СанычМожет, это как-то связано с региональными настройками...
Нет, это связано с местом применения функции Format. В коде VBA это выглядит так:
?Format(123456789.123,"# , ### . 00"" рублей""")
123 456 789.12 рублей
...
Рейтинг: 0 / 0
16.04.2009, 17:30
    #35936852
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
Анатолий ( Киев )Владимир СанычМожет, это как-то связано с региональными настройками...
Нет, это связано с местом применения функции Format. В коде VBA это выглядит так:
?Format(123456789.123,"# , ### . 00"" рублей""")
123 456 789.12 рублей
Этот код у меня вставляет запятые. Что это, если не региональные настройки?
...
Рейтинг: 0 / 0
16.04.2009, 17:47
    #35936916
Преобразование и форматирование числа в строку
Владимир СанычЭтот код у меня вставляет запятые. Что это, если не региональные настройки?
А что вернет Format(123456789.123,"Currency")? Если запятые, то в ваших региональных настройках указана ",". Замените на "_" - их и вернет.
У меня, кстати, пробел в шаблоне дает то же, что и у вас.
?Format(123456789.123,"# ###.00"" рублей""")
123456 789.12 рублей
Т.е. пробел принимается как литерал. Пример ниже добавляет лишний лидирующий пробел.
?Format(123456789.123,"### ### ### ###.00"" рублей""")
123 456 789.12 рублей
...
Рейтинг: 0 / 0
16.04.2009, 17:51
    #35936945
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
Анатолий ( Киев )А что вернет Format(123456789.123,"Currency")? Если запятые, то в ваших региональных настройках указана ",". Замените на "_" - их и вернет.
Именно. Так что дело таки в настройках.
...
Рейтинг: 0 / 0
16.04.2009, 18:21
    #35937051
rsolanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
Владимир СанычAlexBessonovВладимир Санычformat(73146000,"### ### ###")&"р."
Владимир Саныч, решеток можно и поменьше Достаточно "# ###"
Я проверил, прежде чем написать. Почему-то формат "# ###" дал мне 73146 000p., без первого пробела.
Я обратил внимание на то, что в этом месте форматирование текста происходит корректно (если писать это в функции Format), а если в отчете у элемента управления "поле" в свойстве "Формат поля" написать "# ###", то например, вместо 16 000 форматирует как 160 00
Но ведь результат должен быть одинаковым! Вообще я не устаю поражаться компанией Microsoft. Что от чего зависит в некоторых случаях, как например этот - это тайна, наверное даже для самой компании Microsoft.
...
Рейтинг: 0 / 0
17.04.2009, 09:19
    #35937719
AlexBessonov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
rsolanov... а если в отчете у элемента управления "поле" в свойстве "Формат поля" написать "# ###", то например, вместо 16 000 форматирует как 160 00...
Проверил, у меня выдает правильно 16 000. Все чудесатее и чудесатее.
...
Рейтинг: 0 / 0
17.04.2009, 09:51
    #35937779
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
автор
Т.е. пробел принимается как литерал. Пример ниже добавляет лишний лидирующий пробел.
?Format(123456789.123,"### ### ### ###.00"" рублей""")
123 456 789.12 рублей


?Format(89.123,"### ### ### ###.00"" рублей""")

вернёт 3 лидирующий пробела


LTrim(Format(89.123,"### ### ### ###.00"" рублей"""))

если уж извращаться......
...
Рейтинг: 0 / 0
17.04.2009, 10:11
    #35937834
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
для универсализма

Код: plaintext
1.
Replace(LTrim(Format( 89 . 123 ,"### ### ### ###.00"" рублей""")),mid(cstr( 1 / 2 ), 2 , 1 ),"-")
...
Рейтинг: 0 / 0
17.04.2009, 10:50
    #35937980
Преобразование и форматирование числа в строку
AlexBessonovrsolanov... а если в отчете у элемента управления "поле" в свойстве "Формат поля" написать "# ###", то например, вместо 16 000 форматирует как 160 00...
Проверил, у меня выдает правильно 16 000. Все чудесатее и чудесатее. rsolanov, что у вас возвращает Debug.Print Me![Поле].Format?
У меня при формате поля # ###" р." поле показывает 16 000 р., а при # ### " р." (пробел перед кавічкой) - 16 р., и это - ПРАВИЛЬНО!HELPДва соседних разделителя групп разрядов или разделитель групп разрядов, стоящие сразу перед десятичным разделителем (даже если символ десятичного разделителя не указан явно), означают, что масштаб числа следует изменить, разделив его указанное число раз на 1000 и округлив по мере надобности. Такой способ позволяет выводить большие числа. Например, строка формата "##0,," отображает сто миллионов как 100, а числа, меньшие одного миллиона, как 0. Два соседних разделителя групп разрядов, находящихся в любой другой позиции, обрабатываются как один разделитель групп разрядов. Фактический символ, используемый в качестве разделителя групп разрядов, определяется установленным в системе числовым форматом. ?Format(16000,"#,###,")
16
?Format(16000000,"#,###,,")
16
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
01.10.2019, 01:28
    #39869652
Эквисакс
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
rsolanov,
="Итого " & Format(Sum([Количество]);"С разделителями разрядов") & "шт на сумму" & Format(Sum([Сумма]);"С разделителями разрядов") & "руб"
...
Рейтинг: 0 / 0
01.10.2019, 06:56
    #39869664
Serg197311
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование и форматирование числа в строку
Эквисаксrsolanov,
........... :) А на дату топика смотрели?:)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Преобразование и форматирование числа в строку / 21 сообщений из 21, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]