Member 10754595 Ответов: 1

Как сгенерировать пользовательский код даты в SQL server и VB.NET?


Привет, я работаю над проектом, и там мне нужен код даты, например, если это 2017/10/11, то код должен появиться 7XB(7 - это год 17, а X-месяц октябрь, А B-день 11), и это связано с номером детали, если номер детали такой же, то 7XB должен увеличиться на 1, Как 7XB1. У меня есть весь код месяцев и дней, но я не знаю, как использовать его для генерации этого кода и последовательности в SQL server, а также я могу сохранить его в базе данных. есть ли какой-нибудь способ написать запрос в sql, который может декодировать дату, если номер детали совпадает с заданной датой.

И то же самое мне нужно сделать в VB.net создание приложения windows.В этом случае, когда я даю номер детали и дату, он должен декодировать дату, распечатать этикетку и сохранить декодированную дату и последовательность в базе данных.

Пожалуйста, помогите мне, я новичок в sql и VB.net

Заранее спасибо!

Что я уже пробовал:

Я пытаюсь сгенерировать пользовательский код даты в SQL server и vb.net но не знаю, как это сделать.

Atlapure Ambrish

Для каждого месяца и дня существует свой код? Как вы упомянули, X-это Октябрь, А B-11-й день, они изменятся на другой месяц и день??

Member 10754595

да

1 Ответов

Рейтинг:
4

Maciej Los

Главное внимание: в этом нет никакого смысла!
Вы должны использовать тип данных date, а не строковый тип данных по нескольким причинам. Одна из них заключается в том, что вы не сможете производить расчеты. В любое время, когда вы решите произвести вычисления, вам понадобится кодировать/декодировать дату.
Но (!)... если вы хотите создать пользовательское поле даты, проверьте это:

'create dictionary object
'assign numbers to chars 
Dim oDic = New Dictionary(Of Integer, String)
oDic.Add(0, "A")
oDic.Add(1, "B")
oDic.Add(2, "C")
oDic.Add(3, "D")
oDic.Add(4, "E")
oDic.Add(5, "F")
oDic.Add(6, "G")
oDic.Add(7, "H")
oDic.Add(8, "I")
oDic.Add(9, "J")

'example date
Dim sDate = "2017/10/11"
'replace "/"
sDate = sDate.Replace("/", String.Empty)
'encode date
Dim encodedDate = String.Join(String.Empty, sDate.Select(Function(x) oDic(Int32.Parse(x))))
Console.WriteLine("encoded date: {0}", encodedDate)

'decoded date
Dim cu = New Globalization.CultureInfo("en-US")
Dim decodedDate = DateTime.ParseExact( _
	String.Join(String.Empty, encodedDate.Select(Function(x) oDic.Where(Function(r) r.Value=x).Select(Function(k) k.Key).First())), _
	"yyyyMMdd", cu)
Console.WriteLine("decoded date: {0}", decodedDate)

Результат:
encoded date: CABHBABB
decoded date: 2017-10-11 00:00:00

Теперь вы знаете, как кодировать / декодировать дату. Все, что вам нужно сделать прямо сейчас, это написать код для сохранения/извлечения данных в/из базы данных (SQL).