DB・SQLSERVER初心者ですので、表現に整合性が無い場合が有りますことを
ご考慮ください。
WindowsXP Pro SP3
ACCESS 2003
WindowsServer2003 R2
SQLSERVER 2005
ACCESS VBAでリンクしたACCESSのDBのテーブルでオートナンバー型を指定した
フィールドが有ります。[番号](int型)
以下の構文で、新規の番号がセットされ、レコードを作るようになっています。
DoCmd.GoToRecord , , acNewRec
今回、リンク先テーブルをSQLSERVERにODBC接続テーブルに変更し、
同じような機能と使用法を探していますがよく分かりません。
色々調べて見た結果、
SQL Server Manegement Studioの設定、テーブルデザインにて[番号]の列のプロパティ
「INDENTITYの指定」に糸口がありそうだとたどり着き、ここを「はい」とし、
「INDENTITY インクリメント」=1 と設定してみました。
この時「INDENTITY シード」も勝手に1と設定されました。(意味不明)
ここから先が分かりません。
DoCmd.GoToRecord , , acNewRec
で[番号]はNULLとなってしまいます。
VBAを最小限の変更としたいのですが、ご経験の方いらっしゃいましたら、
設定法・コーディングを教えていただけましたら幸いです。
こんにちは。
わかるところだけお答えします。
AccessのオートナンバーをSQL Serverで対応させるとするとIdentityを「はい」でよいです。
インクリメントは、レコードが一件増えるたびにどれぐらい数を増やすかです。
シードは種という意味ですが、初期値を表します。
例えば、インクリメントを10として、シードを0とすると、
0>10>20>30となります。
ですので、Accessと同じにするなら、インクリメントが1でシードも1でよいかと思います。
で、この値がいつ確定するかというと、新たに挿入されたレコードが確定された時です。
確定していない状態、例えば、ここは推測ですが、VBAなどでADOで新規レコードに値を設定中ですと、
Identityの値は「まだ発行されていません」。
Accessでは、自動でレコードが確定しますが、そのタイミングはほかの行へ移動したりなどあると思いますが、
SQL ServerなどのDBではコミットしないと確定しません。
commitとrollbackのあたりを調べてみるとよいのではないでしょうか。
ダミー