AIと戦って、あなたの人生のリスク診断 >>

私は今、Accessのメンテナンスを行っているのですが、そのAccessをウェブ上(社内ネットワーク)に乗せて社内のみんなで共有化するため、ファイルメーカーに切り替える話があると上司から言われました。
それが理由ならAccessでも対応できるのではないかと思いましたが、そのあたりの知識がないためそれ以上はつっこんで聞きませんでした。
その構築は業者に依頼するそうです。
Accessもウェブ上(社内ネットワーク)に乗せることは可能だと思いますがいかがでしょうか?
可能だとすれば、上司は違う意味合いで言っているのでしょうか?
上司に聞けばいいのでしょうが、その前に知識として知っておきたいので、このような簡単な話からでも上司の言っている意味がおわかりになる方がいらっしゃいましたら、教えていただけないでしょうか?
なお、もうひとつ逆の意味合いの投稿をしていますが、今、私には逆行する2つの話が来ているからです。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

Windowsの「ファイル共有」を使う設定にするのと、サーバのデータベースにアクセスする設定は基本的に全然セキュリティレベルの違う話だと思います。

データベース用のサーバはデータベースへのアクセス「だけ」をWindowsログオン認証もしくはSQLServer認証で可能にしますから、それ以外のポートは開けません。

#私は(倉庫的な)ファイルサーバ以外で「共有」を使うことはないという認識です。

またAccessのファイルは共有で使った場合はもちろん、ウェブサーバのスクリプト経由でアクセスしていても壊れてしまう確率は非常に高いです。復旧手順などは徹底されているとは思いますが、それでも復旧する必要に迫られない(壊れない)に越したことはないと思います。普通の管理者であれば、Accessのファイルを共有とかイントラ上でASPで扱うというのは「とても怖い」ので避けます。情報の共有化であれば、データベースサーバを導入すべきです。

この回答への補足

Accessを共有して使うと壊れやすいというのは、どうしてなのでしょう?
私の持っているテキストボックスには、データベースを共有化できるのもAccessのうりのように書いてあります。
今のところ、ファイルサーバーで共有化して使っています。
万一に備えて行っていることは、バックアップを取ることです。
Accessに比べてFileMakerは壊れにくいのでしょうか?
何度も聞いてしまって申し訳なく思っているので、もし回答者様のご負担にならなければ教えていただけると幸いです。

補足日時:2008/03/28 11:44
    • good
    • 0

第5回 ACCESSを「ファイル共有」で使用する場合の注意


ttp://weba03.blog96.fc2.com/blog-entry-191.html

>10台で共有していても、1つのデータmdbを同時に使用する
>のは2~3、4台で使いましょう。
Accessはもともと個人での使用を目的としたもので、共有する
にしても小人数で、且つ同時に使用しない様にしないと容易に
壊れます。
    • good
    • 1

SQLServer(無償のExpressEditionもあります)にデータを置いてフロントエンド(GUI)だけAccessで作り込むというのが普通でしょう。

mdbファイルは共有して使うようには出来ていません。Accessをネットワークで使うというのは完全に「想定外」の使い方だと思います。少なくともMicrosoft非推奨の使い方になると思いますが、万一の障害(思いのほかあっさりテーブルが壊れます)への対応などは大丈夫なのでしょうか?

この回答への補足

ソフトを切り替える理由は、「セキュリティの高いサーバーに乗せるため」とのことです。
サーバーになら現在も乗せて共有化して使っているのですが、問題なく使えています。
セキュリティの高いサーバーだとそれが出来なくなる理由がわかりません。
このことを言い出した張本人に確認したわけではなく、その部下に再確認したことなので、事の真相はわかりません。
でも、どちらにせよWordとExcelを替えることぐらいにしか思っていなくて、簡単に考えられているのかもしれません。もしくは私にとっては簡単な事だろうと思っているのかも知れません。
サーバーに乗せて共有化している分にはテーブルがあっさりと壊れてしまうことははないでしょうか?
再度質問させていただいて申し訳ないのですが、ご負担にならなければご回答をいただけないでしょうか?

補足日時:2008/03/27 14:49
    • good
    • 1

このQ&Aに関連する人気のQ&A

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

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

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

QACCESSのデータをWebブラウザで表示(イントラ環境)

現在社内ヘルプデスクで勤務しているものです。
最近システムの変更がされ問いあわせが日々増えているのですが
この内容を何とか社内で共有できないものかと四苦八苦しております。
目指しているところは
『WEBブラウザ(IEもしくはFirefox)を使い
ACCESSに蓄積されたデータを照会・更新可能にする』
というところなのですが何か良いアイデアをいただけないでしょうか?

現在の環境は
・ACCESSを使って日々の問いあわせのデータを蓄積
・ヘルプデスクメンバーのPCにはACCESSがインストールされていてデータ照会・更新可能。
・社員用PCにはACCESSがインストールされていない。
・ACCESSのファイルは社員共有のファイルサーバーに保存
(単純に個人個人のフォルダがあってその中にデータがおいてあるもの)
・情報の共有化に関し予算は0円

という状況です。

当方技術力がほとんどないのですが、教えていただいた内容は一生懸命理解するよう頑張りますのでよろしくお願いいたします。

Aベストアンサー

パッと思いついた点を述べてみます。

Access内のデータをLAN限定のWebに展開し、複数の人に見てもらう事について。基本的にAccessを、複数からの同時参照を前提としたデータベースとして使うのはちょっとお奨めできません。
システム屋がデータベースにAccessを余り用いない理由に、同時参照に弱く壊れやすい(業務用のそれと比べてですが)そして大量データを扱いにくい(数十万件数百万件規模)といった弊害があります。

予算ゼロで私がそういったシステムを作るなら、別途Web公開サーバに新規データベースとしてMySQLないしSQL Server 2005 Express Edition(両方とも無償)等を使用し、Accessのデータをアップサイジングさせて社内LANからブラウザのアクセス→データベース内の要求された分のデータ展開にPHPやASPを使用する感じになると思います。

ですがこれだと開発もそれなりのものになるので、困りますね。ご自分で構築するつもりでしょうか?
他にちょろっと思いつくのはエクセルをそのままブラウザに展開させる方法ですがクライアント側にエクセルが入っている事が条件になります。

パッと思いついた点を述べてみます。

Access内のデータをLAN限定のWebに展開し、複数の人に見てもらう事について。基本的にAccessを、複数からの同時参照を前提としたデータベースとして使うのはちょっとお奨めできません。
システム屋がデータベースにAccessを余り用いない理由に、同時参照に弱く壊れやすい(業務用のそれと比べてですが)そして大量データを扱いにくい(数十万件数百万件規模)といった弊害があります。

予算ゼロで私がそういったシステムを作るなら、別途Web公開サーバに新規データベー...続きを読む

QACCESSに同時アクセス(編集)をしたい

教えてください。
ACCESSのDBに複数のユーザが同時にアクセスして、
データを追加・編集したいのですが、
やはり、不可能でしょうか?

Aベストアンサー

マイクロソフトのアクセスに同時に複数のユーザが同時にアクセスして
データベースを操作することは可能です。いくつかの方法がありますが、
昔私が簡便に行なっていた方法は「テーブルのリンク」です。

あるコンピュータにアクセスでdb1という名前のデータベースを作って
ここにデータを格納しておきます。

他方で別のコンピュータに、アクセスでdb2という名前のデータベースを作ります。

このdb2というデータベースのメニューで

「ファイル」->「外部データの取り込み」->「テーブルのリンク」

というのがありますから、最初に作ったdb1をたどり、リンクしたいテーブルを
選択します。

こうすることにより、db2にdb1のテーブルがリンクされ(リンクテーブルと
呼ばれます。アイコンが通常のテーブルと違います。)、db1に格納された
データをdb2で編集することができます。

db2で、db1からのリンクテーブルを元にクエリーを作成することもできます。
リンクテーブルに対してできないことはテーブル構造の変更くらいで
他のことはだいたいできると思っていいかと思います。

このような形をとれば、ローカルエリアネットワーク内の複数のコンピュータ
から同時に同じアクセスデータベースにアクセスすることは可能かと思います。

このやり方にはおそらく問題もあるだろうと思うのですが、昔私がやって
いた頃は、特段支障もなく業務を行なうことができました。問題は、これを
読んだ他の誰かが指摘してくださるかと思います。

同じレコードに複数ユーザが同じタイミングでアクセスするとややこしい
ことになります。これを回避するためには、db2にワークテーブルを備えておき、
リンクテーブルからレコードを一度db2に格納し、編集を終了したのちに
リンクテーブルのレコードを削除し、ワークテーブルで編集したレコードを
リンクテーブルに追加する、などのルーティンをマクロやVBAで構築するのが
よいかと思います。私はそのようにしていました。

他に、ADOを使う方法などもあります。方法はいくつかありますから、
少し研究してみるといいですよ。(^-^)

マイクロソフトのアクセスに同時に複数のユーザが同時にアクセスして
データベースを操作することは可能です。いくつかの方法がありますが、
昔私が簡便に行なっていた方法は「テーブルのリンク」です。

あるコンピュータにアクセスでdb1という名前のデータベースを作って
ここにデータを格納しておきます。

他方で別のコンピュータに、アクセスでdb2という名前のデータベースを作ります。

このdb2というデータベースのメニューで

「ファイル」->「外部データの取り込み」->「テーブルのリンク」
...続きを読む

QAccess2010にブラウザからアクセスしたい

よろしくお願いします。

Access2010を用いて営業が使用する顧客DBを下記条件で作成したいと思っています。
まずは下記条件を満たすことは可能でしょうか?

条件
1.Access2010のライセンスは1つしかありません。
2.社内からのみ、5名くらいの営業メンバーにWEBブラウザでアクセスさせます。
3.VBAを組み込みたいと思っています。


自分で調べたところ、作成したWEB用のDBをSharePoint サイトへ発行するとインターネット
経由でDBへアクセス可能という記述を見つけました。下記の質問があります。


1.作成したDBをインターネット上のマイクロソフトのSharePointというサーバーに
 置くという意味でしょうか?
2.仮に1が正しいならば、1.を実行するには無償でしょうか有償でしょうか?
 何か事前に登録が必要なのでしょうか?
3.仮に1が正しいならば、セキュリティはどのように守られるのでしょうか?
 使用するユーザーごとにパスワードが設定できるなど
4.仮に1が正しいならば、URLはどのように決められるのでしょうか?
5.インターネット上ではなく、社内のサーバーに置いて、ブラウザでアクセスさせる
 ことは可能なのでしょうか?

よろしくお願いします。

Access2010を用いて営業が使用する顧客DBを下記条件で作成したいと思っています。
まずは下記条件を満たすことは可能でしょうか?

条件
1.Access2010のライセンスは1つしかありません。
2.社内からのみ、5名くらいの営業メンバーにWEBブラウザでアクセスさせます。
3.VBAを組み込みたいと思っています。


自分で調べたところ、作成したWEB用のDBをSharePoint サイトへ発行するとインターネット
経由でDBへアクセス可能という記述を見つけました。下記の質問があります。


1.作成したDB...続きを読む

Aベストアンサー

SharePointについて調べてみました。
AccessのAccdbを利用できるのは、EnterPriseだけのようです。リンクが切れなきゃいいけど。
http://crieilluminate.wordpress.com/2010/04/06/sharepoint-2010-%E3%82%A8%E3%83%87%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%E3%82%88%E3%82%8B%E6%A9%9F%E8%83%BD%E5%B7%AE/

お値段も (*_*)
http://www.microsoft.com/japan/presspass/addcont.aspx?addid=1123

VBAが使えません。『Access マクロ』というのを別途考えねばならない様子
http://japan.zdnet.com/blog/komeno/2010/04/01/entry_27038667/
http://www.naboki.net/access/2010/12/sharepoint-2010-access.html#more

社内だけでの使用ならランタイムを配布してはいかがでしょ。
http://saikik5656.wordpress.com/2010/05/15/%E3%80%90access-2010%E3%80%91access-2010-%E3%81%AE-access-%E3%83%A9%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%A0%E3%81%AE%E5%8F%96%E3%82%8A%E6%89%B1%E3%81%84%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/

SharePointについて調べてみました。
AccessのAccdbを利用できるのは、EnterPriseだけのようです。リンクが切れなきゃいいけど。
http://crieilluminate.wordpress.com/2010/04/06/sharepoint-2010-%E3%82%A8%E3%83%87%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%E3%82%88%E3%82%8B%E6%A9%9F%E8%83%BD%E5%B7%AE/

お値段も (*_*)
http://www.microsoft.com/japan/presspass/addcont.aspx?addid=1123

VBAが使えません。『Access マクロ』というのを別途考えねばならない様子
http://japan.zdnet.com/blog/kome...続きを読む

QAccessとSQL Serverの連携について

現在Accessで組まれているデータベースがあるのですが、複数人で入力をする必要が出てきたため、SQL Serverへ移行したいと思っています。
ただ、まだデータベースの内容が完全にFIXしておらず、項目に変更や追加が発生する可能性があります。

そこで、
●Accessを管理画面として使い、
●Access上で内容を変更したら、システム全体もその通り変わる
ような仕組みを作りたいのですが、可能でしょうか。
(完全にSQL Serverへ移行するのではなく、AccessとSQL Serverを連携させる?)

よき方法がありましたら教えて頂けましたら幸いです。
ちなみにコストはあまり大きくはかけられません・・。
どうぞよろしくお願いします。

(※私はシステムはど素人なので、なるべく簡単に教えて頂けたら嬉しいです。なお、説明がおかしなこともあるかと思いますがご容赦ください。)

Aベストアンサー

>※私はシステムはど素人なので、なるべく簡単に教えて頂けたら嬉しいです。

でもやることは十分玄人の領域な気が…。なので簡単に、は不可能でしょう。
以下、#1さんと同じように、AccessファイルからSQLServerへデータ読込、書込する環境を構築することを目指します。違うのは概要だけ。#1さんはきちんとシステムを構築する方法を書かれていますが、私は概要だけ。なんで概要だけかは後述。

(1)SQL Server Expressをダウンロードして、サーバー(もしくはサーバーに見立てたPC)にインストール。
(2)Accessのテーブルを(1)のSQL Serverに作成。
(3)ここからはPC側の作業
(4)ODBC接続を作成
(5)現行のAccessに(4)を使ってリンクテーブル作成。
(6)(5)のAccess内のクエリ、フォーム、レポートなどを必要に応じた修正を行う。
(7)動作確認
(8)各PCにODBC接続を設定&Accessファイルを配布。

概要はここまでです。如何でしょう、ご自分でできそうですか?

作業の概要はこの通りなんですが、サーバー機の選定とか"細かい"作業はかなり省略…というか書いてません書けません。特に(6)は実際にAccessファイルを見ないときっちりアドバイスはできませんし、作業ボリュームや難易度も見えてきません。…ということで(業者への発注は想定外のようですがw)業者も見積には難渋するでしょう。さくっと見積もりが出てくることもあるでしょうけど、かなりバッファをとった高額なお見積りかと。正直、見積もり作るのにお金がほしい内容です。

どうしてこんなことをグチグチ書いているかというと、大変申し上げにくいのですが、自称素人の方には難易度高め。業者に任せるか、類似のパッケージを探された方が、不具合などのリスクも軽減され、業務への影響も少ないかと。

ご健闘をお祈りしております。

>※私はシステムはど素人なので、なるべく簡単に教えて頂けたら嬉しいです。

でもやることは十分玄人の領域な気が…。なので簡単に、は不可能でしょう。
以下、#1さんと同じように、AccessファイルからSQLServerへデータ読込、書込する環境を構築することを目指します。違うのは概要だけ。#1さんはきちんとシステムを構築する方法を書かれていますが、私は概要だけ。なんで概要だけかは後述。

(1)SQL Server Expressをダウンロードして、サーバー(もしくはサーバーに見立てたPC)にインストール。
(2)Accessのテー...続きを読む

QMS Accessを共有した際にファイルが壊れるのを回避する方法

ちょっとしたツールをAccessで開発したいのですが、
Accessファイルを共有するとファイルが頻繁に壊れると伺いました。

そこで以下のような回避策を考えてみたのですが、
効果はありますでしょうか。
これでは、あまり意味がないとか、他に注意したほうが良い点等ありましたら、アドバイスいただければと思います。

なお、ツールは、50名位が使用(同時アクセスは3名~4名程度)予定で、
サーバ上にメインのmdbファイル(以下「サーバmdb」)を、各クライアントにもそれと連携するmdbファイル(以下「クライアントmdb」)を置くことを想定しています。

(1) データは全てサーバmdbで保持する。クライアントmdbには、入力用のフォームと、サーバmdbから取得したデータを一時的に保持するテンポラリのテーブルを持つ。

(2) クライアントmdbからサーバmdbにアクセスし、必要なデータをクライアントmdbにインポートする。

(3) クライアントmdbで、取り込んでデータをもとに、データの追加・修正を行い、当該データをサーバの所定のディレクトリにCSVで出力する

(4) サーバmdbは、日次で、所定のディレクトに配置された、クライアントmdbから出力されたファイルを読み込み、データを更新する

(5) (4)の読込み・更新作業中は、クライアントmdbからサーバmdbにはアクセスしない(外部ファイルで制御)

以上です。
要は、クライアントmdbが、直接サーバmdbを更新しないようにし、参照のみにするということです。

よろしくお願いします。

ちょっとしたツールをAccessで開発したいのですが、
Accessファイルを共有するとファイルが頻繁に壊れると伺いました。

そこで以下のような回避策を考えてみたのですが、
効果はありますでしょうか。
これでは、あまり意味がないとか、他に注意したほうが良い点等ありましたら、アドバイスいただければと思います。

なお、ツールは、50名位が使用(同時アクセスは3名~4名程度)予定で、
サーバ上にメインのmdbファイル(以下「サーバmdb」)を、各クライアントにもそれと連携するmdbファイル(以下「ク...続きを読む

Aベストアンサー

No.1です。
「同時アクセス」という言葉は実にあやふやな言葉です。おそらく質問者さんやNo2さんのいう「同時アクセス」は同時に複数人がそのシステムを使用しているという程度の同時アクセスだと思います。
ところが世の中は広くて通常同時アクセスは、同時にデータベースの更新をする人の数を言います。通常データベースの更新は0.1秒とかで終わりますのでその0.1秒を同時に複数人がいくような状況を言います。

No2さんのシステムでは、「クエリ(実際にはDoCmd.RunSQL)で更新」が同時におこる状況を言います。
これが、たまたまであれ同時におこるとやばいわけです。No2さんのシステムはおそらく同時に更新は起こらないシステムなのではないでしょうか?

「数台で同時に入力が発生するテーブルについては 入力用の作業テーブルをクライアント側のプログラム用のMDB内に持たせました。」まぁそれでもいいですけど、.NETアーキテクチャはこんな感じですよね。私はこれはとっても嫌いです。本気で複数人がデータを入力したければ、1行ずつを瞬間瞬間でINSERTしていくべきだと私は考えてます。つまりテーブルあるいはデータベースをロックする時間はセッションを越えてはありえないと思っています。理由は、入力用の作業テーブルを作るとその内容を他人によってすでに変更されてるかもしれないからです。こういう事態についてマイクロソフトは、エラーとして対処せよと言ってますが、そんなことできるわけないですよね。面倒ですもの。

No.1です。
「同時アクセス」という言葉は実にあやふやな言葉です。おそらく質問者さんやNo2さんのいう「同時アクセス」は同時に複数人がそのシステムを使用しているという程度の同時アクセスだと思います。
ところが世の中は広くて通常同時アクセスは、同時にデータベースの更新をする人の数を言います。通常データベースの更新は0.1秒とかで終わりますのでその0.1秒を同時に複数人がいくような状況を言います。

No2さんのシステムでは、「クエリ(実際にはDoCmd.RunSQL)で更新」が同時におこる状況を...続きを読む

QAccess サブフォームでの選択行の取得

こんにちは。

Access初心者です。

サブフォームでテーブルの項目を表示させていますが、
選択された行を取得する方法はありますか?
サボフォームの下の方に現在選択されているレコード数が表示されてますが、その値でかまいません。

調べているのですが、なかなか検討がつきません。
宜しくお願い致します。

Aベストアンサー

フォーム名がフォーム1、サブフォームコントロールの名前がサブフォーム1だとすると、

Forms!フォーム1!サブフォーム1.Form.CurrentRecord

で取得できます。
(「Forms」と「Form」がありますのでご注意下さい)


また、フォーム1にコードを記述する場合であれば

Me!サブフォーム1.Form.CurrentRecord

サブフォーム1へのコード記述であれば

Me.CurrentRecord

という構文によっても、それぞれ取得が可能です。

QAccessのファイル共有がうまくできません。

Microsoft Accessの共有に関しての質問です。

一つのAccessのファイルを共有して複数のパソコンで同時に開きたい場合は、何か特別な設定が必要なのでしょうか?

Access2000を使用して顧客管理のデータベースを作成しました。
そのファイルを複数のパソコンから開けるようにしたく、現状では元のファイルを共有ドキュメントに入れて、複数台のパソコンでデスクトップにショートカットのアイコンを出しています。

しかし、他のパソコンでファイルを開いていると、もう一方のパソコンではアイコンをダブルクリックしても全く反応が無かったり、開く際に「セキュリティの警告」が表示され、そのメッセージ内にある「開く」をクリックするとようやく開けたりと、スムーズにできません。

ちなみに、元となるAccessのファイルは「オプション」内で「既定の開くモード」を「共有モード」にしてあります。

情報が少ないかもしれませんが、何か問題点、対処方法等が分かりましたら教えてください。
よろしくお願いします。

Aベストアンサー

Accessは元々スタンドアローン用に開発されたので
共有での使用は、設計段階から考慮してシステムを作らないと
MDB破損や、データの競合などが発生してしまうことがあります。

下記URLのサイトさんの説明がわかりやすく、非常に参考になります。
http://www.naboki.net/access/achell/achell_02.html

また、下記のURLも参考になると思います。
http://support.microsoft.com/default.aspx?scid=kb;ja;882219
http://support.microsoft.com/kb/300216/JA/
http://office.microsoft.com/ja-jp/access/HP052408601041.aspx

参考URL:http://www.naboki.net/access/achell/achell_02.html

QACCESSでフォームを使って、テーブルを参照、データ入力、データ更新をしたいのです

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入力画面
       ↓
レコード番号を入れると、そのレコードのデーターが画面に表示され、
その画面で修正可能
       ↓
 保存 ボタンで保存

という流れです。

レコードナンバーはIDを使おうと思っています。

データの量が莫大な為、コンポボックスなどは使えません。

できるだけ、VBAなどは使わずに作りたいです。

よろしくお願い致します。

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入...続きを読む

Aベストアンサー

まずそのテーブルを基にしてフォームを作成します。
そのフォームのヘッダー部分にテキストボックスを配置後、一旦
上書き保存。
フォームのレコードソースを
SELECT *
FROM テーブル名 WHERE ID=[Forms]![フォーム名]![テキストボックス名]
とします。
次にテキストボックスの更新後処理に
Me.Requery
とすれば完成です。
フォームを開いてテキストボックスにID入力後エンターしてください。

保存に関しては、コマンドボタン作成後クリック時イベントに
DoCmd.RunCommand acCmdSaveRecord
とすれば良いでしょう。

この手のモノは検索すれば相当数ヒットするので、そちらを参考にされるのもよろしいかと。

QAccessで別テーブルの値をフォームに表示したい

初めてのAccessで分からない事があり質問させてください。

<会社テーブル>
会社ID
会社名
住所

<社員テーブル>
会社ID
社員名
ソート番号

*1社に対し複数の社員レコードが存在

以上のようなテーブルがあるとします

現在「会社テーブル」を表形式で一覧表示しています
会社ID,会社名、住所とフィールドが並んでいるのですが、その後ろに「社員テーブル」のソート番号が一番若い社員名を表示したいと考えています(現状は番号関係なく表示させる方法すら分かりません)

色々いじくりまわしたのですが、初めてAccessをさわる事もあってよくわかりません

リレーション等でひっぱってくる事ができるのでしょうか?

どなたか教えて頂けませんでしょうか

何卒よろしくお願い致します

PS.Access2013で作成中です

Aベストアンサー

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FROM 社員
ORDER BY 社員.ソート番号;

2、コントロールソースに次のように書きます。

=DLookUp("社員名","社員ソートクエリ","会社ID=" & [会社ID])

http://office.microsoft.com/ja-jp/access-help/HA001228825.aspx

DLookup()については、マイクロソフトの解説を参照されてください。

【DLookup()の限界を破るにはVBAで同じ関数を作るしかない】

マイクロソフトの解説を読めば判りますが、ORDER BY 節を指定する引数が用意されていません。ですから、どうしても、"社員ソートクエリ"を作成するという手間が必要となります。そこで、SQL文を引数とするDBLookup()をVBAで書けば、その手間を省けるという算段になります。この辺りは、好みと趣味の問題。どっちでも良いと思います。そういうお断りをした上で DBLookup()を紹介しておきます。なお、ADOは、つぎのように参照設定しないと利用できません。

http://www.happy2-island.com/access/gogo03/capter00307.shtml

Public Function DBLookup(ByVal strQuerySQL As String, _
             Optional ByVal ReturnValue = Null) As Variant
On Error GoTo Err_DBLookup
  Dim DataValue
  Dim rst     As ADODB.Recordset

  Set rst = New ADODB.Recordset
  With rst
    .Open strQuerySQL, _
       CurrentProject.Connection, _
       adOpenStatic, _
       adLockReadOnly
    If Not .BOF Then
      .MoveFirst
      DataValue = .Fields(0)
    End If
  End With
Exit_DBLookup:
On Error Resume Next
  rst.Close
  Set rst = Nothing
  DBLookup = IIf(Len(DataValue & ""), DataValue, ReturnValue)
  Exit Function
Err_DBLookup:
  MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _
      "・Err.Description=" & Err.Description & Chr$(13) & _
      "・SQL Text=" & strQuerySQL, _
      vbExclamation, " 関数エラーメッセージ"
  Resume Exit_DBLookup
End Function

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FR...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html


人気Q&Aランキング