私は助けが必要です。私は自動的に英数字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
このロジックをデータベースに転送することをお勧めします。一般的な考え方は、数値の自動インクリメントの主キーと日付作成フィールドを持つことです。 Aは定数なので、それは問題ではありません。日付から年を得ることができます。それは中間の部分を残す。データベースエンジンによって、n番目のレコードを取得する方法が異なります。あなたのために適切なものを使用してください。選択クエリごとにこれを生成するのか、データベーストリガーを使用して値を格納するのかは、あなたの決定です。最後に、1000番目のレコードの計画があることを確認します。 –
通常、そのようなキーから来るものはほとんどありません。あたかもそのような列があるかのように3ビットのデータをつなぎ合わせるのにSQL CONCATを使うことができます – Plutonix