如何生成自定义ID

时间:2014-03-28 07:36:40

标签: vb.net

我想为ID创建自定义值。例如,它将以“CR00001”开头,之后当我第二次保存数据时,它将增加数字部分(例如CR00002)。

以下是我正在使用的代码:

 Dim cr_id As String
 cr_id = "CR00001"
 Dim iReturn As Boolean

 Using SQLConnection As New MySqlConnection(strConnectionString)
     Using sqlCommand As New MySqlCommand()
         sqlCommand.Connection = SQLConnection
         With sqlCommand
             .CommandText = "INSERT INTO cr_record(idcr_record,Emplid,isu,Nama,date1,DeptDesc,email,change1,reasonchange,problem,priority,reasondescription,systemrequest,attachment) VALUES (@cr_id,@Emplid,@isu,@Nama,@date1,@DeptDesc,@email,@change1,@reasonchange,@problem,@priority,@reasondescription,@systemrequest,@attachment)"
             .CommandType = Data.CommandType.Text
             .CommandTimeout = 5000
             .Parameters.AddWithValue("@cr_id", cr_id)

1 个答案:

答案 0 :(得分:0)

如果要生成新ID,请编写一个用于生成ID的函数,并在此处复制此代码。将返回类型保留为String以返回newId

    Dim newId As String
    Dim stringId As String
    Dim intId As Integer
    Dim conn As New System.Data.SqlClient.SqlConnection("Your database query string")
    Dim adpt As New System.Data.SqlClient.SqlDataAdapter("Select id from tableName Where date = (SELECT max(date) from tableName)", conn) 'Where tableName is you table
    Dim ds As New DataSet
    adpt.Fill(ds)
    If ds.Tables(0).Rows.Count = 0 Then 'This will check whether any records are there or not
        newId = "CR00001" ' If records are not there then this id will be returned
    Else
        stringId = ds.Tables(0).Rows(0).Item(0).ToString    'This will store your id in string format
        intId = stringId.Substring(2)       ' This will store only integer values from that id
        intId += 1      ' Increment id by 1
        newId = String.Concat("CR", intId)      ' Creating new Id incremented by 1
    End If
    Return newId