2016-05-04 14 views
0

私は助けが必要です。私は自動的に英数字IDの例A/001/2016を生成する必要があります。001は1で増分し、2016はvb 2010を使って年を表します。 A/001/2016、A/002/2016、A/003/2016のようになりたいです。vb.netで英数字IDを自動生成

これは私のコードです:

Private Sub autogenerate_ID() 
    Dim mysqlconnection As MySqlConnection 
    Dim command As New MySqlCommand 
    MySqlConnection = New MySqlConnection() 
    MySqlConnection.ConnectionString = " server = localhost; user id = root; password=; database = birth_and_death " 
    Command.Connection = MySqlConnection 
    mysqlconnection.Open() 
    Dim sqlquery = "select Max(Death_ID) from decease " 
    command.CommandText = sqlquery 
    Dim ID As Integer 
    Dim value As String 
    Dim d As String = DateTime.Now.ToString("yyyy") 
    value = command.ExecuteScalar().ToString() 
    If String.IsNullOrEmpty(value) Then 
     value = "D/001/1990" 
    End If 
    value = value.Substring(3) 
    Int32.TryParse(value, ID) 
    ID = ID + 1 
    value = "D/" + ID.ToString("D3") + "/" + d 
    ' value = "A/" + Convert.ToString(ID) + "/" + d 
    TxtDeathID.Text = value 


    command.Dispose() 
    mysqlconnection.Close() 
    mysqlconnection.Dispose() 



End Sub 
+0

このロジックをデータベースに転送することをお勧めします。一般的な考え方は、数値の自動インクリメントの主キーと日付作成フィールドを持つことです。 Aは定数なので、それは問題ではありません。日付から年を得ることができます。それは中間の部分を残す。データベースエンジンによって、n番目のレコードを取得する方法が異なります。あなたのために適切なものを使用してください。選択クエリごとにこれを生成するのか、データベーストリガーを使用して値を格納するのかは、あなたの決定です。最後に、1000番目のレコードの計画があることを確認します。 –

+0

通常、そのようなキーから来るものはほとんどありません。あたかもそのような列があるかのように3ビットのデータをつなぎ合わせるのにSQL CONCATを使うことができます – Plutonix

答えて

0

このお試しください:

If IsDBNull(Command.ExecuteScalar) = False Then 

      Dim t() As String = Split_Serie(Command.ExecuteScalar) 
      Value = "A/" & Format(t(1) + 1, "000") + "/" & Year(Now.Date) 

     Else 

      value = "D/001/1990" 
     End If 

を、あなたはあなたのようタラを分割する機能を作成する必要があります。

Public Function Split_Serie(num As String) As String() 
     Dim t() As String 
     t = Split(num, "/") 
     'Part1 = t(0) 
     'Part2 = t(1) 
     'Part2 = t(3) 
     Return t 
    End Function 
+0

ありがとうございます。 – Thuyba

+0

私はうれしいことを聞いてうれしい答えを解決してマークしていただきありがとうございます。 –

関連する問題