Access97でデータベースを構築しているのですが、複数のテーブルで共有するデータをコード化する方法を教えてください。

簡単にいいますと
テーブルAで名前と所属を記入(以後名前は選択できるようになり、同時に所属も連結して選択)つまり氏名・所属の登録的役割。

テーブルBはあるフォーム上で名前を選択する
(本当はここで所属も自動で選択されるはず)が所属が正しくない。

ちなみに所属はYes/Noで分類してあります。
ここでテーブルBをフォーム上からではなくテーブル自体で選択すると
フォーム・レポート上でも正しく認識します。

この問題を解決するためにコード化が必要だとアドバイスいただいたのですが
具体的にどうすればいいのか教えてください。

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

A 回答 (1件)

テーブルAの名前と所属のみを参照したいのであれば、無理にモジュールを書く必要は無いと思います。



コンボボックス(名前)の値集合ソースを
---------------------------------------*
SELECT テーブルA.名前, テーブルA.所属
FROM テーブルA;
---------------------------------------*

所属のコントロールソースに
---------------------------------------*
=[名前].[Column](1)
---------------------------------------*
を設定してみて下さい。

只、この場合は、参照のみなので、所属を参照したければ、必ずテーブルAを参照しなければなりません。
しかし、テーブルAに変更をかければ、全てのデータが書き変わるので(表現が不適切かもしれませんが)整合性は保てると思います。
    • good
    • 0

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

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

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

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

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

QExcelとPowerPointをVBAで連携させる方法

おけましておめでとうございます。
本年もよろしくお願いします。
で、本題ですが、
(Win95でExcel2000とPowerPoint2000を使用)
EXCELのデータベースの表を順々にPowerPointのテキストボックスへ
コピーして印刷するためにVBAを作成したいと思ってます。
(印刷形式がPowerPointのため)
ここには作成できるんですが、両者のVBAをどのように
連携させるかわかりません。
よろしくご教授ください。

また、PowerPointのVBAでマクロの記録を使わず、オブジェクト名
(("Text Box 1")とか)を知る方法もあわせてよろしくご教授ください。

Aベストアンサー

>オブジェクト名はVBAを使わずにパワーポイント上だけでは確認しようが無いと言うことでしょうか。

絶対できないとまでは断言できる自信はないのですが、少なくともその方法は知りません。

オブジェクト名はVBAを使えば変更することはできます。
Application.ActiveWindow.Selection.SlideRange.Shapes.Item(1).Name = "New Name 1"

だだ、この設定した名称が勝手に変更されることはないのかどうか自信がありません。少なくとも自動的に生成した「オブジェクト名」は勝手に変更されてしまいます。

QACCESS 既存のテーブルのフィールド名をフォーム上のテキスト入力値に変更したい

いつもお世話になっております。

既存のテーブルのフィールド名を、単票フォーム上の入力値に変更
したいと思っています。
例)Aテーブル 月1 月2
  Bフォーム上のテキストA:200810 テキストB:200811
  (結果)Aテーブル 2008 200811

(テーブルデザインでの変更ではなく、コマンドボタン押下時等で行いたい)

どなたか、ご教示願います。

Aベストアンサー

フォームのボタンのイベントプロシージャの例
Private Sub コマンド_Click()
Dim TDS As DAO.Tabledefs
Dim TDF As DAO.Tabledef
Dim FLD As DAO.Field

Set TDS = CurrentDb.TableDefs
Set TDF = TDS("Aテーブル")
Set FLD = TDF.Fields("月1") '★1
FLD.Name = Me.テキストA.Value '★2
End Sub

★1定数にしておくと2回目からエラーになる。
 もし、「最初のフィールド」というなら(0)でも良い。
★2Null、空文字列、フィールド名として使えない文字のチェックを
 していないので、実際に作る時はチェックが必要

QMicrosoftのAccessとPowerPointって何ですか?

以前、OFFICE XPを購入してインストールしたのですが、
AccessとPowerPointというのがありますよね。
この2つは何にどう使うのでしょうか?

説明なども読んでみましたし、Microsoftの
サイトも見てみましたが、「で、結局どんな用途があるの?」と
悩んでしまって理解できません。
特にAccessはExcelとどう違うのか全くわかりません。
(データベースがうんぬんと書かれてありますが、“データベース”の
意味もよくわかっていないのです)

どうせあるなら、色々使ってみたいと思うのですが
果たしてどのように使うのか…面白そうなら一から
勉強してみたいのです。

Wordはワープロ・Excelは表計算・Outlookはメールとスケジュール管理、
ぐらいの理解度しかない、ど素人の私にわかりやすく
教えていただけないでしょうか?
宜しくお願い致します。

Aベストアンサー

私は会社員ですが、AccessとPowerPointは会社で良く使っています。

Access:
会社では、大量なデータを効率良く管理したり分析したりするのに使用しています。(在庫管理とか)
色々なデータを関連付けて検索したり集計したりできるのですが、大量データでないと(何百件とか)、Accessとしての有難味は薄いでしょう。
私も家で住所録とかに使ってみましたが、結局、Excelとか住所管理ソフトになってしまいました。

PowerPoint:
会社では会議や発表の時、資料をPowerPointで作りパソコンに接続したプロジェクタからスクリーンに映し出しています。
ちょっと前までは、ワープロで資料を作りOHPにしていましたが、PowerPointを使うようになってからは、手直しは楽だし、カラーは簡単に使えるし、アニメーションの様な理解してもらうのに大変有効な手段も使えるようになり、重宝しています。
家では使っていませんが。

QACCESSのテーブルとフォーム

大変失礼ですが、いきなり質問です。よろしくお願いします。

テーブルに「受注データ」
フォームに「入力画面」というのを作ってあります。
そのフォームの一部に「商品金額」・「送料」・「消費税」・「合計金額」というテキストボックスがあります。それぞれのコントロールソースには単純にテーブルのデータを使うようにしてありますが・・・・・・「合計金額」のコントロールソースに「商品金額」・「送料」・「消費税」の合計を計算してくださいというような設定をしてしまったら、フォーム上ではしっかり計算をして表示してくれたのですが、テーブルの「合計金額」の列は空白になってしまいます。
テーブルの列が空白ではなく、フォームで表示されたその数値をテーブルの列に戻す?返す?という事を設定するにはどうしたら宜しいのでしょうか?是非ご教示下さいます様お願い申し上げます。ちなみにACCESS2000を使用しています。なぜかVBAの画面でヘルプを開こうとするとインストールされていないみたいで開かないんです。(←これ、余談です。すみません。)

Aベストアンサー

ACCESS97を使っていますが同じだと思うので参考になればと思い投稿します。
フォームのテキストボックス「合計金額」のプロパティ「フォーカス取得時」にイベントプロシージャで以下のように記述します。

Me!合計金額 = Me!商品金額+Me!送料+Me!消費税

これでデータベースに登録されます。

Qバージョン違いのPowerPointテンプレート

PowerPoint2010で制作したスライドをPowerPoint2003で開きたいと思っています。

現状:
・それぞれのPowerPointは違うパソコンに入っています。
・製作したスライドのデザインにはPowerPoint2010のテンプレートを使用しています。
・MicroSoftよりバージョンの互換性の問題を解決するソフトが配布されてはいますが、そのソフトを使用できない環境にあります。

そこで質問があります。
MicroSoftから配布されているソフトをインストールすることなくPowerPoint2010で制作した、しかもそのテンプレートを使用したスライドをPowerPoint2003で開くにはどうすればよいでしょうか?
テンプレートファイルをスライドとともにPowerPoint2003が入っているPCにコピーして、PowerPoint2003でそのテンプレートを取り入れればよいのでしょうか?

Aベストアンサー

PowerPoint 2010の名前を付けて保存で、ファイルの種類を PowerPoint 97-2003 テンプレートで保存したものを、PowerPoint 2003が入っている他のパソコンのテンプレートフォルダに追加コピーしてはどうでしょうか。

Qフォームからテーブルを操作する方法

アクセスのフォームから、テーブルを更新というか、情報を追加する方法を教えてください。
t1というテーブルのフォームを作成し、他のテーブルt1_tantouからコンボボックス(値集合ソース:t1_tantou)している「担当者」の項目を、直接入力があった時に、t1_tantouに新しい情報をレコードとして追加できるようにする方法を探しているのですが、いまいち解りません。
t1_tantouには主キーとなるtIDと担当者、担当フリガナ(フリガナ機能による)の項目があるのみです。
よろしくお願いします。

Aベストアンサー

コンボボックス 新規追加
で検索すると良いようです。

参考URL:http://oshiete1.goo.ne.jp/qa326935.html

QPowerPointについて

プレゼンand研修会でMS PowerPointを使用することになりました。研修発表は友人と行います。
資料は、私はPowerPoint2003、友人はPowerPoint2000を用いています。そこで1台のPCにPoworPoint2003とPowerPoint200を入れ、そのPCで2人の研修発表を行おうとしたのですが、全てPowerPoint2003で起動されます。その為か友人の資料が、若干のズレが発生しました。1台のPCで片方をPowerPoint2003、もう片方をPowerPoint2000で起動させる方法は何かありますでしょうか?ご教授願います。

Aベストアンサー

1)PowerPoint2000を起動してからファイルメニューで開く
2)マイコンピュータなどでファイル名で右クリックして「プログラムから開く」を選び、「プログラムの選択」をクリックし、アプリケーションの格納されているフォルダを参照してプログラムを選ぶ

QAccessでフォームからテーブルへ書き込む

Access2000 (初心者)
フォームからテーブルへ入力したいのですが、レコードソースが違う為入力出来ません。
DLookup("AA", "BB")で違うレコードから抽出出来る様に、違うレコードへ簡単に入力出来ないでしょうか?

Me.CC = DLookup("AA", "BB")
DLookup("AA", "BB") = Me.CC みたいに・・・

Aベストアンサー

出来るのは出来ますが・・・。
Access のヘルプを参照すれば、そこにヒントがあります。

UPDATE ステートメント

Sub UpdateX()
  Dim dbs As Database

  Set dbs = OpenDatabase("Northwind.mdb")
  dbs.Execute "UPDATE Employees " _
    & "SET ReportsTo = 5 " _
    & "WHERE ReportsTo = 2;"
  dbs.Close
End Sub

tab1:

ID__fld1
_1__AAA
_2__BBB

で、ヒントに基づいて、[tab1]の[ID]=1のレコードの[fld1]を'CCC'に更新してみましょう。

[イミディエイト]
? DbUpdate("tab1", "fld1", "'ccc'", "ID=1")
True

tab1:

ID__fld1
_1__ccc
_2__BBB

確かに[tab1]の[fld1]が更新されています。

DbUpdate(テーブル名, 列名, 値, 条件)

ですから Dlookup()と同じ感覚です。
で、この DbUpdate() はAccess の上記ヘルプのサンプルを単に関数にしただけ。
で、結局は、<違うレコードへ簡単に入力>は<一連の手続きの自動化>しかないということ。
で、<一連の手続きの自動化>は関数の役目ということです。

Public Function DbUpdate(ByVal tblName As String, _
             ByVal fldName As String, _
             ByVal strValue As String, _
             ByVal strWhere As String) As Boolean
On Error GoTo Err_DbUpdate
  Dim isOK As Boolean
  Dim dbs As DAO.Database

  Set dbs = OpenDatabase(CurrentDb.Name)
  dbs.Execute "UPDATE " & tblName & _
        " SET " & fldName & " = " & strValue & _
        " WHERE " & strWhere
  dbs.Close
  isOK = True
Exit_DbUpdate:
  DbUpdate = isOK
  Exit Function
Err_DbUpdate:
  MsgBox Err.Description & "(DbUpdate)"
  Resume Exit_DbUpdate
End Function

Microsoft DAO 3.6 Object Library を参照させる必要があります。

出来るのは出来ますが・・・。
Access のヘルプを参照すれば、そこにヒントがあります。

UPDATE ステートメント

Sub UpdateX()
  Dim dbs As Database

  Set dbs = OpenDatabase("Northwind.mdb")
  dbs.Execute "UPDATE Employees " _
    & "SET ReportsTo = 5 " _
    & "WHERE ReportsTo = 2;"
  dbs.Close
End Sub

tab1:

ID__fld1
_1__AAA
_2__BBB

で、ヒントに基づいて、[tab1]の[ID]=1のレコードの[fld1]を'CCC'に更新してみましょう。

[イミディエイト]
?...続きを読む

QPowerPointがPCに入ってない!!

こんにちは

早速ですけど,私のPCにはPowerPointが入ってないですo
他のMicrosoftのWordやExcelは元から入ってたのですが
何故かPowerPointだけ入ってなかったのですo

私は今学生でプレゼンテーションなどをする為PowerPointが必要なんですo
なのでMicrosoftのホームページに行ったのですが,
ダウンロードの所を見てもテンプレートやViewerだったりして,編集ができるのを
見つけられませんでしたo
PowerPoint自体をダウンロードするのにはやはりお金がかかるのでしょうか?

作ったPowerPointを先生に提出したりするので,
MicrosoftPowerPoint以外のプレゼンテーション用の機能のは駄目なんですo

古いバージョンでも何でも良いんでPowerPointを編集できるのを
無料でダウンロードできないですかね?

自分のPCにPowerPointが入ってないって本当に驚きましたo
提出期限前になんとかなって欲しいです....o

Aベストアンサー

補足します。OpenOfficeを挙げている
人が私を含め何人かいて互換性が
あるといっていますが、実際は
出力は.pptにしてPowerPointで
みても形が崩れたりします。
なので完全互換ではないです。

ちなみに、書き込む内容が単純な絵ほど
互換率は高いです。

OpenOfficeで作っておいて
学校のPowerPointで微調整するのが
よろしいかと思います。

QACCESS サブフォーム MAX関数 テーブル

ACCESS初心者です。
以下のテーブルがサブフォームに表示されています。
メインフォームの名前をmain_frm
サブフォームの名前をsub_frm
テーブルの名前をtable
とします。

テーブルは以下のように構成されています。
文字|値
a|1
b|10
c|3
d|4

メインフォームにテキストボックスを設置して
そこに最大値である10を表示させたい時はどのように関数を組めばよろしいでしょうか?

Aベストアンサー

メインフォーム/サブフォームに分けられるようですが、
サブフォームのフォームヘッダ部分を使って、1つのフォームでやるってことは可能ですか。

順を追って記述します)

1つのフォームでする場合)

(1) サブフォーム sub_frm のフォームヘッダに、テキストボックス txt00 を配置します。
(プロパティで)txt00 のコントロールソースに =Max([値]) を設定します。


メイン/サブフォームにする場合)

上記(1)で作成した txt00 を非表示にします。
メインフォームにテキストボックス txt01 を配置します。
txt01 のコントロールソースに =[FSUB].[Form]![txt00] を設定します。
上記 FSUB は、メインフォームに配置したサブフォーム/サブレポート の名前です。
(プロパティで)FSUB のソースオブジェクトは sub_frm になっています。

※ メインフォームに配置した txt01 のコントロールソースに =DMax("値","table") を設定してもできると思いますが、
txt01 の表示を更新するタイミングをいろいろ考える必要があります。
また、今後サブフォームで絞り込み表示など組み込んだ場合、DMax に同じ抽出条件を組み込まなければなりません。

メインフォーム/サブフォームに分けられるようですが、
サブフォームのフォームヘッダ部分を使って、1つのフォームでやるってことは可能ですか。

順を追って記述します)

1つのフォームでする場合)

(1) サブフォーム sub_frm のフォームヘッダに、テキストボックス txt00 を配置します。
(プロパティで)txt00 のコントロールソースに =Max([値]) を設定します。


メイン/サブフォームにする場合)

上記(1)で作成した txt00 を非表示にします。
メインフォームにテキストボックス txt01 を...続きを読む


人気Q&Aランキング