如何在 asp.net C# 中从日期自动生成 ID



我想从用户输入的日期自动生成 Id。 示例:日期是 12/05/2017 而不是 id 必须170001或 5/10/2014 比 id 必须140001

     private void autogeneratedocno()
       {
        con.Open();
        string check="select count(Doc_no) from       
        complaint";
        SqlCommand cmd2 = new SqlCommand(check,con);
        int a =Convert.ToInt32(cmd2.ExecuteScalar());
        string date = txtdate.Text.ToString();
        string year = date.Substring(8, 2);
        //string[] arrDate = date.Split('/');
        //string day = arrDate[0].ToString();
        //string month = arrDate[1].ToString();
        //string year = arrDate[2].ToString();
        //string y = year.Substring(2, 2);
        if (a == 0)
        {
         
            txtdocno.Text = string.Concat( year.ToString()
            + "00000");
        }
        else
        {
            string count = "select ISNULL(MAX(Doc_no),0)+1
            from complaint";                             
            SqlCommand cmd = new SqlCommand(count, con);
            int doc_no =
            Convert.ToInt32(cmd.ExecuteScalar());
            txtdocno.Text = doc_no.ToString();
      
        }
        con.Close();
        }
        
        

通过使用上面的代码。 我能够生成 2017 年的 ID,但是当我更改年份时,前两位数字没有变化。

请建议我更改自动生成ID

lbldate.text = Convert.ToDateTime(DateTime.Now.AddYears(-3((。ToString("dd/MM/yyyy"(;

    string Year = lbldate.Text.Substring(8, 2);
    lblYear.Text = Year;

这可能有助于您解决您遇到的问题,但您可能会发现您将遇到其他问题。

我选择将字符串输入转换为日期时间,因为您无法保证用户将输入的内容。如果他们输入 2017-01-01 这样的日期怎么办。

例如,这将在 2009 年失败,因为 int.parse 将删除前导零。

string date = "01/01/2017"; //example date
DateTime d = DateTime.Parse(date); //convert string into datetime
var i = int.Parse(d.ToString("yy00000")); //format and convert to int
int docno = i + count

您可能应该考虑从数据库生成数字或使用 GUID

    private void autogeneratedocno()
    {
        string str1 = txtdate.Text;
        string[] s1 = str1.Split('/');
        str1 = s1[1].ToString() + "/" + s1[0].ToString() +
        "/" + s1[2].ToString();
        string yy = s1[2].ToString();
        string mm = s1[1].ToString();
        string dd = s1[0].ToString();
        int y = Convert.ToInt32(yy);
        int m = Convert.ToInt32(mm);
        string z = yy.Substring(2,2);
        string sqlno =" selectisnull(max(substring
        (doc_no,3,5)),0)+1 from complaint where
        substring(doc_no,1,2) = '"+z+"'";
        con.Open();
        SqlCommand cmd = new SqlCommand(sqlno, con);
        string getno =
        Convert.ToString(cmd.ExecuteScalar());
        con.Close();
        string Inquiry_code = yy.Substring(2, 2) +
        getno.ToString().PadLeft(5, '0');
        txtdocno.Text = Inquiry_code;
    }

终于得到了答案。

如果您有其他想法,请提出建议。

最新更新