0

データベースに新しいデータを追加した後、新しいデータを追加しているときに、データベースで ID エラーが発生しました。

    Private Sub TabPage1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabPage1.Click
    Call setconnection()
    Try
        cd = New OleDbCommand("select * from  stud ", cn)
        dr = cd.ExecuteReader
        While dr.Read = True
            TextBox345.Text = dr.Item(0) + 1
        End While
        dr.Close()
        cn.Close()
    Catch ex As Exception
        MsgBox("Invalid Customer id! ")
    End Try

    Call setconnection1()
    Try
        cd = New OleDbCommand("select * from  instud ", cn)
        dr = cd.ExecuteReader
        While dr.Read = True
            TextBox423.Text = dr.Item(0) + 1
        End While
        dr.Close()
        cn.Close()
    Catch ex As Exception
        MsgBox("Invalid Customer id! ")
    End Try
   End Sub

このコードは、1-1000 コンピューター サイエンス 1001-2000 バイオ テック 2001-3000 IT 3001-4000 のプレーン BSc の場合のように、すべてのストリームのすべての学生の新しい ID を自動的に生成します。

私が直面しているエラーは、新しいデータを追加してからしばらくすると、特定の数の後に ID が増加しないことです。私はそれがそうする理由も見つけました:datagirdviewで10人の学生の詳細を追加すると、最後のIDは10であり、次のID、つまりID 1の前に11を配置するため、コードは最後のIDの値を10として取得し続けますこれ以上進まない!!! 私が行き詰まっているのを助けてください!!

4

1 に答える 1

2

あなたがしていることを行うためのより良い方法があると確信していますが、限られたコードからわかる理由から、あなたは最大の価値を引き出したいと思う. すべてのリストをループして各数値を同じテキスト ボックスに設定する代わりに、最大の数値を取得してから設定します。

それ以外の

While dr.Read = True
    TextBox345.Text = dr.Item(0) + 1
End While

これを試して

Dim maxId as Integer = 0

While dr.Read = True
    If maxId < dr.Item(0) Then maxId = dr.Item(0)
End While

TextBox345.Text = maxId + 1

トップ ID を取得したい場合は、データベースから直接取得することをお勧めします。

select max(id) from  stud 
于 2013-07-29T12:45:04.670 に答える