2017-05-30 5 views
0

私のVBプログラムでIDを生成したいのですが、最新の自動インクリメント番号を取得して追加しますが、コードが機能しません。私はそれを間違っているのですか?私を助けてください!ありがとう!ここでvbを使用してSQLの自動インクリメント値に+1を追加する

はコードです:

OpenServer() 
    Dim num As Integer 
    Dim num1 = num + 1 
    Newdataset("SELECT MAX(IDnum) AS IDnum FROM addnewemployee WHERE IDnum = '" & num & "' ") 
    txtEmpNumber.Text = "" & num1 & "." & dtpdatehired.Value.ToString("yyyyMMdd") & "" 
+0

どのデータベースプラットフォームですか? – OldProgrammer

+0

Mysqlデータベースプラットフォーム – Charles

+0

あなたは 'num'を検索する前に' num1' **をインクリメントしているようです。これは動作しません。 –

答えて

0

あなたの方法はいくつかの欠点を持っています。

まず、あなたのSQL文は次のようになります。

SELECT MAX(IDnum) AS IDnum FROM addnewemployee 

これはaddnewemployeeテーブルから最高IDnumを取得します。この問題は、上位のレコードが作成され削除された場合に発生します。戻り値はです。 IDがのレコードが作成され削除された可能性があります。

あなたが本当に使いたいクエリがAuto_incrementという名前の列を取得します

SHOW TABLE STATUS WHERE `Name` = 'addnewemployee' 

です。その値をデータセットから取得し、それをインクリメントします。

しかし、これを行うには、悪い考え方であるです。

複数の依存する挿入がある場合は、retrieve the id at the time of insertのいずれかを省略して変数に格納します。または、1つのステートメントまたはストアドプロシージャですべてを実行することをお勧めします。

関連する問題