我想从用户输入的日期自动生成 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;
}
终于得到了答案。
如果您有其他想法,请提出建议。