我如何在vb.net中自动编辑一个数字?

时间:2010-12-04 13:19:12

标签: windows vb.net

我想在我的项目中创建一个自动编号....

我使用vb .net 2008和SQl server 2005作为后端??

我想创建一个序列号,就像 abc / 2010/01。。在此..

  1. 所有序列号
  2. 中的 abc 相同
  3. 2010 用于运行年度。(使用年份的日期)
  4. 01 实际序列号,可以是自动类型...
  5. 但我怎么能这样做......? 以及如何我从序列号中找到最大号码 ..... ??? 我怎么能保持它,如果我删除它然后所有删除序列号将放置它的位置..(删除序列号没有中断) ?????? 请帮帮我......

2 个答案:

答案 0 :(得分:1)

这是生成newid的代码段 我采用了一个简单的标签和文本框 label将自动生成newid,textbox将在数据库中插入新记录 在设计页面中选择标签和文本框

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page 
{
    public  static int temp;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            newcode();
        }

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
       SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=practice;Integrated Security=True;");

       con.Open();
        SqlCommand cmd = new SqlCommand("Insert into frmlogin(id,username) values ("+ temp+",'"+TextBox1.Text+"')", con);
        cmd.CommandType = CommandType.Text;
       cmd.Parameters.AddWithValue("username", TextBox1.Text);

        cmd.ExecuteNonQuery();
        con.Close();
        TextBox1.Text = "";
        Label1.Text = "";
        newcode();

    }
    public void newcode()
    {
        SqlConnection con1 = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=practice;Integrated Security=True;");
        con1.Open();
        SqlCommand cmd2 = new SqlCommand("Select Max(id) as empid from frmlogin", con1);
        cmd2.CommandType = CommandType.Text;
        SqlDataReader r = cmd2.ExecuteReader();
        r.Read();

        if (r["empid"].ToString() != "")
        {
            temp = int.Parse(r["empid"].ToString()) + 1;
        }
        else
        {
            temp = 1;

        }

        Label1.Text= temp.ToString();
        r.Close();
        con1.Close();
    }



}

最重要的是你应该在某个地方保持增加的数字,在我的情况下,我使用了文本框和标签。

但我确实建议你去寻找GUID或随机数。

表示GUID:

System.Guid.NewGuid().ToString(); 

还要看here

用于随机数生成

:::使用随机类型[C#] :::

的程序
using System;

class Program
{
    static void Main()
    {
        Random random = new Random();
        Console.WriteLine(random.Next());
        Console.WriteLine(random.Next());
    }
}

::: Output of the program :::

1592498984
1526415661

尝试this

答案 1 :(得分:1)

您可以将序列号存储在数据库表中,其中数字的第三个组成部分是表的主键作为标识字段。每次创建新序列号时,都会将当前年份和静态文本插入表格中。一种简单的方法是将该逻辑包装在不带参数的存储过程中,在内部插入当前年份和文本,并将整个序列号作为单个标量值返回。

类似的东西:

INSERT INTO SerialNumbers (Year, Name) VALUES (year(getdate()), 'abc')

SELECT Name + '/' + CAST(Year AS nvarchar) + '/' + CAST(ID AS nvarchar) FROM SerialNumbers WHERE ID = SCOPE_IDENTITY()