mekenix Ответов: 1

Как я могу дать конкретный идентификатор для конкретного элемента


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

[Год]+[CATEGORYID]+[записанный номер товара по порядку] = id--> 2020001001 это будет идентификатор первого товара.

Допустим, я производю компьютеры, поэтому я говорю, что идентификатор компьютера равен 1. таким образом, первый компьютер, который я поставил, имеет идентификатор 2020-001-001, а второй-2020001002 и так далее.

Если я включу факс то это будет 2020002001 а второй будет 2020002002

Но как мне это провернуть?

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

я пробовал писать такой код, но не знаю, куда идти дальше.

public void SatışNoAl()
        {
            try
            {
                string sdate = DateTime.Now.ToString("yyyy");
                string transno;
                int count;
                cn.Open();
                cm = new SqlCommand("select top 1 transno from productname where transno like @transno order by id desc", cn);
                cm.Parameters.AddWithValue("@transno", "%" + sdate + "%");
                dr = cm.ExecuteReader();
                dr.Read();
                if (dr.HasRows)
                {
                    transno = dr[0].ToString();
                    count = int.Parse(transno.Substring(8, 4));
                    lblRDM.Text = sdate + (count + 1);
                }
                else
                {
                    transno = sdate + "1001";
                    lblRDM.Text = transno;
                }
                dr.Close();
                cn.Close();

            }
            catch (Exception ex)
            {
                cn.Close();
                MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }


Но это дает мне только значение 20201001

Gerry Schmitz

"Осмысленные" ключи обычно не приветствуются, поскольку меняются "стандарты", алгоритмы портятся и т. д. Лучше начать с идентификационного ключа (SQL db) или использовать что-то вроде GUID (например, new GUID()). Все остальные ваши значения будут использоваться для целей отчетности (сортировка, отчетность).

1 Ответов

Рейтинг:
12

OriginalGriff

Используйте столбец идентификаторов, чтобы предоставить вам уникальное последовательное значение в БД, а затем добавьте вычисляемый столбец для создания вашей последовательности "на основе года".

Никогда не пытайтесь сделать что-либо подобное в своем коде: вы всегда будете получать периодические проблемы, когда два разных пользователя в конечном итоге получают один и тот же идентификатор для разных данных, и ваша БД становится кошмаром для сортировки.