2016-12-12 2 views
0

У меня есть конкретная проблема, когда мне нужно генерировать номер в # приложении C, который будет в основном представлять следующие два значения, которые представляют собой:Генерация числа в C# приложении, а затем хранить его для последующего использования

1. Invoice number (starting point 0001) 
2. Customer number (starts from 1000) 

Хорошо так что я имел в виду следующие решения этой проблемы:

  1. Когда пользователь генерирует счета-фактуры до ряда 2000 года позволяет говорить ... Я могу хранить сгенерированного количество PDF файлов (количество транзакций, были вырваны из API) и сохранили его в файловой системе в форма потока памяти, текстовый файл или XML-файл ...

  2. Я могу подключиться к удаленному DB и вставить/обновить значение последнего сгенерированного числа счета/клиента и начать с этой точки

Решение №2 выглядит более «безопасным», поскольку, если значение хранится в файловой системе, жесткий диск/ssd можно отформатировать и значение может быть потеряно ...

Что вы, ребята, думаете?

P.S. Я хотел бы спросить вас, а также ребята, как я могу показать целочисленное значение 1 как 0001 в виде строки?

Once that value reaches 10-99 it'd display: 0099 
When it reaches 100-999 it'd display: 0999 
1000+: 1000 
10000+: 10000 and so on ? 

Причина, почему я спрашиваю это потому, что я не могу объявить целое со значением 0001, это было бы просто превратить его в 1, и не получает меня где-нибудь?

+3

Zero-padding - это проблема пользовательского интерфейса, а не проблема с данными. Не храните ваши цифры в виде строки - просто установите их на нуль, пока вы показываете их пользователю. C# имеет приятную функцию [PadLeft] (https://msdn.microsoft.com/en-us/library/92h5dc07 (v = vs.110) .aspx) –

+0

@ LynnCrumbling Да, хорошая точка. Как я могу это решить? :) – User987

+0

«Что вы, ребята, думаете?» это вопрос, основанный на мнениях. Голосование закрывается. –

ответ

2
int number = 1; 

Вот пример:

string r = number.ToString().PadLeft(4, '0'); 
    string r = number.ToString("0000"); 
    string r = number.ToString("D4"); 

ToString() метод позволяет задать различные параметры, зависит, какое форматирование вам нужно.

Вы можете прочитать немного больше о том, что здесь: https://msdn.microsoft.com/en-us/library/6t7dwaa5(v=vs.110).aspx

C# 6.0 также делает это немного проще:

string r = $"{number:D4}"; 
string r = $"{number:0000}"; 

Я также полностью согласен с людьми, которые отметили в комментарии, что числовая данные должны храниться в числовых типах данных в хранилище данных и только отформатированы для пользовательского интерфейса.

+0

хороший ответ! Этот метод применим только в том случае, если число не достигло значения 9999 +? Что происходит, если я использовал .ToString(). PadLeft (4, '0'); на 5-значном номере? – User987

+0

ничего не добавит к нему, поскольку длина строки уже больше 4 символов. – MadOX

+0

Отлично, спасибо помощнику! :) Собираюсь принять ваш ответ примерно за 35 секунд, как я пишу это. – User987

Смежные вопросы