【解決方法】データベース内のフィールドを 1 ずつインクリメントする VB.net のヘルプ

プログラミングQA


こんにちは、みんな、

誰かが私に次のことを手伝ってくれませんか?

少量の Web 開発の学習を開始するために、Visual Web Developer Express と Microsoft の StarterSite を使用しています。 これまで (SQL Server Compact を使用して) いくつかのテーブルのフィールドにデータを入力するための Web ページを取得する練習をしてきましたが、小さな障害に遭遇しました。

ボタンが付いた小さなページがあります。 ボタンをクリックすると、コードでテーブルのフィールドを調べて (フィールド “InvoiceNumber” を呼び出し、テーブル “InvoiceTable” を呼び出す)、最後に保存された数値を取得し、それを “1” ずつ増やしてから保存します。 「InvoiceTable」に戻り、ページに新しい請求書番号を表示します。

現在、このボタンは「新しい請求書」と呼ばれているため、このボタンをクリックすると、テーブル内の最新のものよりも新しい請求書が作成されます。

誰かが助けてくれたら、私は永遠に感謝します.

どうもありがとう

解決策 1

これは、ストアド プロシージャを使用して簡単に実行できます。

DECLARE @invnum INT;
SELECT @invnum = MAX(InvoiceNumber) FROM InvoiceTable

@invnum = @invnum + 1

INSERT INTO InvoiceTable (InvoiceNumber) VALUES (@invnum)

RETURN @invnum
using(SqlCommand cmd = new SqlCommand("proc name", conection))
{
  int invnum = (int)cmd.ExecuteScalar();
}

フィールドが数値の場合、自動付番フィールドを作成し、データベースが値をインクリメントできるようにすることで、同じ効果を得ることができます。

解決策 2

Yoy は、実際のデータベースでこれを行うことはありません。 複数のユーザーがまったく同じ操作を行うという問題があるため、これには AutoId 列の方が適しています。 両者がコードを実行して最後の番号を取得すると、それぞれが同じ結果を出し、同じ請求書番号を作成しようとします。 明らかに、これは非常に悪いことです。

解決策 3

私はあなたのアプローチを変えて、 IDENTITY 桁。 私はこれらの記事を読むだろう

ID列について[^]
SQL SERVER – 列の ID プロパティを追加または削除する[^]

コメント

タイトルとURLをコピーしました