Microsoft Accessでフォームでの入力方法について教えてください。
本の管理データベースを作成しております。
書籍の情報をデータベースに入力するフォームを作っておりますが、テーブルの項目を入力する際の方法を、直接入力とリストから選択する方法を両方できるようにはできないでしょうか。
例えば、「発行書店」を入力するときに、テキストボックスに直接入力してもOK、別テーブルに書店の一覧を作っておいて、そのリストをコンボリストに表示させ、クリック選択するとテキストボックスに入るような形でもOKのようにしたいのです。

コンボボックスでリストから選ぶだけでなく、ボックス内に直接入力してもテーブルに反映できるようにできれば話が早いのですが、デザインビューのプロパティで入力チェックを「いいえ」にしてもエラーが出て設定できないので・・・。
無知で申し訳ありませんが、どうかご教示ください。

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

A 回答 (3件)

質問の場合は以下の方法をとります。



http://support.microsoft.com/kb/197526

しかし、これを質問の場合に合わせて書き換えて
ください、というのは大変かも知れません。
上記の、NotInListとはコンボボックスの
プロパティの「リスト外入力時」のイベントに設定
します。

説明を簡単にするためにこちらで利用方法を
設定します。


(1) テーブルの設定
T図書:
図書ID (テキスト型) (主キー)
図書名(テキスト型)
発行書店 (テキスト型)

T発行書店:
発行書店ID(テキスト型) (主キー)
発行書店(テキスト型)


(2) フォームの作成
フォームの「新規作成」を選択し、
「基になるテーブルまたはクエリの選択」で「T図書」を
選択し、「オートフォーム表形式」を選択し、「OK]として
出来たフォームを適当な名前で保存します。


(3) フォームの改造
フォームをデザインビューで開き、「発行書店」の上で
右クリックして、コントロールの変更でコンボボックス
を選択します。


(4) コンボボックスの設定
コンボボックの上で右クリックからプロパティを開き、
「値集合ソース」に、以下を貼り付け
保存します。

SELECT T発行書店.発行書店ID, T発行書店.発行書店
FROM T発行書店;

また、列数、列幅を以下に設定します。
列数 2
列幅 0cm,2cm


次に、「リスト外入力時」の右端をクリックして「ビルダの選択」
を表示し、「コードビルダ」を選択して「OK]とします。
表示された、コード表を以下のようにに設定します。


Private Sub 発行書店_NotInList(NewData As String, Response As Integer)
Dim db As Database
Dim rs As Recordset
Dim Msg As String
Dim NewID As String

On Error GoTo ER_R

If NewData = "" Then Exit Sub
Msg = "'" & NewData & "' は登録されていません。" & vbCr & vbCr
Msg = Msg & "新規に登録しますか?"

If MsgBox(Msg, vbQuestion + vbYesNo) = vbNo Then
Response = acDataErrContinue
MsgBox "もう一度登録し直してください"

Else
Set db = CurrentDb
Set rs = db.OpenRecordset("T発行書店", dbOpenDynaset)

Msg = "新しい発行書店IDを入力してください。" & vbCr & "発行書店ID."
NewID = InputBox(Msg)
rs.FindFirst BuildCriteria("発行書店ID", dbText, NewID)
' If the NewID already exists, ask for another new unique
' CustomerID
Do Until rs.NoMatch
NewID = InputBox("発行書店ID " & NewID & " はすでに存在します." & _
vbCr & vbCr & Msg, NewID & " 既存")
rs.FindFirst BuildCriteria("発行書店ID", dbText, NewID)
Loop
' 新しいレコードの設定
rs.AddNew
' 発行書店IDの登録
rs![発行書店ID] = NewID
' 発行書店の名前の登録
rs![発行書店] = NewData
' 登録したレコードの保存
rs.Update

Response = acDataErrAdded

End If

Exit Sub
ER_R:
MsgBox Err.Description
Response = acDataErrContinue

End Sub


以上です。基本的なNotInListプロパティの使い方です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
やりたいことをやりたければ、もっと勉強が必要ですね。
これを機にまた勉強をしたいと思います。

お礼日時:2011/05/06 09:32

ルックアップテーブルを使うのが簡単そう。

たとえば
『書店一覧』というテーブルがあって
書店名
アサヒ
昼間
夕日
等のデータが格納してあるとし。

書籍テーブルでは書店名を納めたいフィールドが
『発行書店』とすれば
書籍テーブルをデザインビューで開き
発行書店の、ルックアップタブを開き
表示コントロール → コンボボックス
値集合タイプ→テーブル/クエリ
値集合タイプ→書店一覧
連結列→1
列数→1
列幅→2 (見やすいサイズに)
等としておけば、テーブル上でもフォーム上でも
お望みの形になると思います。

書店の一覧表テーブル内に、ID・書店名・電話番号・住所などが
ある場合はもう少しややこしくなりますけど。
そちらのテーブルの内容が分からないのでここまで。

ところで、
変数を宣言する際にどちらのライブラリを使うか明示されれば
DAOとADOの共存できますよ。
http://msdn.microsoft.com/ja-jp/library/cc948691 …
↑の真ん中あたり
    • good
    • 0
この回答へのお礼

ありがとうございます。
DAOとADOについて勉強してみます。

お礼日時:2011/05/06 09:26

No1です。

追加です。

DAOを使っているので、コード表のツールから
参照設定を選択して、
Microsoft DAO xx Object Library
にチェックを入れて、OKとします。xxは3.6のような数字です。
このとき、
Microsoft ActiveX Data Objects xx Library
にチェックが入っていたらはずしてください。


以上です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
基本の勉強がもっと必要だと思いました。
またよろしくお願いします。

お礼日時:2011/05/06 09:28

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

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

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

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

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

Q基本情報について教えて下さい(._.) 直接材料費 , 間接材料費 直接労務費 ,

基本情報について教えて下さい(._.)

直接材料費 , 間接材料費

直接労務費 , 間接労務費

直接経費 , 間接経費

の違いがよく分からないです。

Aベストアンサー

直接・間接の違いは、簡単に言えば、売上に直接関係するかどうかの違いです。
製造業を例にあげると以下になります。

直接材料費:製品を作る上で必要な材料の費用(鋼材、IC等の半導体、ネジ等)
間接材料費:製品を製造する機械を正常に動かすための費用(潤滑油、純水、交換部品等)

直接労務費:製品を作る人の人件費(加工、組立、試験、検査等)
間接材料費:企業運営に必要な人の人件費(人事、総務、経理等)

直接経費:製品を作る上での経費(上記の直接材料費、直接労務費が該当)
間接経費:企業運営に必要となる経費(上記の間接材料費、間接労務費が該当)

QACCESSのフォームのサイズ、サブフォームのバックカラー、「Microsoft Access」バーの非表示について。

いつも、皆様には本当にお世話になっております。
早速質問なのですが、フォームのサイズを固定にし、(できればVBAで)
しかも、フォームの移動が不可能にしたい(位置の固定)です。
後、サブフォーム(表形式です)が15レコード目を境に背景色を変えたいの
ですが、どうしたらよろしいでしょうか・・・レポートだとできるのは、知
っているのですが。。。。
もう一つですが、ACCESSを立ち上げた際に出てくる「Microsoft Access」
とかいてあるバーを非表示にしたいです。。

ご存知の方どうかアドバイス等よろしくお願いいたします。

Aベストアンサー

こんにちは。Access2000の前提でアドバイスさせていただきます。

>フォームのサイズを固定にし、(できればVBAで)
>しかも、フォームの移動が不可能にしたい(位置の固定)

フォームの読み込み時や開く時、アクティブ時などいずれかのイベントで
下記のような処理を入れればいいです。

DoCmd.MoveSize 500, 0, 15000, 8500

'引数は[right][, down][, width][, height]です。
'[right]・・・・・・左上隅の水平位置
'[, down]・・・・・ 左上隅の垂直位置
'[, width]
'[, height]

'引数の単位は"twip"です。
'twipとはAccess で使われている画面上の長さの基本単位です。
'1 論理 cm は 567 twip、1 論理インチは 1,440 twip になります。
'ここで論理 cm および論理インチとは、画面上に表示されているものを印刷したときに、
'それぞれ 1 cm および 1 インチになる長さを指します。

'ウィンドウのサイズ変更を行わずに移動する場合は、
'"Right/横" 引数と "Down/縦" 引数に値を指定し、
'"Width/幅" 引数と "Height/高さ" 引数は空白のままにします。

'ウィンドウの移動を行わずにサイズ変更する場合は、
'"Width/幅" 引数と "Height/高さ" 引数に値を指定し、
'"Right/横" 引数と "Down/縦" 引数は空白のままにします。

さらに、フォームのプロパティで、
最大化/最小化ボタンは”なし”、または境界線スタイルを”なし”
としたほうがいいかもしれません。

>後、サブフォーム(表形式です)が15レコード目を境に背景色を変えたいの
ですが、
>どうしたらよろしいでしょうか・・・
>レポートだとできるのは、知っているのですが。。。。

レポートでどうやっているか分かりませんが、条件付き書式を利用してはどうでしょうか?

>もう一つですが、ACCESSを立ち上げた際に出てくる「Microsoft Access」
とかいてあるバーを非表示にしたいです。。

タイトルバーを非表示にする方法は、残念ながら自分にはわかりません。ただしタイトルバーの閉じるボタンをクリックしてもすぐにはAccessが終了しないようにメッセージボックスを表示することは可能です。

ご参考になれば幸いです。m(__)m

こんにちは。Access2000の前提でアドバイスさせていただきます。

>フォームのサイズを固定にし、(できればVBAで)
>しかも、フォームの移動が不可能にしたい(位置の固定)

フォームの読み込み時や開く時、アクティブ時などいずれかのイベントで
下記のような処理を入れればいいです。

DoCmd.MoveSize 500, 0, 15000, 8500

'引数は[right][, down][, width][, height]です。
'[right]・・・・・・左上隅の水平位置
'[, down]・・・・・ 左上隅の垂直位置
'...続きを読む

Q直接・間接話法の英訳教えてください

直接・間接話法の英訳教えてください

1 先生は「雨がやむまでここにいなさい。」と言った
  →直接話法
  →間接話法

2 その少年は母親に「今日は火曜日なの、それとも水曜日なの」と尋ねた
  →直接話法
  →間接話法

3 ナンシーはビルに「一週間前だれに会ったの」と尋ねた
  →直接話法
  →間接話法

4 父は私に、「この小説は面白い。しかし、お前が読むには難しすぎるよ。」と言った
  →直接話法
  →間接話法

5 姉は私に「早く起きなさい、さもないと遅刻するわよ。」と言った
  →直接話法
  →間接話法


よろしくお願いします

Aベストアンサー

1 先生は「雨がやむまでここにいなさい。」と言った
  →直接話法 The teacher told me, "Be here until the rain will stop."
  →間接話法 The teacher told me that I should be here until the rain would stop.

2 その少年は母親に「今日は火曜日なの、それとも水曜日なの」と尋ねた
  →直接話法 The boy asked her mother, "Is it Tuesday or Wednesday today?"
  →間接話法 The boy asked her mother that it was Tuesday or Wedneaday that day.

3 ナンシーはビルに「一週間前だれに会ったの」と尋ねた
  →直接話法 Nancy asked Bill, "Who did you meet a week ago?"
  →間接話法 Nancy asked Bill that who Nancy met a week ago.

4 父は私に、「この小説は面白い。しかし、お前が読むには難しすぎるよ。」と言った
  →直接話法 Father told me, "This novel is interesting but it's too difficult for you to read."
  →間接話法 Father told me that this novel was interesting but it was too difficult for me to read.

5 姉は私に「早く起きなさい、さもないと遅刻するわよ。」と言った
  →直接話法 My sister told me, "Wake up, or you'll be late."
  →間接話法 My sisiter told me that I should wake up and I would be late.

1 先生は「雨がやむまでここにいなさい。」と言った
  →直接話法 The teacher told me, "Be here until the rain will stop."
  →間接話法 The teacher told me that I should be here until the rain would stop.

2 その少年は母親に「今日は火曜日なの、それとも水曜日なの」と尋ねた
  →直接話法 The boy asked her mother, "Is it Tuesday or Wednesday today?"
  →間接話法 The boy asked her mother that it was Tuesday or Wedneaday that day.

3 ナンシーはビルに「一週間前だれに会った...続きを読む

Qaccess2007 情報入力フォームの作成につい

メインメニューのレイアウトで、情報入力ボタンと印刷ボタンを設定してあります。
情報入力ボタンをクリックすると「担当・顧客選択メニュー」に移ります。

「担当・顧客選択メニュー」の構成は
担当営業の選択 → コンボボックス
顧客情報(概要) → サブフォーム(担当営業コードで連結)
となっており、担当営業を選択すると担当顧客がサブフォームに表示される
様になっています。

サブフォーム上の顧客番号をダブルクリックすると
「顧客情報入力フォーム」の同一顧客番号の情報へと移動し、顧客情報の
追加や編集がでいる様になっています。

今まで、直接「顧客情報入力フォーム」をあけると、画面下のレコード移動ボタンが
1/XXXXとなり、全顧客数と表示されている顧客が何番目の顧客であるかが
表示されていました。

今回、「担当・顧客選択メニュー」から上記の方法で「顧客情報入力フォーム」を
開けるとレコード移動ボタンの表示が1/1となり、その右にフィルタ適用と表示
されます。これの理屈は理解できるのですが、レコード移動ボタンを押すと
2/2となり、真白なブランクフォームが表示されてしまいます。

また、「担当・顧客選択メニュー」からダブルクリックで「顧客情報入力フォーム」へ
移動すると、同一顧客番号で移動しているはずが顧客番号がブランクの画面が
表示されてしまいます。「戻る」ボタンで再度同じ事をやると、今度はちゃんと
表示されます。

これがなぜそうなってしまうのか全くわかりません。
フィルタがかかっている状態で2/2となるのはなぜなのか、
ダブルクリックで同一顧客番号へ移動するはずが顧客番号なしのブランクフォームが
表示されるのはなぜなのか?

お心当たりのある方、改善策のヒントを頂ければと思っております。

宜しくお願い致します。

メインメニューのレイアウトで、情報入力ボタンと印刷ボタンを設定してあります。
情報入力ボタンをクリックすると「担当・顧客選択メニュー」に移ります。

「担当・顧客選択メニュー」の構成は
担当営業の選択 → コンボボックス
顧客情報(概要) → サブフォーム(担当営業コードで連結)
となっており、担当営業を選択すると担当顧客がサブフォームに表示される
様になっています。

サブフォーム上の顧客番号をダブルクリックすると
「顧客情報入力フォーム」の同一顧客番号の情報へと移動し、顧客情報の
追...続きを読む

Aベストアンサー

用語が一定で表記されていないので読解にとまどいます。
(顧客情報=サブフォーム=子フォーム?、顧客番号=顧客CD?)


2/2の表示が出て、「顧客情報入力フォーム」がすべて
ブランクになるということは、「顧客情報入力フォーム」の
レコードソースの新規レコードに移動したということです。
試しに入力してテーブルにどのように反映されるか確認
してみてはどうですか。入力しなければ何も反映されません。
(入力してもフォームの鉛筆マークが出ていれば一旦
レコードを前にもどしてレコードの保存を確定してください。)

どうしてもフィルターをかけたレコードのみを表示し、
新規レコードに移動可能にしたくないのであれば、
「顧客情報入力フォーム」のプロパティで
移動ボタンを「いいえ」にしてください。


補足の、

>但し、子フォームの訪問情報には顧客コードと過去に入力した
>履歴情報が親フォームで指定した顧客番号とは関係なく
>表示されています。

は子フォーム(サブフォームのこと?)のレコードソースの
設定がうまくいっていないのでは、と思いますが。
レコードソースのSQL文をよく確認してみてください。
抽出条件など。

用語が一定で表記されていないので読解にとまどいます。
(顧客情報=サブフォーム=子フォーム?、顧客番号=顧客CD?)


2/2の表示が出て、「顧客情報入力フォーム」がすべて
ブランクになるということは、「顧客情報入力フォーム」の
レコードソースの新規レコードに移動したということです。
試しに入力してテーブルにどのように反映されるか確認
してみてはどうですか。入力しなければ何も反映されません。
(入力してもフォームの鉛筆マークが出ていれば一旦
レコードを前にもどしてレコードの保存を確定してくだ...続きを読む

Q会社法の「直接~」「間接~」責任について

法律初学者です。
会社法の「直接無限責任」「間接有限責任」等について、以下をご教示願います。

1. 「直接無限責任」「間接有限責任」等にある「直接」「間接」の意味について、会社法ではどの条文で説明しているのでしょうか
2. 「間接無限責任」というものもありうるでしょうか

Aベストアンサー

> 「直接有限責任」というものもあり

 会社法の580条第2項の規定のことでしょうかね?

 なるほど。

 これは、( )内の除外文言から見て、「出資の価額」というのは「出資した額」ではなくて、「出資を約束したがまだ履行していない分」でしょうかねぇ?

 その未履行分の範囲内で、会社の債権者に直接的な弁済責任を負うようですね。

 ただ、実社会では必要だから出資を仰ぐわけですんで、約束して会社が成立するときにすぐ出資を履行してしまいそうな気がします。

 とすると、実社会ではどれくらい意味がある条文なのかわかりませんが、条文上は「直接有限責任」というものはあるようですね。

 しかし授業ではそういう話は出ませんでしたし、そのあたりは商法(昨今は会社法?)のテキストにもほとんど触れていないところだろうと思います。

 条文解釈には、「コンメンタール」という形式の解説書がありますので、なんでしたら、図書館あたりで580条を読まれると理解が早いし、正確かもしれませんよ。有斐閣あたりから出てないでしょうか。


 ちなみに、最初にお尋ねの、間接無限責任らしい規定も探してみましたが、見当たりませんでしたね。

 間接、というのは、会社が損をすることによって自分が損をする(自分は請求訴訟などの当事者にならない)という構造を表しています。

 (直接、というのはその逆ですね)

 その一方で、出資額は授権資本制度などで有限とされていますので、無限の出資ということはありえず、したがって「間接的でかつ無限責任」ということはありえないものと、改めて思いました。

 まあ、商法は専攻ではありませんし、全条文を詳細に読み直したわけではありませんでしたけど。
 

> 「直接有限責任」というものもあり

 会社法の580条第2項の規定のことでしょうかね?

 なるほど。

 これは、( )内の除外文言から見て、「出資の価額」というのは「出資した額」ではなくて、「出資を約束したがまだ履行していない分」でしょうかねぇ?

 その未履行分の範囲内で、会社の債権者に直接的な弁済責任を負うようですね。

 ただ、実社会では必要だから出資を仰ぐわけですんで、約束して会社が成立するときにすぐ出資を履行してしまいそうな気がします。

 とすると、実社会ではどれく...続きを読む

QMS Access2000のフォームの表示方法について教えてください。

図1、データが5000件位の製品テーブルがあります。
図1項目名の番号に対する名称等は別のテーブルにあります。

図1(テーブル)
----------------------------------------------------------
 製品番号 | 予算番号 | 新製品番号 | ・・・ | ・・・
----------------------------------------------------------
 3310001 | 3230002  |  ・・・   | ・・・ | ・・・
 3310001 | 3230002  |  ・・・   | ・・・ | ・・・
 3310010 | 3230015 |  ・・・   | ・・・ | ・・・
・      ・      
   ・      ・

テーブル図1を使ってクエリ又はフォームで、「材質番号」という項目を追加して図2のような感じでフォームを作成したいのです。
材質番号という項目はベースとなる図1テープル、図1クエリには無く、別テーブルになっています。

図2(フォーム)
---------------------------------------
|製品番号|(製品名称テーブルより製品名) |
---------------------------------------

---------------------------------------
|予算番号|(予算名称テーブルより予算名称)|
---------------------------------------

----------------------------------------
|材質番号|(材質名称テーブルより材質名称)|
----------------------------------------

なお、作成するフォームは各番号と名称を使用してのデータ検索のみで、入力はしません。

ちょっと質問がややこしくなってしまいましたので、簡単にやりたいことを言いますと、製品フォームにまったく関係の無い材質テーブルの材質番号を、製品フォームに表示させて、検索、閲覧したいということなのです。

Accessもですが、VB&VBA等初心者ですので、できれば使用しない方法がありましたらよろしくお願いいたします。

図1、データが5000件位の製品テーブルがあります。
図1項目名の番号に対する名称等は別のテーブルにあります。

図1(テーブル)
----------------------------------------------------------
 製品番号 | 予算番号 | 新製品番号 | ・・・ | ・・・
----------------------------------------------------------
 3310001 | 3230002  |  ・・・   | ・・・ | ・・・
 3310001 | 3230002  |  ・・・   | ・・・ | ・・・
 3310010 | 3230015 |  ・・・   ...続きを読む

Aベストアンサー

希望されているような表示を行いたい場合、次のような条件が必要になります。

・「材質番号」の取得元テーブルに「製品番号」もしくは「予算番号」と同じルー
 ルのデータを収納しているフィールドがあり、データ型が図1テーブルの前述フ
 ィールドと一致している。
・上記を満たした上で「製品番号」もしくは「予算番号」(とそれに相応するフィ
 ールド)は、図1テーブルと「材質番号」のあるテーブル間で同じ製品に関して
 同じ番号を使用している。

この条件を満たした上で、下記の方法でクエリとフォームを作成します。

1.図1テーブルを元に、「選択クエリ」を作成する。
  (フィールドは「製品番号」および「予算番号」だけを選択)

2.作成したクエリをデザインモードで開き、メニューの「クエリー(Q)」-「テー
  ブルの表示(T)」から「材質番号」のフィールドを含むテーブルを表示させる

3.図1テーブルのフィールドリストのボックスから、「製品番号」もしくは「予
  算番号」のうちの双方にあるほうのフィールドを手順「2.」で開いたテーブ
  ルのフィールドリスト内の同名フィールド(かそれに順ずるもの)のところま
  でドラッグアンドドロップする

4.「3.」の手順で双方のフィールドリスト間に線が表れたら、クエリのフィー
  ルドリストにフィールド:材質番号、テーブル:「2.」で開いたテーブル名
  のフィールドを追加する

5.クエリを保存して閉じ、ここまでの手順で作成したクエリを元にしたフォーム
  を作成する

以上です。すこし難しいかもしれませんが、上記は「リレーションシップ」という機能を利用する方法です。条件が合うようでしたら利用してみてください。

希望されているような表示を行いたい場合、次のような条件が必要になります。

・「材質番号」の取得元テーブルに「製品番号」もしくは「予算番号」と同じルー
 ルのデータを収納しているフィールドがあり、データ型が図1テーブルの前述フ
 ィールドと一致している。
・上記を満たした上で「製品番号」もしくは「予算番号」(とそれに相応するフィ
 ールド)は、図1テーブルと「材質番号」のあるテーブル間で同じ製品に関して
 同じ番号を使用している。

この条件を満たした上で、下記の方法でク...続きを読む

Qキャッシュフロー計算書の直接法、間接法の名前の由来

キャッシュ・フロー計算書に直接法と間接法がありますが、なぜ「直接」、「間接」と呼ぶのでしょうか。

Aベストアンサー

作成方法の違いですよね。
仕訳のうち現金同等物に関する仕訳のみを抽出して作成する「直接法」と、
貸借対照表、損益計算書、利益処分計算書から間接的に作成する「間接法」があります。

キャッシュの動き(増減)に対して、動きを直接計算するから「直接法」、
結果から逆算するから「間接法」自分としてはこんな理解です。

QACCESSでデーフル作成入力フォームで入力しながら、クエリのデータを参照したい

ACCESSで売上明細テーブルを作成し、入力用のフォームを作成しました。他に顧客マスタテーブルがあります。売上明細には顧客CDフィールドがありますが、顧客名等はマスターに存在するため設けてません。しかし売上明細入力時に顧客CDを入力した時点で顧客名の確認がしたいのです。そこで入力フォームの顧客CDの隣に非連結でテキストボックスを作り、そこに顧客名を表示したいのです。売上明細には顧客名のフィールドは追加したくありません。ただ参照したいだけです。顧客マスタと売上明細で顧客CDをキーにクエリを作成し、明細に対応する顧客情報は顧客情報検索というクエリで作成済みです。入力フォーム画面の非連結のフィールドのプロパティのコントロールソースに
=DLookup("[顧客名]","顧客情報検索","[顧客CD] =" _ & Forms![売上明細入力Form]![顧客CD])
と表記しましたがエラーになります。
最初はコントロールソースに直接顧客情報検索クエリの顧客名フィールドを表記し、フォーカス取得時にクエリを開くマクロを実行していました。でもやはり表示されませんでした。
顧客名の設定をどのように設定すればいいのですか?
コントロールソースでの設定だけでは無理なのでしょうか?
よろしくお願いします。

ACCESSで売上明細テーブルを作成し、入力用のフォームを作成しました。他に顧客マスタテーブルがあります。売上明細には顧客CDフィールドがありますが、顧客名等はマスターに存在するため設けてません。しかし売上明細入力時に顧客CDを入力した時点で顧客名の確認がしたいのです。そこで入力フォームの顧客CDの隣に非連結でテキストボックスを作り、そこに顧客名を表示したいのです。売上明細には顧客名のフィールドは追加したくありません。ただ参照したいだけです。顧客マスタと売上明細で顧客CDをキーにクエリ...続きを読む

Aベストアンサー

ご質問の件では、アンダーバー「_」は無用です。
(VBAの編集画面上であれば、一群の文字列の改行表示のために使用することもありますが、
 コントロールソースへの直接記述には使用できません)
従って、以下のようにすれば、とりあえず今現在起きているエラーは解消するかと思います:

現在:
=DLookup("[顧客名]","顧客情報検索","[顧客CD] =" _ & Forms![売上明細入力Form]![顧客CD])

修正後:
=DLookup("[顧客名]","顧客情報検索","[顧客CD] =" & Forms![売上明細入力Form]![顧客CD])
または:
=DLookup("[顧客名]","顧客情報検索","[顧客CD] =" & [顧客CD])

*「顧客情報検索」がフォームのレコードソースで、もしも「顧客マスタ」に相当するテーブルがあるの
 でしたら、ここの式にはそちらを使用した方がよいはずです。

なお、もしも「顧客CD」のデータが数値型ではなくテキスト型などの場合は、
=DLookup("[顧客名]","顧客情報検索","[顧客CD] ='" & [顧客CD] & "'")
のように、Where条件式の右辺がシングルクォーテーションで括られるようにする必要があります。


※演算コントロール(=コントロールソースが関数のコントロール)で誤作動というのは、私には経験が
  ありません。
  但し、VBAでは、「Me」で、コードを記述しているフォームそのものを参照することができますが、
  コントロールソースなど、プロパティシートに直接記述する関数では「Me」は使用できない、
  といった制限はあります。


  ------------------------------------

なお、演算コントロールでは、検索や並べ替えができないといった制約があります。
同じDLookupを使うのであれば、フォームではなくクエリで演算フィールドを作成してコントロール
ソースとして使用した方が、検索・並べ替えが行えるので使い勝手はよいと思います。
(「売上明細には顧客名のフィールドは追加したくありません」とのことですが、テーブルではなく
 クエリのみへのフィールド追加なので、問題ないのではないかと)

演算フィールドは、クエリのデザインビューの「フィールド:」欄に、
顧客: DLookup("[顧客名]","顧客マスタ","[顧客CD]=[顧客マスタ]![顧客CD]")
といったように入力します(「テーブル:」欄は空白のまま)。

*上記の式は、「顧客情報検索」がクエリで、「顧客CD」フィールドが「顧客マスタ」テーブルの
 「顧客CD」フィールドに拠っている、という前提で作成しました。

ご質問の件では、アンダーバー「_」は無用です。
(VBAの編集画面上であれば、一群の文字列の改行表示のために使用することもありますが、
 コントロールソースへの直接記述には使用できません)
従って、以下のようにすれば、とりあえず今現在起きているエラーは解消するかと思います:

現在:
=DLookup("[顧客名]","顧客情報検索","[顧客CD] =" _ & Forms![売上明細入力Form]![顧客CD])

修正後:
=DLookup("[顧客名]","顧客情報検索","[顧客CD] =" & Forms![売上明細入力Form]![顧客CD])
または:
=...続きを読む

Q会社法の社員における「直接~責任」「間接~責任」

会社の社員については、「直接無限責任」「間接有限責任」のように、「直接~」「間接~」とありますが、これを示すのは、会社法におけるどの条文でしょうか。

Aベストアンサー

>会社の社員については、「直接無限責任」「間接有限責任」のように、「直接~」「間接~」とありますが、これを示すのは、会社法におけるどの条文でしょうか。


会社法104条、576条、580条、583条等ですけど 
あくまでも、580条等に対しての間接という表現です、

QAccess2002 閲覧フォームから入力フォームへのレコードの受け渡し

度々すみません。

Access初心者です。よろしくお願いします。

例えば「基本情報フォーム」から、「付帯データ入力フォーム」を起動する作りになっていたとします。

この場合、基本情報フォームは閲覧専用で、付帯データ入力フォームは入力用フォームになると思います。

しかし、コマンドボタンの追加ウィザードで両方のフォームで取り扱う「ID」で絞り込んで入力フォームを開こうとすると、うまく行きません。
単純に、入力フォーム単体で立ち上げると、入力できます。

やりたいことは単純で、閲覧フォーム上のIDを、入力用フォームのIDフィールドに表示させたいだけなのですが。。。

解決策をご存知の方がいらっしゃいましたら、ご教授お願いいたします。

Aベストアンサー

#2です

> 入力用フォームのほうにはある「区分」が用意されており、区分コードをコンボボックスで選択する作りになっています。
> その場合でも、1つのフォームでできるのでしょうか?
> 「表示フォーム」は区分コードに紐づいている「区分名」が表示されるようにしてあります。

コンボボックスの内容(連結列)が同じであれば、同様に既定値を設定できます。

コンボボックス名が「cbx01」だったとします。

表示の元となる区分テーブル「T区分」が以下だったとします。

区分コード 区分名
1      区分A
2      区分B
3      区分C
4      区分D
5      区分E

コンボボックスの値集合ソースが
SELECT 区分コード, 区分名 FROM T区分;

連結列:1
列数:2

表示フォームでの列幅: 0cm;2cm (1列目を表示しない:区分名だけ表示)
入力フォームでの列幅: 2cm;0cm (2列目を表示しない:区分コードだけ表示)

この設定で、コンボボックスに表示されるものは変わりますが、連結されているものは「区分コード」になっているので、

Me.cbx01.DefaultValue = Screen.ActiveForm.cbx01

で既定値を設定することができます。
(起動元に同様のコンボボックスがあったとして)

表示用/入力用ともコントロールソースには「区分コード」に対応するフィールドを指定していると思いますので、問題なさそうな気がします。


なお、起動元に「区分名」しかない時とかは、その時のテキストボックス名を「txt1」とすると、

Me.cbx01.DefaultValue = _
  DLookup("区分コード", "T区分", "区分名 = '" & Screen.ActiveForm.txt1 & "'")

とすれば既定値として設定できます。

列幅(表示)の切り替えは、ColumnWidths で変更します。
列幅が上記例であるとすれば、
レコードがあったら、Me.cbx01.ColumnWidths = "0cm;2cm"
入力用なら、Me.cbx01.ColumnWidths = "2cm;0cm"
と設定すれば、表示は切り替わります。

#2です

> 入力用フォームのほうにはある「区分」が用意されており、区分コードをコンボボックスで選択する作りになっています。
> その場合でも、1つのフォームでできるのでしょうか?
> 「表示フォーム」は区分コードに紐づいている「区分名」が表示されるようにしてあります。

コンボボックスの内容(連結列)が同じであれば、同様に既定値を設定できます。

コンボボックス名が「cbx01」だったとします。

表示の元となる区分テーブル「T区分」が以下だったとします。

区分コード 区分名
1...続きを読む


人気Q&Aランキング