こんにちは。

Access2000を複数のユーザーで使用したいのですが、
上手く排他ロックがかからなくて困っています。

使用状況を説明しますと、テーブルのみの入ったデータベース(DT)を
サーバーに置き、使用するユーザーのコンピュータにはフォームや
レポートの入ったデータベース(PG)を置いて、それぞれサーバーから
テーブルをリンクしています。

PGには複数のフォームがあり、例えばフォーム(1)を誰かが使用しているときは
他の人はフォーム(1)は使用できないけど、他のフォーム(2)、フォーム(3)の
使用はできるようにしたいのです。

どなたかご存知の方いらっしゃいましたら回答お願いします。

A 回答 (1件)

基本的には不可能です。


Access2000は、複数のユーザが同時使用する事を考慮していません。

 従って、プログラムの方で小細工をする必要があります。
 例えば、フォームを開く時に、ある特定のエリアにフラグを立てて、そのフラグがたっている時には、別の誰かが使っているって事で、フォームの使用を禁止する様にするしか手がないです。

この回答への補足

mnabeさんに教えていただいた内容を上司に伝え、
お伺いを立てたところ、ネットワーク対応はしなくても
よい、ということだったので、とりあえず現状のまま
使用できそうです。もし今後するようでしたら
参考にさせていただいてやってみたいと思います。
どうもありがとうございました。

補足日時:2001/06/07 09:18
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
やはりそうするしかないのですね。
やってみます。

お礼日時:2001/06/07 09:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qアクセス フォーム テーブルを引用し、フォームを作成しました。 投入した結果がテーブルに上書きされま

アクセス フォーム

テーブルを引用し、フォームを作成しました。
投入した結果がテーブルに上書きされません。
設定方法を教えて下さい。
また、投入時は1か0を選択するプルダウンを作りたいのですが、どのように作るのでしょうか?

Aベストアンサー

テーブルの引用とのことですが、それはレコードソースに設定してあるということですか?
各テキストボックス等のコントロールソースも設定してありますか?
プロパティで確認してください。

レコードソース、コントロールソースが分からない場合は、ウィザードを使ってフォームを作りましょう。

Q[Access]複数のサブフォームで1つのテーブル

1つのフォームに複数のサブフォーム(sb1,sb2,sb3)があります。
そのサブフォームは1つの同じテーブルを参照しています。
そこで、sb1, sb2, sb3にデータを入力すると
全て別のレコードに書き込まれます。
これを1つのレコードに書き込む方法はないでしょうか?

簡単に、
sb1 には個人情報
sb2 には会社情報
sb3 にはメールアドレス
のようになっています。

これが
レコード1 個人情報
レコード2        会社情報
レコード3               メールアドレス

となってしまいます。
これを

レコード1 個人情報 会社情報 メールアドレス

とするにはどうしたらよいでしょうか??
よろしくお願いします。

Aベストアンサー

それぞれのサブフォーム更新後にリクエリーすればできそうな気がしますが。
ひとつの入力フォーム上に、同一テーブルを参照するサブフォームを複数置く設計は、No1で回答した方が述べているように、あんまりよい方法ではないと、私も思います。

Qユーザーフォームのデータを他のシートへコピーしたいのですが

オフィス2003VBAでユーザーフォームのスプレッドシートにあるデータを別のシートにコピーをしようとしています。
マクロを実行すると、以下のコードがエラーとなってしまいます。
どう直せばよいか教えていただけないでしょうか?
できればクリップボードの経由なしでコピーをしたいです。
よろしくお願いします!


Spreadsheet1.Range(Cells(V1_row + 1, V1_col), Cells(V1_row + 2880, V1_col)).Copy _
ThisWorkbook.Worksheets(\"04-02_cbt\").Range(\"B8\")

Aベストアンサー

こんにちは。

無理じゃないかな。SpreadSheet って Office Web Compornents の OCX
コントロールですよね? コントロールの追加で言えば、

  Microsoft SpreadSheet x.x  (x はバージョンを示す)

のこと?

これは同じ Microsoft 製品だとしても Excel.exe とは別物ですから、
同じようなプロパティー、メソッドを備えているとしてもごちゃ混ぜには
できません。

実際に試して、Copy メソッドの名前付き引数 Destination に Excel.exe
配下の Range を指定できないのなら、そういうもの(仕様)なのでしょう。

> できればクリップボードの経由なしでコピーをしたいです。

なぜ?

クリップボード経由なら簡単にできますよね?

クリップボードで何か特殊なことを同時に行うため干渉されたくない、、
などの事情がない限り、拘る意味がない気がします。

' // クリップボードを使って転記する例(一部書式もコピーされる)
Private Sub CommandButton1_Click()

  Spreadsheet1.Worksheets("Sheet1").Range("A1:C2").Copy
  Worksheets("Sheet1").Range("A1").PasteSpecial

End Sub


一応、Variant 型配列を使うという手もありますけど、値のみのコピーに
なりますし、オンメモリという点ではクリップボード経由と差がありません。

' // 配列を使って値を転記する例
Private Sub CommandButton1_Click()
  
  Dim v As Variant
  v = Spreadsheet1.Worksheets("Sheet1").Range("A1:C2").Value
  Worksheets("Sheet1").Range("A1").Resize(UBound(v), UBound(v, 2)).Value = v
  
End Sub

それから余談になりますが、、

> Spreadsheet1.Range(Cells(V1_row + 1, V1_col), ...以下略

ではダメですよ。コピー元として SpreadSheet1 配下の Range を指定したい
のであれば、

  ・Worksheet の指定が必要
  ・Range 内 の Cells にも親オブジェクトの装飾が必要

です。例えばこんな感じ。

With Spreadsheet1.Worksheets("Sheet1")
  .Range(.Cells(V1_row + 1, V1_col), .Cells(V1_row + 2880, V1_col)).Copy
End With

のように。装飾を省略すると Excel.exe の ActiveSheet が自動補完されてしまい
ますから、SpreadSheet 配下のモノなのか、Excel 配下のモノなのかに留意
して下さい。

こんにちは。

無理じゃないかな。SpreadSheet って Office Web Compornents の OCX
コントロールですよね? コントロールの追加で言えば、

  Microsoft SpreadSheet x.x  (x はバージョンを示す)

のこと?

これは同じ Microsoft 製品だとしても Excel.exe とは別物ですから、
同じようなプロパティー、メソッドを備えているとしてもごちゃ混ぜには
できません。

実際に試して、Copy メソッドの名前付き引数 Destination に Excel.exe
配下の Range を指定できないのなら、そういうもの(仕...続きを読む

Q複数のユーザーフォームをコマンドボタンにて表示・非表示させるには

VBA勉強中のものです。

複数のユーザーフォームをコマンドボタンを使用して画面への表示切替を考えております。
例)ユーザーフォーム1,ユーザーフォーム2,ユーザーフォーム3のそれぞれにコマンドボタン1,コマンドボタン2,コマンドボタン3を作成し、
  コマンドボタン1→ユーザーフォーム1を表示
  コマンドボタン2→ユーザーフォーム2を表示
  コマンドボタン3→ユーザーフォーム3を表示 とするようなことを考えおります。
 そこで、下記のようにコードを作成したのでですが,一度表示させたユーザーフォームを再度表示させようとコマンドボタンをクリックしたら、「フォームはすでに表示させているのでモーダル表示はできません」とエラーがでてしまいます。
  どなたか、どのようにしたらいいかご教授ねがいます。

サンプルコード)
---------------------------------------------------
'UserForm1のコード

Private Sub CommandButton2_Click()
Call UserForm2_show
UserForm1.Hide
End Sub

Private Sub CommandButton3_Click()
Call UserForm3_show
UserForm1.Hide
End Sub
----------------------------------------------------
'UserForm2のコード

Private Sub CommandButton1_Click()
Call UserForm1_show
UserForm2.Hide
End Sub

Private Sub CommandButton3_Click()
Call UserForm3_show
UserForm2.Hide
End Sub
-------------------------------------------------------
'UserForm3のコード

Private Sub CommandButton1_Click()
Call UserForm1_show
UserForm3.Hide
End Sub

Private Sub CommandButton2_Click()
Call UserForm2_show
UserForm3.Hide
End Sub
------------------------------------------------------------
'標準モジュール コード

Sub UserForm1_show()
UserForm1.Show
End Sub

Sub UserForm2_show()
UserForm2.Show
End Sub

Sub UserForm3_show()
UserForm3.Show
End Sub

VBA勉強中のものです。

複数のユーザーフォームをコマンドボタンを使用して画面への表示切替を考えております。
例)ユーザーフォーム1,ユーザーフォーム2,ユーザーフォーム3のそれぞれにコマンドボタン1,コマンドボタン2,コマンドボタン3を作成し、
  コマンドボタン1→ユーザーフォーム1を表示
  コマンドボタン2→ユーザーフォーム2を表示
  コマンドボタン3→ユーザーフォーム3を表示 とするようなことを考えおります。
 そこで、下記のようにコードを作成したのでですが,一度表示させたユーザー...続きを読む

Aベストアンサー

モードレスではない状態で2つのユーザーフォームを同時表示させようとしているので、エラーになっているのです。
UserForm1をHideしてから、UserFrom2を表示するようにすればいいのです。

Private Sub CommandButton2_Click()
UserForm1.Hide
Call UserForm2_show
End Sub

Private Sub CommandButton3_Click()
UserForm1.Hide
Call UserForm3_show
End Sub

Qカレンダーフォームの日付をユーザーフォームに登録したい

ユーザーフォームにいくつかの入力欄としてテキストボックスを作成しました。
その中に日付を入力したい欄があるため同じユーザーフォーム内にカレンダーを作成しました。
このカレンダーをクリックした日付がユーザーフォーム内の任意のテキストボックスに入力されるようにしたいのですが、可能でしょうか?

教えてください。よろしくお願いします。

Aベストアンサー

こういう事ですか?

Private Sub Calendar1_Click()
TextBox1.Text = Calendar1.Value
End Sub


このカテゴリの人気Q&Aランキング

おすすめ情報