2017-03-06 153 views
0

需要自動生成ID的幫助。我有這個自動生成ID的代碼,但最多隻有10個增量。它始於PO0001並且只計數到PO0010,一旦到達PO0010該ID卡在PO0001中。自動生成字母數字ID

這裏是我使用的代碼:

Public Function newPOID(prefix As String, storedProcedure As String) As String 

    Dim newId As String = prefix + "0001" 
    Dim adpt As New SqlDataAdapter 
    Dim ds As New DataSet 
    Dim dr As SqlDataReader 
    Dim conn As New SqlConnection 
    conn.ConnectionString = conString 
    utos = New SqlCommand(storedProcedure, conn) 
    utos.CommandType = CommandType.StoredProcedure 
    conn.Open() 
    dr = utos.ExecuteReader 

    If dr.Read Then 
     If dr.IsDBNull(0) Then 
      Dim num As Integer = 1 
      'Dim prefix As String = "PO" 
      Dim append As String = prefix + num.ToString().PadLeft(4, "000") 
      newId = append 
     Else 
      Dim POstring As String = dr(0).ToString.Substring(0, 3) 
      Dim POID As Integer = dr(0).ToString.Substring(5) + 1 
      Dim append As String = POstring + POID.ToString().PadLeft(3, "000") 
      newId = append 
     End If 
     conn.Close() 
    End If 


    Return newId 

End Function 
+0

你總是可以使用的ID和前面加上「PO」自動增量列到它的顯示。如果你打算生成PK,不要這樣做。 – Plutonix

+0

@Plutonix我將在SQL中爲多行使用自動生成的ID,這就是爲什麼我不能'使用自動增量列。在列表視圖中,數據將使用自動生成的ID保存在數據庫中,以便當我使用創建的ID選擇數據時,我可以選擇多行。 –

+0

這些數據實際上代表什麼?在我看來,使用兩個表可能會更好,在這種情況下,您可以簡單地讓數據庫在兩種情況下生成ID。將一行添加到父表中並生成單個標識,然後將多行添加到具有相同父標識的子表中。 – jmcilhinney

回答

0

更換num.ToString().PadLeft(4, "000")Format(num,"000#)