人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ACCESSのオートナンバー型をSQLSERVERで実現可能?

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を最小限の変更としたいのですが、ご経験の方いらっしゃいましたら、
設定法・コーディングを教えていただけましたら幸いです。

●質問者: Sweet
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:access dB ODBC R2 SQL Server
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● freemann
●60ポイント

こんにちは。

わかるところだけお答えします。

AccessのオートナンバーをSQL Serverで対応させるとするとIdentityを「はい」でよいです。

インクリメントは、レコードが一件増えるたびにどれぐらい数を増やすかです。

シードは種という意味ですが、初期値を表します。

例えば、インクリメントを10として、シードを0とすると、

0>10>20>30となります。

ですので、Accessと同じにするなら、インクリメントが1でシードも1でよいかと思います。

で、この値がいつ確定するかというと、新たに挿入されたレコードが確定された時です。

確定していない状態、例えば、ここは推測ですが、VBAなどでADOで新規レコードに値を設定中ですと、

Identityの値は「まだ発行されていません」。

Accessでは、自動でレコードが確定しますが、そのタイミングはほかの行へ移動したりなどあると思いますが、

SQL ServerなどのDBではコミットしないと確定しません。

commitとrollbackのあたりを調べてみるとよいのではないでしょうか。

http://www.google.com

ダミー

◎質問者からの返答

ご回答ありがとうございます。

ご指摘のように、Accessはタイミングが決め手の作りになっています。

アプリ側番号が振られた後のMDB側レコード番号確定の順番に苦慮しています。

複数アプリ同時アクセスの欠番対策方法を考え直さねばなりません。

別テーブルを用意して何らかの方法で対処しようと思っています。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ