2017-03-06 7 views
0

IDを自動生成するためのヘルプが必要です。私はIDを自動生成するこのコードを持っていますが、インクリメントは10までです。 PO0001で始まり、カウントはPO0010に限定され、PO0010になると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

num.ToString().PadLeft(4, "000")を交換してください:ここ

は、私が使用したコードです。あなたはPKを生成する予定の場合、それをしないでください。 – Plutonix

+0

@Plutonix私は、自動インクリメント列を使用しないため、SQLで複数行に自動生成されたIDを使用します。リストビューからは、自動生成されたIDを使用してデータがデータベースに保存されるため、作成したIDを使用してデータを選択すると複数の行を選択できます。 –

+0

このデータは実際に何を表していますか? 2つのテーブルを使用する方が良いと思われる場合は、両方のケースでデータベースにIDを生成させることができます。 1つの行が親テーブルに追加され、1つのIDが生成され、複数の行が同じ親IDを持つ子テーブルに追加されます。 – jmcilhinney

答えて

0

あなたは常に表示のためにそれにIDと前に付加 "PO" のAutoIncrement列を使用することができFormat(num,"000#)

関連する問題