Как автоматически генерировать id в VB.NET
Я хочу, чтобы мой идентификатор был как SR18/1, а затем SR18/2....подобный этому.каким будет мой код для инкремента..
Что я уже пробовал:
Я не могу быть в состоянии генерировать SR18/2
Это зависит от того, что именно вы хотите сделать, и как вы храните информацию. И очень важно тщательно подумать об этом: ошибитесь, и это может вызвать некоторые ужасные последствия.
Например, ваша первая проблема проста: как вы используете это - это однопользовательское приложение или многопользовательское? Это имеет огромное значение: многопользовательские уникальные идентификаторы нуждаются в гораздо большей заботе, чем однопользовательские!
Система хранения данных также влияет на то, как вы ее генерируете: если вы используете базу данных, то, вероятно, можете позволить ей выполнять большую часть "тяжелой работы" за вас, поскольку у них обычно есть системы для создания уникальных значений, которые вы затем можете использовать в качестве основы для вашего конкретного формата идентификатора.
Другие проблемы, о которых вам нужно подумать: откуда берется бит "SR18"? Когда это изменится? Как это меняется? Является ли "18" последними двумя цифрами года? Если да, то когда это изменится? 1 января или в конце финансового года (1 апреля в Великобритании для целей налогообложения, но может быть любой датой, если это финансовый год компании, в зависимости от того, когда компания начала торговать)? Когда меняется бит "SR" и почему? А что делать?
Это не так просто, как "эта строка кода", или даже "этот метод" или "этот алгоритм" - нечисловые автоматические значения идентификаторов должны быть тщательно проработаны задолго до того, как вы начнете с кодом!
Я хочу, чтобы мой идентификатор был как SR18/1, а затем SR18/2....подобный этому.каким будет мой код для инкремента..
Что я уже пробовал:
Я не могу быть в состоянии генерировать SR18/2
Я согласен с вышесказанным: создание чего-то буквенно-цифрового ставит много вопросов. Приведенный ниже код является базовым решением этой проблемы
В качестве простого объяснения кода Вы используете это
Sub Main() Dim parentString As String = "SR18/" Dim previousInt As Int16 = 35 Dim currentPart As String = "" currentPart = fnMakeNext(parentString, previousInt) previousInt = previousInt + 1 Dim loadsofParts As New List(Of String) Dim endofLot As Int16 = 72 loadsofParts = fnMakeManyParts(previousInt, endofLot, parentString) Console.WriteLine("Single Part") Console.WriteLine(currentPart) Console.WriteLine(vbCrLf) Console.WriteLine("Multi Parts") For Each s As String In loadsofParts Console.WriteLine(s) Next Console.ReadLine() Private Function fnMakeManyParts(previousInt As Short, endofLot As Short, parentString As String) As List(Of String) Dim result As New List(Of String) For p As Int16 = previousInt To endofLot Step 1 result.Add(fnMakeNext(parentString, p)) Next Return result End Function Private Function fnMakeNext(parentString As String, previousInt As Short) As String Dim returned As String returned = parentString + previousInt.ToString Return returned End Function End Sub