Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


304 / 2272 ツリー ←次へ | 前へ→

【12182】複数PCから共有データに通し番号をつけたい ゆう 12/10/24(水) 0:41 質問[未読]
【12184】Re:複数PCから共有データに通し番号をつけ... 小僧 12/10/24(水) 16:22 回答[未読]
【12189】Re:複数PCから共有データに通し番号をつけ... ゆう 12/10/26(金) 14:39 質問[未読]
【12194】Re:複数PCから共有データに通し番号をつけ... 小僧 12/10/27(土) 12:16 回答[未読]
【12198】Re:複数PCから共有データに通し番号をつけ... ゆう 12/10/29(月) 14:59 お礼[未読]

【12182】複数PCから共有データに通し番号をつけた...
質問  ゆう  - 12/10/24(水) 0:41 -

引用なし
パスワード
   はじめまして、ゆうと申します。
よろしくお願いします。

複数のパソコンで処理できるようにMDBを分割してデータベース本体(テーブルのみ)を共有サーバーに置き、リンクしたMDBを各パソコンに置きました。

同期やレプリカについて調べましたが、どのタイミングで何を行えば良いのかわかりません。
入力画面を2台同時に開ている時、どちらで入力した内容も保存する為にはどうすれば良いのでしょうか?

受注番号は通し番号で付けていますが、1台だけで使用していた時は「登録」ボタンを押すと受注番号の最後の番号+1になるようにしていましたが、2台同時に開いている場合はどのように設定すればよいのでしょうか?

1台目が受注番号2002を登録したら、2台目が「登録」を押した時には2003がつくようにしたいです。
1台目が入力して同期を行っても、2台目がその間同期していないと2002になってしまうのでしょうか?

わかりにくい説明で申し訳ありませんが、アドバイス頂ければ幸いです。
よろしくお願いします。

【12184】Re:複数PCから共有データに通し番号をつ...
回答  小僧  - 12/10/24(水) 16:22 -

引用なし
パスワード
   ▼ゆう さん:
こんにちは。

複数MDBの運用については色々と難しい事がありますよね。

>「登録」ボタンを押すと受注番号の最後の番号+1になるようにしていましたが、

この操作方法をどの様に行っていたかによってやり方が変わりますね。

以下はあくまで当方のやっている一例という事で参考にして下さい。

1) 受注テーブルとまったく同じ構成のテーブルを
  フォームの入っているクライアント側のMDBに準備
  (ワークテーブルと呼びます)

2) データを新規投入する際は受注番号以外を
  いったんワークテーブルに書き出す。

3) データの登録時に、本番テーブルより受注番号+1を採番し、
  ワークテーブルの内容をリンクされた本番テーブルへ書き込む

上記の様な処理を行うと、
本番テーブルを占有する時間が短くする事が可能です。

リンクテーブルを元にフォームを作ってしまうと、
2台以上のMDBが同じテーブルを占有しあおうとして
MDBの破損に繋がる場合が多々ありますので気をつけて下さい。

【12189】Re:複数PCから共有データに通し番号をつ...
質問  ゆう  - 12/10/26(金) 14:39 -

引用なし
パスワード
   小僧 さんへ

ありがとうございます。お礼が遅くなって申し訳ありません。
ワークテーブルを作ったことがなかったので時間が掛かってしまいました。

>>「登録」ボタンを押すと受注番号の最後の番号+1になるようにしていましたが、
>
>この操作方法をどの様に行っていたかによってやり方が変わりますね。

「登録」ボタンを押すとマクロのアクション「値の代入」で、nz(DMax("受注番号","T_入力"),0)+1 をしていました。

この方法で大丈夫でしょうか?


ワークテーブルに新規データを入力後、追加クエリで元のデータに追加して
通し番号を取得、その後ワークテーブル側のデータを削除するようにしましたが、合っていますか?

Requery は必要でしょうか?
必要な場合、どこに入れればよいのか分かりません。

何度もお手数お掛け致しますが、教えて頂ければ幸いです。

【12194】Re:複数PCから共有データに通し番号をつ...
回答  小僧  - 12/10/27(土) 12:16 -

引用なし
パスワード
   ▼ゆう さん:
こんにちは。


> ワークテーブルに新規データを入力後、
> 追加クエリで元のデータに追加して
> 通し番号を取得、
> その後ワークテーブル側のデータを
> 削除するようにしましたが、合っていますか?

ほんのわずかなタイミングですが、
2台以上からの端末から操作した場合、
値がバッティングする場合があります。
追加クエリの受注番号の所に

> nz(DMax("受注番号","T_入力"),0)+1

を指定した方がより安全な気がします。


>Requery は必要でしょうか?

画面を再描画する際には必要となりますが、
テーブルに値を入れるだけでしたら特に必要はないかと思われます。

【12198】Re:複数PCから共有データに通し番号をつ...
お礼  ゆう  - 12/10/29(月) 14:59 -

引用なし
パスワード
   ▼小僧 さん:

こんにちは。

>追加クエリの受注番号の所に
>
>> nz(DMax("受注番号","T_入力"),0)+1
>
>を指定した方がより安全な気がします。

この通りに直して試してみたところ、2台で交互に
データ入力してもちゃんと新しい番号を取得できました。

教えて頂きましてありがとうございました。

304 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078190
(SS)C-BOARD v3.8 is Free