0

Btngenを使用してTextBoxのIDを生成し、0001それをSQLSERVERのDBに保存しました。問題は、プログラムを閉じて再度開いた後、Btngenをもう一度クリックした後にTextBoxに生成される値を再度開くことです。まだ0001です。どうすればそれを回避できますか?すでに生成されている値を保持して次の値に移動するにはどうすればよいですか?インクリメントを使用しますが、プログラムの実行中にのみ機能しますが、プログラムを閉じて再度実行すると、元に戻り0001ます。誰かに方法を教えてもらえますか?

これが私のコードです:

Dim p1num As Integer = 0
 p1num += 1
 txtPNumber.Text = p1num.ToString("D4")

Dim SQLcon As New SqlConnection
        Dim SQLdr As SqlDataReader
        Try
            SQLcon.ConnectionString = "Data Source=####;Initial Catalog=####;Persist Security Info=True;User ID=####;Password=####"
            Dim SQLcmd As New SqlCommand("INSERT INTO dbo.Patients" & _
            "(pIDNo)" & _
            "VALUES(@pIDNo",SqlCon)
            SQLcmd.Parameters.AddWithValue("@pIDNo", txtPNumber.Text)
            SQLcon.Open()
            MsgBox("Patient Added!", MsgBoxStyle.Information)
            SQLdr = SQLcmd.ExecuteReader()
        Catch ex As Exception
            MessageBox.Show("Error Occured, Can't Add Patient!" & ex.Message)
        Finally
            SQLcon.Close()
        End Try
4

1 に答える 1

1

このようにしてはいけません。

各レコードに、レコードが作成されるたびに 1 ずつ増加する一意の生成された整数 ID が必要な場合は、データベースの Identity フィールドを使用します。

列プロパティの ID 仕様で、次のように設定します。

  • (IsIdentity) を「はい」に
  • ID を '1' にインクリメント
  • IDシードを「1」に

おそらく、この値をテーブルの主キーにする必要もあります。

レコードを保存したら、データベースにクエリを実行して、生成された ID 値を UI に表示する必要があります。

于 2013-02-07T15:13:16.987 に答える