2016-07-20 4 views
0
Public Sub CustomID() 
    con.Open() 
    sql = "SELECT Max(Right(Delievery Number,4)) As Delievery Number From tbl_monitoring " '[Delievery Number] From tbl_monitoring 
    command = New OleDbCommand(sql, con) 
    reader = command.ExecuteReader 
    reader.Read() 

    If Not reader.HasRows Or IsDBNull(reader.Item("Delievery Number")) Then 
     txtDel.Text = "Del" & "0001" 
    Else 
     Dim Idnew As Integer = CInt(reader.Item("Delievery Number")) 
     Idnew += 1 
     txtDel.Text = "Del" & Idnew.ToString("0000") 
    End If 

    reader.Close() 
End Sub 
+0

私はデータベースの正しいクエリに慣れていません。私は助けてください。それは構文に何か間違っていると言います。読者は未処理です。 – NiewBiee2020

+0

自動インクリメントIDの目的は、各行に固有の識別子を提供することです。 'Del ###'にコード化された情報を持つIDは、PKのための悪い考えです。第二に、ユーザーがテキストボックスでそれを編集できるようにすることは、それがPKである場合、非常に悪い考えです。第3に、 'SELECT Max('行が削除されたときに最終的に失敗する可能性があります。 – Plutonix

+0

今、私は助けてくれてありがとうございます。 – NiewBiee2020

答えて

0

手動で生成する場合は、自動番号ではないことを最初に指摘します。

この問題は、列名にスペースが含まれているという現象です。可能であれば、その列の名前を「Delievery Number」から「DelieveryNumber」に変更します。英語の場合は、正しいスペルを使用して「DeliveryNumber」と名前を付けます。

カラム名を変更できない場合は、SQLでエスケープする必要があります。つまり、[Delievery Number]を使用します。

+0

助けてくれてありがとう!)@jmcilhinney – NiewBiee2020

関連する問題