みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Access: チェックボックスで入力可能に

Access初心者です。宜しくお願い致します。
Formを作成中です、株式ティッカーを入力すると会社名や事業内容をテーブルから自動入力するように設定しました。ここからが質問です、「未上場」というチェックボックスにチェックを入れると、(1)株式ティッカーの欄を入力不可にすることは出来ましたが、(2)会社名の欄に手入力をする(株式ティッカーとの紐づけの解除?)ことが出来ません。簡単な設定方法をご教示下さい。ありがとうございます。

投稿日時 - 2019-05-27 13:22:54

QNo.9620576

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(8)

ANo.8

お早うございます
>紐づけの解除?
★これがリレーションシップなら<1:∞>の完全整合性だけにして下さい
 紐づけ両フィールドに重複の情報があると重複数×重複数のレコード数に
 なってしまいます。
 <∞:∞>のままでは完全整合性のリレーションは組めません
 重複の無いフィールドとは
  1.データ型がオートナンバー型
  2.主キー(連読の複数のフィールドでの主キーも含む)
  3.インデックスプロパティーが重複なし
★既に設定済みとは思いますが
 Accessファイルを起動ときに<アクセスオプション>で
 最初に開くフォームを設定できます。
 ファイル→オプション→現在のデータベース
 →フォームの表示のプルダウンリスト→メニュー→OK

投稿日時 - 2019-06-07 08:02:11

ANo.7

進行していますか?お忙しいようですね
あるいは、検討外れの回答ですか、何かコメント頂けませんか?
------------------------------------------------------------
添付は実行結果です。
 添付中央は登録画面:レコードの追加行があります。
 右は上場企業と未上場企業:タイトルが逆になっています、
 追加行がありません、フィルタがかかっています

動作確認なら
テーブル
・T_企業マスタ(Yes/No型の未上場のフィールドの確認)
・T_Astra
・T_Speeda
・プロフィール(数値型のフィールド:期初月)
 これ以外の項目はVBAの対象となっていません
メニューフォームは
 レコードソースのテーブルをプロフィールとし、プロフィールのフィールドから期初月を配置
 日付型のテキストボックスを基準日と
 基準日から求める11個の非連結のボックス
  期初月、期初日、開始日、期末日、繰越日、
  月初日、月末日、前年度、当年締日、次年期初、次年期末
 VBA起動用のラベルボックス 8個
  前日、翌日、前月、翌月、前年、次年、終了、表題
 課題解決の「オプショングループ」ツールを配置して
 VBAをコピペすると完成です。
 オプショングループをフォームにドラッグすると
 複数のボックスが作られます。
  1.オプショングループ枠:この名前をFgとします
  2.オプションボタン:ボタンの数だけの1からの連番がとられ、
   クリック選択したボタンの値が枠の値です
  3.枠とボタンのラベル:書式プロパティに
   枠名前:Fg
   ボタンの名前:F_FM登録、上場企業、未上場企業

投稿日時 - 2019-06-06 13:24:00

ANo.6

メニューForm
・他のフォーム、クエリ、レポートの検索値を確定させてから開きます
 検索値には、今回のように上場企業、未上場企業、両方の条件電話番号
 F_FMをワンクリックで開くのが課題でしたが
 通常 日報、月報、年報のように期間(開始日~終了日)
 社員、顧客も検索項目になります。
  この場合はコンボボックッスから開きます
 また、納品書等には自社名、所在地等の自社情報も必要でしょう。
 これらをプロフィールと呼ぶテーブルに登録しておきます。
添付はメニューフォームの一例電話す。
・フォームヘッダーにプロフィールのテキストボックス
・詳細部分:ほとんどがラベルボックッスで
 非連結のテキストボックスボックッス名を基準日(規定値=Date())
 今回のオプショングループとオプションボタン
  オプショングル―プ内のオプションボタンは値を持っていて選ばれると
  オプショングループの値となります
・フォームフッタ:プロフィールの期初月と基準日より求めた
 日付のオンパレード
 画面を横断している標題バーはホームヘッダのプロフィールの上に配置し
 ダブルクリックで非表示にすると下に隠れていたプロフィールが表示され
 編集が出来ます。
以下はメニューのコーディングリストです。
コピペして動作を確認ください。
-----------------------------------------------------------------
Option Compare Database
Option Explicit
Private Sub Form_Load()
基準日 = Date
基準日変更RTN
End Sub
'--------------------------
Private Sub 基準日変更RTN()
If Month(基準日) < 期初月 Then
期初日 = DateValue(Year(基準日) - 1 & "/" & 期初月 & "/" & 1)
Else
期初日 = DateValue(Year(基準日) & "/" & 期初月 & "/" & 1)
End If
開始日 = 期初日
期末日 = 期初日 + 366: 期末日 = 期末日 - Day(期末日)
繰越日 = 期初日 - 1
月初日 = 基準日 - Day(基準日) + 1
月末日 = 月初日 + 31: 月末日 = 月末日 - Day(月末日)
前年度 = 期初日 - 360: 前年度 = 前年度 - Day(前年度) + 2
If 基準日 = 月末日 Then
当年締日 = 月末日
Else
当年締日 = 月初日 - 1
End If
次年締日 = 当年締日 + 370 - Day(当年締日 + 370)
次年期初 = 期末日 + 1
次年期末 = 次年期初 + 370 - Day(次年期初 + 370)
End Sub
'---------------------------------------
Private Sub 株評価推移登録_Click()
DoCmd.OpenForm "株評価推移登録"
End Sub
'---------------------------
Private Sub 基準日_DblClick(Cancel As Integer)
基準日 = Date
基準日変更RTN
End Sub
'------------------------------------------------
Private Sub 基準日_AfterUpdate()
基準日変更RTN
End Sub
'---------------------------------------------------
Private Sub 次年_Click()
基準日 = 期末日 + 1
基準日変更RTN
End Sub
'-----------------------------------------------
Private Sub 終了_Click()
DoCmd.Quit
End Sub
'-----------------------------------------------
Private Sub 前年_Click()
基準日 = 期初日 - 1
基準日変更RTN
End Sub
'--------------------------------------------------------
Private Sub 前月_Click()
基準日 = 基準日 - Day(基準日)
基準日変更RTN
End Sub
'------------------------------------------
Private Sub 前日_Click()
基準日 = 基準日 - 1
基準日変更RTN
End Sub
'-------------------------------------
Private Sub 表題_DblClick(Cancel As Integer)
If 表題.Visible = False Then
表題.Visible = False = True
Else
表題.Visible = False
End If
End Sub
'---------------------------------------------------------
Private Sub 翌月_Click()
If Day(基準日) > 20 Then
基準日 = 基準日 + 20
Else
基準日 = 基準日 + 31
End If
基準日 = 基準日 - Day(基準日) + 1
基準日変更RTN
End Sub
'---------------------------------------------------------
Private Sub 翌日_Click()
基準日 = 基準日 + 1
基準日変更RTN
End Sub
-----------------------------------------------------------------

投稿日時 - 2019-06-04 03:21:17

ANo.5

回答No.4のF_FMのVBAに余分な命令文2行混じっていました
次の2行を除去して下さい
----------------------------------
Form.AllowEdits = False 'レコードの編集禁止
株式コード.Locked = False 'フィールドの編集禁止
-----------------------------------
いきなり「既定値_RTN」ガ出てきましたが
これは別の
---------------------------------------------------
Private Sub 既定値_RTN()
 Form.AllowAdditions = True 'レコードの追加許可
 Form.AllowEdits = True 'レコードの編集許可
 Form.AllowDeletions = True 'レコードの削除許可
 株式コード.Locked = False 'フィールドの編集許可
End Sub
-----------------------------------------------------
を呼び出す手法で、何度も同じ流れ、
また処理作業を分割するときの手法です
★添付は左がフォームのプロパティーで右がフィールドのプロパティーです
 これは静的にするときで、動的に設定するにはVBAによります。
--------------------------------------------------------
返事漏れがないか、最初から見直してみました。
>株式ティッカーを入力すると会社名や事業内容をテーブルから自動入力するように設定しました。
★このテーブルはファイル内にあるテーブルですか
 他のファイルよりインポートしていますか
>「未上場」というチェックボックスにチェックを入れると、
 (1)株式ティッカーの欄を入力不可にすることは出来ましたが、
★これは会社名のフィールドですね
 VBA 社名.Locked = True 'フィールドの編集禁止
 で可能ですね

>(2)会社名の欄に手入力をする(株式ティッカーとの紐づけの解除?)
★この紐づけはリレーションではなく、株式ティッカーは検索キーワードですか
--------------------------------------------------------------------------------
>「未上場」と言うチェックボックスを作っています。
 「未上場」と言うチェックボックスに( チェック)を入れた際は、
 「株式コード」が選択不可で「社名」は任意で入力可能にしたいと思います。
★株式コード.Visible =False とIIF分で可能ですね
>「社名」と「株式コード」は「T_上場企業マスタ」から
 「業種」は「T_Astraマスタ」
 「設立日」は「T_Speedaマスタ」から、
 「株式コード」でリレーションを組み「Q_上場企業」を作っています。
★T_企業マスタ、T_Astraマスタ、T_Speedaマスタ間で
 参照整合性のリレーションのテーブル設計で、
 株式コードのフィールドはどれか一つのテーブルに作っておけば
 リレーションをつたってどのテーブルからも参照できます
 この時にでかい顔を出すのがテーブルデザインのルックアアップによる
 コンボボックスで設定はクエリ作成と同じ要領です。
 Excelの入力規則のリストのプルダウンリストで、
 リストの並び順は読み順、コード順
 リスト行数も画面が許す限りOKです。
 私は48行、縦長のディスプレイがないものかと
 事前にリレーションの検索キーを調べる必要もなく、
-----------------------------------------------------------------------------

投稿日時 - 2019-06-02 22:56:45

ANo.4

今日は
回答No.3は無視して下さい。
1.メニューフォームの作成
 作成→空白のフォーム
1-1.オプショングループ枠の配置
 →オプショングループ→フォーム上へドラッグ→適当に大きさを決める
 →フレームの名前をFgに変更→左上のラベルをFgに変更
1-2.オプションボタンを枠内に配置
  →オプションボタン→枠内→オプションXXをF_FM登録に変更
  →オプションボタン→枠内→オプションXXを上場企業に変更
  →オプションボタン→枠内→オプションXXを未上場企業に変更
1-3.オプショングループ枠値が1、オプションボタンの値が1,2,3になっている事を確認
1.4.VBAをコピペ
-------------------------------------------------------
Option Compare Database
Option Explicit
Private Sub Fg_Click()
Select Case Fg
Case 1
DoCmd.OpenForm "F_FM"
Case 2
DoCmd.OpenForm "F_FM", , , "未上場=True"
Case 3
DoCmd.OpenForm "F_FM", , , "未上場=False"
End Select
End Sub
------------------------------------------------------------------------
2.F_FMの仕上げ
2.1.T_企業マスタに未上場の項目を追加
 企業マスタをデザインモードで開く
 →最後尾のフィールドに「未上場」データ型 Yes/No型→既定値を1
2.2.F_FMへ項目追加
2.2.1フォームをデザインモードで開く
 →未上場をフォームへ配置
 →テキッスットボックッス(ボックス名:表題)を配置
2.3.VBAをコピペ
-----------------------------------------------------------------------------
Option Compare Database
Option Explicit
Private Sub Form_Load()
既定値_RTN
Form.AllowEdits = False 'レコードの編集禁止
株式コード.Locked = False 'フィールドの編集禁止

Select Case Forms!メニュー!Fg
Case 1
表題 = "F_FM登録"
Case 2
表題 = "上場企業"
Form.AllowAdditions = False 'レコードの追加禁止
Form.AllowDeletions = False 'レコードの削除禁止
Case 3
表題 = "未上場企業"
Form.AllowAdditions = False 'レコードの追加禁止
Form.AllowDeletions = False 'レコードの削除禁止
株式コード.Locked = True 'フィールドの編集禁止
End Select
End Sub
Private Sub 既定値_RTN()
Form.AllowAdditions = True 'レコードの追加許可
Form.AllowEdits = True 'レコードの編集許可
Form.AllowDeletions = True 'レコードの削除許可
株式コード.Locked = False 'フィールドの編集許可
End Sub
------------------------------------------------------------

投稿日時 - 2019-06-02 16:32:13

ANo.3

テーブルとリレーションが出来ましたら次に進みます。
条件付きでフォームを開くときは前もって条件の情報の値を確定します。
確定していないフォームまたはクエリを開くと先ず入力窓が現れるのは体験済みですね。
開く条件は、期間、特定顧客、と多様です。
検索値を確定するフォームを作成し、
同じフォーム上に目的のフォームを開く配置すれば一石二鳥ですね
そのフォームの名前をメニューとしたのが添付です。
メニューフォームについては色々記述したいですが、きりがありません。
---------------------------------------------------------
メニューのVBA
Option Compare Database
Option Explicit

Private Sub F_FM登録_Click()
If IsNull(Fg) Then
DoCmd.OpenForm "F_FM"
Else
DoCmd.OpenForm "F_FM", , "未上場=[forms]![メニュー]![Fg]", "未上場=[forms]![メニュー]![Fg]"
End If
End Sub
Private Sub Fg_LostFocus()
Select Case Fg
Case Fg = 1
F_FM登録 = "未場企業"
Case Fg = -1
F_FM登録 = "上場企業"
Case Else
F_FM登録 = "F_FM登録"
End Select
End Sub
-----------------------------------------------
F_FMのVBA
Option Compare Database
Option Explicit
Private Sub F_FM登録_Click()
If IsNull(Fg) Then
DoCmd.OpenForm "F_FM"
Else
DoCmd.OpenForm "F_FM", , "未上場=[forms]![メニュー]![Fg]", "未上場=[forms]![メニュー]![Fg]"
End If
End Sub
Private Sub Fg_LostFocus()
Select Case Fg
Case Fg = 1
F_FM登録 = "未場企業"
Case Fg = -1
F_FM登録 = "上場企業"
Case Else
F_FM登録 = "F_FM登録"
End Select
End Sub

投稿日時 - 2019-06-01 17:25:07

ANo.2

お待たせしました
>「F_FM」と言うフォームに、3つのテーブルを1つにした
 「Q_上場企業」から「株式コード」「社名」「業種」「設立日」などのフィールドと、
 「未上場」と言うチェックボックスを作っています。
★「未上場」と言う非連結のチェックボックスを
  F-FMを開くためのフォーム上にも配置します
 これとF_FM上の比較して上場企業だけ、未上場だけの表示されます。
 
>「株式コード」が選択不可で「社名」は任意で入力可能にしたいと思います。
★ フォームのプロパティーに追加の許可、削除の許可、更新の許可
 フィールドのプロパティーに編集ロックがありますが
 レコードのあるフィールドの値ではありません
>「社名」と「株式コード」は
「T_上場企業マスタ」から
「業種」は「T_Astraマスタ」
「設立日」は「T_Speedaマスタ」から、
「株式コード」でリレーションを組み「Q_上場企業」を作っています。
宜しくお願い致します。
★次のように解釈しました
 テーブルは「T_企業マスタ」、「T_Speeda」、「T_Astra」の3つ
・ T_企業マスタ
 ID (オートナンバ型、主キー)
 株式コード(整数型、重複なし)
 未上場(Yes/No型) 
・T_Speeda
 ID (オートナンバ型、主キー) 
 株式コード(整数型、重複あり)
 設立日(日付/時刻型)
・T_Astra
 ID (オートナンバ型、主キー) 
 株式コード(整数型、重複あり)
 業種(テキスト型)
★回答 「T_Speeda」、「T_Astra」は別のPcで登録されると考え、
 T_企業マスタIDへのリレーション用のフィールドを追加し
★添付図の右は、リレーション設定の過程と、
 リレーションの線を右クリックすることで確認できます。
 リレーションシップはフォーム、レポートに反映されます1:∞の完全整合性です。
 また、人間社会もこれに似ています。
 父親は複数の子供を持つことが出来ますが、
 子供は複数の父親を持てません
 違う点は父親が亡くなっても子供は生きて行けますが、
 子のテーブルのレコード数が0になるまで削除する事が出来ません
 株式コードとは新聞の株価欄のコードですか
 「T_Speeda」、「T_Astra」とはどのようなものですかどの様なものですか  これは興味本位です。差し障りがあるようでしたらよろしいです。

投稿日時 - 2019-05-31 18:38:34

ANo.1

>Access初心者です。宜しくお願い致します。
 Formを作成中です、
 株式ティッカーを入力すると会社名や事業内容を
 テーブルから自動入力するように設定しました。
 「未上場」というチェックボックスにチェックを入れると、
 (1)株式ティッカーの欄を入力不可にすることは出来ましたが、
 (2)会社名の欄に手入力をする(株式ティッカーとの紐づけの解除?)ことが出来ません。
 簡単な設定方法をご教示下さい。ありがとうございます。
★情報が不足しています。補足願いまし
(1)テーブルの項目名【フィールド名)を列挙して下さい
(2)「株式ティッカーの欄」これはテーブルの項目の一つですか
(3)紐づけの対象は何と何ですか、
 Accessにはリレーションシップと呼んで、売上情報と得意先情報を紐づけしますが
 これは紐づけたり、解除したりするものではありません

投稿日時 - 2019-05-28 01:29:22

補足

ご連絡有難うございます。
「F_FM」と言うフォームに、3つのテーブルを1つにした「Q_上場企業」から「株式コード」「社名」「業種」「設立日」(レコードソースを確認するとそれぞれのテーブルの項目が選択されています)などのフィールドと、「未上場」と言うチェックボックスを作っています。
「未上場」と言うチェックボックスに(チェックボックス チェック)を入れた際は、「株式コード」が選択不可で「社名」は任意で入力可能にしたいと思います。「社名」と「株式コード」は「T_上場企業マスタ」から「業種」は「T_Astraマスタ」「設立日」は「T_Speedaマスタ」から、「株式コード」でリレーションを組み「Q_上場企業」を作っています。
宜しくお願い致します。

投稿日時 - 2019-05-28 13:36:12

あなたにオススメの質問