2016-05-04 6 views
0

Ich brauche eine Hilfe. Ich möchte automatisch alphanumerische ID Beispiel A/001/2016 generieren, wobei 001 um 1 erhöht werden sollte und 2016 Jahr mit vb 2010 darstellen. Ich möchte wie A/001/2016, A/002/2016, A/003/2016Automatische Generierung alphanumerischer ID in vb.net

Dies ist mein Code:

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

Ich empfehle, dass Sie diese Logik in die Datenbank übertragen. Die allgemeine Idee wäre, einen numerischen Autoinkrementierungs-Primärschlüssel und ein Feld für das Erstellen eines Datums zu haben. Das A ist eine Konstante, also ist das egal. Sie können das Jahr ab dem Datum erhalten. Das lässt den mittleren Teil übrig. Verschiedene Datenbank-Engines haben unterschiedliche Möglichkeiten, den n-ten Datensatz zu erhalten. Verwenden Sie das für Sie passende. Ob Sie dies bei jeder ausgewählten Abfrage generieren oder ob Sie einen Datenbanktrigger zum Speichern des Werts verwenden, ist Ihre Entscheidung. Stellen Sie sicher, dass Sie einen Plan für den tausendsten Datensatz haben. –

+0

gibt es wenig Gutes, das normalerweise von solchen Schlüsseln kommt. Sie können SQL CONCAT verwenden, um 3 Datenbits zusammen zu kleben, als ob es eine solche Spalte gäbe. – Plutonix

Antwort

0

Versuchen Sie folgendes:

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 

und Sie müssen eine Funktion erstellen, die Ihre cod aufgeteilt als:

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

Vielen Dank, es funktioniert jetzt. – Thuyba

+0

Gut ich freue mich zu hören, dass bitte Antwort als gelöst markieren und danke auch danke –

Verwandte Themen