- ベストアンサー
ACCESSのテーブルロックについて
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
そりゃ、無理でしょう。「そのフォーム」、元となるテーブルがなくなっては困りますから。 1)「そのフォーム」を閉じてから、テーブル作成し、フォームを再表示させてはどうでしょうか? 2)テーブルのレイアウトが変更されないなら、削除クエリー、レコード追加クエリーを使うことができます。ただ、この場合、「そのフォーム」に表示されているレコードは削除されているので、「delete」という表示になります。(再表示しないと意味がないです。) 3)最初のフォームと後のフォームと並べて比較したいなら、テーブル作成クエリーも、フォームも別名にして作成する必要があると思います。
その他の回答 (1)
1)テーブル作成しなおす必要、ないですよね。 社員番号、社員名、住所が入っている選択クエリーを作ってください。 抽出条件(where句)に、Forms![フォーム名]![社員番号]を入れてくださいね。 DoCmd.Requery(あと引数が必要かも)でリクエリーしなおすと思います。 2)社員番号って、一意ですよね。1人探したらいいだけですよね。 dlookup関数を使うこともできます。 例えば、住所のテキストボックスのソースフィールドに 社員番号が数値の場合でしたら、 =DLookup("住所", "住所テーブル", "社員番号=" & 検索社員番号フィールドの名前 ) 社員番号がテキストの場合でしたら、 =DLookup("住所", "住所テーブル", "社員番号='" & 検索社員番号フィールドの名前 & "'" ) と指定する方法もあります。 "や'や&の使い方を間違えないように。 調べてから使ってください。 3)全部のフィールドを一覧表に並べておいて、双眼鏡マークの「検索ボタン」を押して探してもらえばいいんじゃないですか? そうしたら、名前で探すこともできるし、うろ覚えの社員番号でも探せるし。 使い方を限定すると、使いにくいものにあることがあります。 作りこむより、アクセスの機能を活用しちゃいましょう。
お礼
ありがとうございました。 あれからいろいろとアレやコレやと試してみましたが、 やっぱりアクセスの機能を活用する方が無難ですね。 どうしても見た目のかっこよさにこだわって検索結果を同一のフォームに表示させたかったのですが、入力フォームと結果参照フォームにわけることにしました。
関連するQ&A
- Accessのmdbがすぐロックされてしまう。
お世話になります。 現在access2002を使ってシステムを構築しています。現状を説明させて頂くと, ・私 テーブル,クエリやマクロ等を作成・編集。 ・ユーザー テーブルやクエリを参照。テーブルの中身を編集。 という状況なんですが,ユーザーがクエリ等を開いているだけで全体にロックがかかってしまい,関係ないマクロやクエリの編集が出来ないことがよくあります。 「ユーザーが使う時間帯に編集しない」「先に開いてずっと所有権をもったままにしておく」「参照するようのファイルを別で作りそちらで参照させる。」等の運用面のカバーは思いつくのですが,ユーザーが現在編集しているテーブル以外にロックがかかる状態がやるせないです。 ・既定の開くモード「共有モード」 ・既定のレコードロック「編集済みレコード」 ・レコードレベルでロックして開くにチェック。 この三つを選択しているので,ユーザーがテーブルを開き,何らかの修正を行っていて,完了させるまではテーブル一つだけがロックされるってなればいいと思うんですがそうではないみたいです。 最終的な質問としては,「ユーザーがテーブルの編集をする度に全体にロックがかかってしまうのを防ぐ方法はないでしょうか?」となります。 お手数おかけしますがご回答宜しくお願い致します。
- 締切済み
- オフィス系ソフト
- ACCESS 複数のフォームから同一テーブル参照
いつもお世話になっております。MS-ACCESSにおいて同一のテーブルを利用したフォームとレポート等を開こうとすると、「テーブル '<テーブル名>' は現在ほかのユーザーまたはプロセスで使用されているので、ロックできませんでした。」となります。このエラーを回避する方法はわかりますでしょうか?一応、共有モードで開くようには設定されているのですが・・・・よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Access2003 テーブルロック
Access2003で任意のテーブルをロックすることはできますでしょうか? 1.ユーザAがテーブル1にアクセスしにいき、テーブル1をロック 2.ユーザAは処理が終了したらテーブル1のロックを解除 1~2の処理の間はユーザA以外のユーザがテーブル1にアクセスできないようにしたいのです。 ロックファイルを使用するやり方もあると思いますが なるべく簡単に実現したいので、 なるべくロックファイルやアプリケーション変数は使いたくありません。 (サーバーが落ちた場合に永久にロックされてしまうので) 何かよい方法をご存知の方がいらしたらご教授お願いします。
- 締切済み
- その他(データベース)
- ACCESSのテーブル作成クエリについて
お世話になっております。 以下の点について教えてください。 1.テーブル作成クエリで作ったテーブルの書式固定 クエリ実行後、テーブルは作成されるのですが、クエリで設定した書式が 反映されません(例:数値→標準→小数点以下3)。 クエリで設定した書式をテーブルに反映させる方法を教えてください。 現在は、テーブル作成クエリ実行後、いちいち、テーブルの書式を変更しております。 2.ユーザー設定モードでのオブジェクト移動 ・ACCESSをユーザー設定 & グループでフィルターの状態で使っています。 ・この状態でテーブル作成クエリとテーブル作成クエリ実行後に作成されるテーブルを グループ分けして分類しておりますが、各グループにあるテーブル作成クエリを 実行すると、グループ内にあったテーブルが「割り当てられていないオブジェクト」に 移動してしまいます。 テーブルをグループ内に固定する方法を教えてください。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- access 3211エラー
access についての質問です。 現在、sqlにてテーブルを作成してそのテーブルをレコードソースとしてサブフォームなどの帳票フォームを表示したりしてるのですが、二回に一回は 【実行時エラー 3211 現在ほかのユーザーまたはプロセスで使用されているのでロックできませんでした】 となってしまいます。 原因はなんでしょうか?
- 締切済み
- その他(データベース)
- 一括テーブルロック デッドロック対策
はじめまして。 ken7761227と申します。 SQL Server2008R2でデッドロックが発生しまして、本来であれば、テーブルの 参照、更新順を正しくする修正をすべきなのですが、今からその修正を行うのは 困難なために、更新する側が、使うテーブルをまずTABLOCKXでロックしておく という対策をとることになりました。 ここで、A,B二つのテーブルがあったとし、 SELECT XXX FROM dbo.TableA WITH( TABLOCKX ) UNION SELECT YYY FROM dbo.TableB WITH( TABLOCKX ) というSQLでロックしようとしています。 UNIONを用いたのは、2つのセレクトの間に違うプロセスからの割り込を 防止したかったためです。 (このSQLの実行時にトランザクションをかけて、更新後のコミットまで、 排他ロックをかけようとしています。) TableA,TableBを更新しようとしているプロセス1が、上記SQLを実行しオーナーになります。 プロセス2がTableBをSELECTしようとすると、排他ロックで待たされるはずですよね? 実際ここは待たされていました。 また、プロセス2も更新を行おうとし、上記のSQLを実行すれば、プロセス1のコミット までは、処理が待たされるはずだと思っていたのですが、ここでデッドロックしてしまいます。 原因が全く分からずに困っております。 最終的に、やりたいことは、テーブルの参照、更新の順番を変えずに、デッドロックを 回避することです。テーブルロックをかけかたが、間違っていますでしょうか? また、それ以外に何か良い回避方法がありますでしょうか? どなたか、有識者の方々のご助言頂けないでしょうか。 よろしくお願いいたします。
- ベストアンサー
- SQL Server
- Accessのマクロ
Access2002で、「氏名(テーブル名:name)」と「日付<○月○日~○月○日>(テーブル名:date)」でレポート内容が検索できるのを作っています。 フォームに 氏名一覧、日付入力、検索ボタン、最新データの取り込みボタン を作っています。 「検索」の方は出来たのですが、「最新データ取り込み」をしようとすると、 『テーブル'name'は現在ほかのユーザまたはプロセスで使用されているので、ロックできませんでした』というエラーメッセージがでてきます。 「最新データ取り込み」ボタンに対してのマクロのアクションは、 オブジェクトの削除…テーブル/report テキスト変換…reportインポート定義 オブジェクトの削除…テーブル/name クエリを開く…name作成(テーブル作成クエリ) としています。 (「マクロの実行」で指定) フォームに表示されている氏名(name)を削除しようとしているために、このようなエラーメッセージが出ているのかとも思っていますが…。 フォームを閉じずに、「最新データ取り込み」ができないものでしょうか? ご教示の程、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 複数テーブルから必要とするテーブルを捜す
質問します。 月ごとに同じ構成のテーブルが複数あります。(テーブル名はテーブル1-1、テーブル1-2など・・・10以上)この中から該当する月のテーブルを探し出し、ヒットしたテーブルを元にクエリを実行したいのです。クエリはテーブルの数だけ作成しましたが、すべてのクエリを実行したのでは時間が掛かりすぎます。テーブルの1レコード目だけ読んで該当テーブルを捜す方法ってないでしょうか?該当月はフォームよりユーザに入力させる形式を取りたいと考えています。アクセスVBAでお願いします。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
- accessのロック
以前も質問したことがあるのですが、再度質問させていただきます。 Accessのロックについてです。 Windows2003Sever + Microsoft SQL ServerのマシンにあるMDBファイルを置いてあります。 これに社内LANでつながっているwindowsXP+access2000マシン10数台が それぞれWindows2003サーバマシンのmdbファイルのテーブルにリンクしているmdbファイル持っていて日々データの閲覧と更新をしています。 その際時々Access2000が以下のような以下のようなWindowメッセージを出します。 「現在ロックされているので、更新できませんでした。」 この件で困っております。 いくつか、わかっていることがあります。 ◎Windows2003Serverのこのmdbにアクセスしている人が多い時にこのメッセージが出るわけではない。使用者が2人でも出るときがある。 ◎同じフィールドへの同時書き込みの場合は他のユーザによって変更されています。。。のようなメッセージが出るので同時書き込みの問題ではなさそうだ。 ◎ロックがかかった場合、接続ユーザーみんなが開いているmdbを閉じて再度開くとロックは解除されている。 ここで質問なのですが、 ・ロックはなぜかかるのでしょうか? ・ロックの回避方法はありますか? 以上、どうかよろしくお願いいたします。
- 締切済み
- その他(データベース)
- アクセス2000について
アクセス2000でデータベースを作成しています。 幾つかのテーブルをリンクさせて、リンクしたテーブルからフィールドを選択してクエリを作り、そのクエリに基づいて単票形式のフォームを作成しました。 単票フォームの基になっているクエリを使って、表形式のフォームをオートフォームウィザードで作成しようとすると、「インデックスが有効範囲にありません。」というメッセージが出てきてフォームが作成できません。 どうしたらいいのでしょうか?誰か教えてください。
- 締切済み
- オフィス系ソフト
補足
やはり無理ですが・・・ まだまだ初心者なので、設計仕様から間違っているのかもしれませんが、 検索フォームにて入力された値に対して、テーブル作成クエリを実行し、その結果をサブフォームに表示する。 といったアクセスを作成しようと思っております。 例: 検索フォームにて社員番号を入力しコマンドボタン(クエリ)を実行すると、社員テーブル[社員番号、社員名]と住所テーブル[社員番号、住所]より該当社員番号の社員番号、社員名、住所を項目とする新テーブルを作成し、その結果をサブフォームに表示する。 何か良いお知恵がありましたら、宜しくお願いします。