Microsoft Access 掲示板

メインフォームからサブフォームへのレコードの代入※含むチェックボックス

20 コメント
views
4 フォロー

メインフォームに多数並べたチェックボックス。メインフォームのチェックボックスにチェックが入っていたら、サブフォームの該当するチェックボックスにチェックを入れたいのですが、できません。。。;;実行時エラーが表示されてしまいます。     ”テーブルが設定されたレコードが必要なので、レコードの追加や変更を行うことはできません。”とのことです。
ひょっとして リレーションシップをつなげたテーブルだとダメなんでしょうか???
ご指導何卒宜しくお願いします
※前回hatenaさんに忠告いただいたソースコードの掲載の仕方 やり方がわからないです。。。。;;
見づらいかもしれませんが、何卒ご指導よろしくお願いいたします。

'ADO接続開始
Dim Cn ADODB.Connection
Dim Rs ADODB.Recordset

Set Cn = CurrentProject.Connection
Set Rs = New ADODB.Recordset

Rs.Open "MST実査実績一覧",Cn,adOpenkeyset,adLockOptimistic

Dim a,b,c,d,e,f,g As Variant
a=""
a=Nz(Dlookup("ID","MST実査実績一覧","実査住所='" &
Me.Txt実査住所.Value & "'),"" AND "& "担当者='"

& Me.Cmb実査担当者.Value & "'"),"")

a=MsgBox("登録しますか?",vbYesNo + vbDefaultButton1)
If a = vbYes Then

'登録
Rs.AddNew
Rs!年月日 = Me.Txt実査実施日
Rs!担当者 = Me.Cmb実査担当者
'チェックボックス
Rs!北海道=Me.Chk北海道.Value
Rs!青森=Me.Chk青森.Value
' ⇃
' ⇃
' ⇃
Rs!沖縄=Me.Chk沖縄.Value
Rs.Update

a=Dmax("ID","MST実査実績一覧")
Me.Cmb実査ID.Value=a
b=Dlookup("年月日","MST実査実績一覧","ID=" & a)
Me.Txt実査実施日.Value=b
Msgbox("登録完了しました。"

'ADOを切断
Cn.Close
Set Cn=Nothing
End Sub

rinrin
作成: 2024/02/16 (金) 19:48:47
通報 ...
1

※前回hatenaさんに忠告いただいたソースコードの掲載の仕方 やり方がわからないです。。。。;;

前回の回答のリンク先にていねいに説明してありますので、もう一度よく読んで、質問文を編集してください。

あの説明で分からないとなると、このような掲示板でのやりとりで解決に至るのは困難だと思います。

あと、フォームの構成がどうなっているかの説明も追加してください。
下記の点についての情報を追記してください。

メインフォーム、サブフォームのレコードソースの設定
リンクフィールドの設定
テーブルのフィールド構成、フィールドのデータ型、主キー設定

2
rinrin 2024/02/17 (土) 11:03:29 b4dc9@c7f00

メインフォームに日付の開始日(テキストボックス 日付)と終了日(テキストボックス 日付)を設けています。その他”ID(コンボボックス Integer)”””社員名(コンボボックス String) 後は都道府県(チェックボックス YesNo型)で48都道府県が並んでいる状態です。それとコマンドボタンを4つ置いてます。(新規、編集、クリア、統計MAP)があります。そこにサブフォーム(一覧表のフォームです。。。)も表示させてあります。”
一つのMSTとなるフォームがあって、全てIDでリレーションシップでテーブルを最初に(クエリではない)つなげています。
主Keyは社員(勝手に番号[ID]を付けています。)です。サブフォームには社員名単位でチェックボックスが48個 都道府県ごとに並んでいます。
最終的には コマンドボタンの”統計MAP”ボタンで どの社員さんが、どこの都道府県を訪れているか 分布図が表示できるものを作りたいと思っています。
お力を貸し願えましょうか。何卒宜しくお願いします

'''Private Sub Cmd新規登録_Click()
MyForms=Forms!MAINMST実査実績!Chk実査flg

'ADO接続開始
Dim Cn ADODB.Connection
Dim Rs ADODB.Recordset

Set Cn = CurrentProject.Connection
Set Rs = New ADODB.Recordset

Rs.Open "MST実査実績一覧",Cn,adOpenkeyset,adLockOptimistic

Dim a,b,c,d,e,f,g As Variant
a=""
a=Nz(Dlookup("ID","MST実査実績一覧","実査住所='" &
Me.Txt実査住所.Value & "'),"" AND "& "担当者='"

& Me.Cmb実査担当者.Value & "'"),"")

a=MsgBox("登録しますか?",vbYesNo + vbDefaultButton1)
If a = vbYes Then

'登録
Rs.AddNew
'上記の個所で実行時エラー”テーブルが設定されたレコードが必要なので、レコードの追加や変更ができません。と表示されてしまいます。
Rs!年月日 = Me.Txt実査実施日
Rs!担当者 = Me.Cmb実査担当者
'チェックボックス
Rs!北海道=Me.Chk北海道.Value
Rs!青森=Me.Chk青森.Value
' ⇃
' ⇃
' ⇃
Rs!沖縄=Me.Chk沖縄.Value
Me.SugMST実査実績一覧.Form.Filter=""
Me.SubMST実査実績一覧.Form.FilterOn=False
Rs.Update

a=Dmax("ID","MST実査実績一覧")
Me.Cmb実査ID.Value=a
b=Dlookup("年月日","MST実査実績一覧","ID=" & a)
Me.Txt実査実施日.Value=b
Msgbox("登録完了しました。"

'ADOを切断
Cn.Close
Set Cn=Nothing
End Sub'''
お怒りなことは重々承知の上、再度投稿させていただきます。
何卒 何卒ご指導よろしくお願いいたします。。。見捨てないでください。。。;;

3
りんご 2024/02/17 (土) 12:12:05 935bc@0e907

Excelで頑張るのはどうでしょう?

>お怒り、見捨てないで、

例えば、刺身包丁を使って木材加工しようとしていたら、難しいよね、と思いませんか?

4
rinrin 2024/02/17 (土) 16:08:23 b4dc9@c7f00

Excelだと要領的に厳しい状態なんです。。。
ACCESSなら メインフォームの中にサブフォームを設定して
いろいろなプログラム構築した経験があるから いいかな?
とおもって。。。

ACCESSあきらめて、、EXCELでやるしかないのかな???

5
hatena 2024/02/17 (土) 17:26:30 修正

ちょっとその説明では状況を読み取れません。
ひとつずつ確認していきますので、回答してください。

まず、メインフォームのレコードソースの設定を教えてください。
空欄なら空欄と、テーブル名かクエリ名が設定されているなら、その名前を提示してください。
テーブルかクエリならそのフィールド名を提示してください。

サブフォームのレコードソースの設定を教えてください。
テーブル名またはクエリ名
そのフィールド名

サブフォームの「既定のビュー」の設定も教えてください。

とりあえず上記を回答ください。

6
rinrin 2024/02/17 (土) 20:04:18 b4dc9@c7f00

hatenaさん。。。連絡ありがとうございますーー

>>%%{fg:silver}%%{fg:silver}まず、メインフォームのレコードソースの設定を教えてください。
この質問の意味が分かりません。。。。。。。;;
ごめんなさい。。。。::特になにも設定してるわけではありません。;;

>>¥空欄なら空欄と、テーブル名かクエリ名が設定されているなら、その名前を提示してください。
??テーブルかクエリならそのフィールド名を提示してください。
メインフォーム ”MSTmain実査実績一覧” です。。。は完全なユーザーフォームで、、、それにテキストボックス、、、あるいはコンボボックス     それとチェックボックスが48個設定してあります。。。^^

>>サブフォームのレコードソースの設定を教えてください。
テーブルのMST実査実績一覧をサブフォームとして、、、データベースのような、、、一覧表を作ってあります。。。^^
サブフォームには項目”ID(主キー)”年月日””担当者”あとは都道府県のチェックボックスが48個 並んでいる状態です。
ホントはクエリを使って、→のようなデーターベースを構築したいのですが、、、、名前は ”SubMAIN実査実績一覧”
MST実査実績一覧を軸に、3つのテーブルを"ID"で、リレーションシップでつなげてます。。。^^
それだとうまく抽出ができないから、、、;;
あきらめて”MST実査実績一覧”だけ単体でテーブルのまま使ってます。。。^^

>>テーブル名またはクエリ名
テーブルは4つ
☆MST実査実績一覧
     ”ID”(主キー)、”年月日”(日付型)、”担当者”(文”字列型)、”都道府県”(整数型)、都道府県(チェックボックス型)が48個並んでいます。。。^^、それと役職(整数型)と交通手段(整数型)があります。。。。^^
☆MST都道府県
     ”ID”、”都道府県”
☆MST役職名
     ”ID”、”役職名”
☆駅から目的地までの交通手段
     ”ID””交通手段”
    IDは全て 整数型(INTEGER)です。基づくレコードは文字列型(STRING)

>>サブフォームの「既定のビュー」の設定も教えてください。%%
これもわかんないです。。。。。;;既定のビューなんて設定してないです。。。;;

とりあえず上記を回答ください。%%
何卒ご指導よろしくお願いいたします

7

レコードソースは、フォームのデザインビューでプロパティの「データ」タブの一番上にあります。
既定のビューは、フォームのデザインビューでプロパティの「書式」タブの2番目です。
これらの設定を教えてください。

メインフォーム ”MSTmain実査実績一覧” です。。。は完全なユーザーフォームで、、、それにテキストボックス、、、あるいはコンボボックス     それとチェックボックスが48個設定してあります。。。^^

Accessにユーザーフォームというものはありません。正確な用語を理解していないと、掲示板でのやりとりは難しいです。

メインフォームのレコードソースに”MSTmain実査実績一覧”というテーブル名か設定されているということですか。
それともメインフォームの名前が”MSTmain実査実績一覧”ということですか。

チェックボックスのコントロールソースの設定はどうなってますか。
*コントロールソース**はデザインビューでチェックボックスを選択して、プロパティの「データ」タブの一番上にあります。
チェックボックスの名前も教えてください。

サブフォームには項目”ID(主キー)”年月日””担当者”あとは都道府県のチェックボックスが48個 並んでいる状態です。

このチェックボックスのコントロールソースと名前も教えてください。

あと、メインフォームのデザインビューのスクリーンショットをアップロードしてください。
投稿欄の下の「画像アップロード」ボタンをクリックするとアップロードできます。
下記の画像の赤丸で囲んだボタンです。
画像1

8
rinrin 2024/02/18 (日) 08:29:58 b4dc9@c7f00

hatenaさん   れんらくありがとうございます
ただ このACCESSプログラム自体が会社にあるもので。。。;;あたしの記憶で話してます

>>レコードソースは、フォームのデザインビューでプロパティの「データ」タブの一番上にあります。
>>既定のビューは、フォームのデザインビューでプロパティの「書式」タブの2番目です。
>>これらの設定を教えてください。
それらに何かを設定した記憶はありません。空白です。。。

>>メインフォーム ”MSTmain実査実績一覧” です。。。は完全なユーザーフォームで、、、それにテキストボック>>>>ス、、、あるいはコンボボックス     それとチェックボックスが48個設定してあります。。。^^

>>Accessにユーザーフォームというものはありません。正確な用語を理解していないと、掲示板でのやりとりは難しいで>>す。
ごめんなさい。。。;;

>>メインフォームのレコードソースに”MSTmain実査実績一覧”というテーブル名か設定されているということですか。
>>それともメインフォームの名前が”MSTmain実査実績一覧”ということですか。
メインフォームの名前が MSTmain実査実績一覧 です。。。

>>チェックボックスのコントロールソースの設定はどうなってますか。
>>*コントロールソース**はデザインビューでチェックボックスを選択して、プロパティの「データ」タブの一番上にあり>>ます。
>>チェックボックスの名前も教えてください。
チェックボックスのコントロールソースの設定も 特に何もしてません 空白です。。。
チェックボックスの名前は  メインフォームが Chk北海道  
                       Chk秋田
                         ⇃
                       Chk沖縄    です。。。
              サブフォームが 北海道
                      秋田
                        ⇃         
                      沖縄       です。。。

>>サブフォームには項目”ID(主キー)”年月日””担当者”あとは都道府県のチェックボックスが48個 並んでいる状態で>>す。

>>このチェックボックスのコントロールソースと名前も教えてください。
ここも特に何も設定はしてません

>>あと、メインフォームのデザインビューのスクリーンショットをアップロードしてください。
>>投稿欄の下の「画像アップロード」ボタンをクリックするとアップロードできます。
>>下記の画像の赤丸で囲んだボタンです。
ごめんなさい。。。。。;;プログラム自体が会社です。。。;;
見ていただきたいのですが。。。。あたしの手元に プリントアウトした画像が一枚あるだけです。。。;;

宜しくお願い致します

9
hatena 2024/02/18 (日) 11:36:43 修正

うーん、「ACCESSプログラム自体が会社にあるもの」ということですか。
会社から「ACCESSプログラム」を見ながら、この掲示板でやりとりはできますか。
あるいは「ACCESSプログラム」を自宅に持ち帰って、自宅から掲示板でやりとりできますか。

正確な情報がつかめないと先に進むのは難しそうです。

とりあえず、提示されている情報から、不足している部分、不正確な部分は推測で補った現状の設定と思われるものを提示しておきますので、出社してから、提示の情報に間違いがないか確認してください。


メインフォーム
フォーム名 MSTmain実査実績一覧
レコードソース (空欄)

メインフォーム上のチェックボックス
コントロールソース (空欄)
名前 Chk北海道、Chk秋田、・・・Chk沖縄 (48個)

メインフォーム上のサブフォームコントロール
名前 SubMST実査実績一覧


サブフォーム
レコードソース MST実査実績一覧
既定のビュー 帳票フォーム または

サブフォーム上のチェックボックス
コントロールソース (空欄)
名前 北海道、秋田、・・・沖縄 (48個)


テーブル MST実査実績一覧
フィールド名 データ型
ID 数値型 主キー
年月日 日付時刻型
担当者 テキスト型(短いテキスト)
都道府県 整数型
北海道 Yes/No型
秋田 Yes/No型



沖縄 Yes/No型
 都道府県名のYes/No型フィールドが48個


異なる部分があったら、上記のようなフォーマットで修正したものを提示してください。

10
rinrin 2024/02/18 (日) 15:03:26 b4dc9@c7f00

hatenaさん。。。。。。いつもいつも すぐな対応ほんとにありがとうございます。。。^^

>>うーん、「ACCESSプログラム自体が会社にあるもの」ということですか。>>
>>会社から「ACCESSプログラム」を見ながら、この掲示板でやりとりはできますか。
>>あるいは「ACCESSプログラム」を自宅に持ち帰って、自宅から掲示板でやりとりできますか。

会社のACCESSプログラムは 外部に持ち出すことは ぜーったいダメです。。。。;;
システムの会社じゃないので、パソコンもできる人はあまりいない現状です。。。;;
それだけに たとえプログラムのソースコードだからって言っても 持ち出すことはダメ!の一点張りなんです。。。;;
ごめんなさい。。。。。;;

>>正確な情報がつかめないと先に進むのは難しそうです。
ですよね。。。。。。。。;;

とりあえず、提示されている情報から、不足している部分、不正確な部分は推測で補った現状の設定と思われるものを提示しておきますので、出社してから、提示の情報に間違いがないか確認してください。
明日 出勤したらすべての確認を行います。。。^^

なにがいけないのかな?????
ありがとうございます^^

11
rinrin 2024/02/19 (月) 19:36:29 b4dc9@c7f00

hatenaさん。。。。。。。。ごめんなさい。。。。。;;
サブフォームのソースコード空欄じゃなかったです。。。。。。。。。。;;
設定したつもりないのに それぞれに値がはいってました。。。
すべて空欄にして挑戦してます。。。^^

むずかしいよぉぉぉ。。。。。。;;

12

サブフォームのソースコード空欄じゃなかったです。。。。。。。。。。;;

サブフォームのソースコードとはなんでしょうか。

サブフォームのレコードソースのこと?
それともサブフォームのチェックボックスのコントロールソースのこと?
????

もし、コントロールソースのことなら、空欄にしないでください。
現状のままにしておいてください。

正確な用語を使ってください。不正確な用語を使っていては状況が伝わりません。
用語の意味を理解するようにしてください。
分からない用語があったら検索して調べてください。
分からない場合は、質問してもらっていいです。
勝手に解釈しないでください。

まだ、解決策を提示していません。というかできません。
まずは、そちらの状況を正確に確認する作業が必要です。

13

私が提示した書式で、
すべて実際のフォームのデザインビューで設定値を確認したものを提示したください。

下記の書式でお願いします。


メインフォームのデザインビューで確認
フォーム名 実際の設定値
レコードソース 実際の設定値

メインフォーム上の1番目のチェックボックス
コントロールソース 実際の設定値
名前 実際の設定値

メインフォーム上の2番目のチェックボックス
コントロールソース 実際の設定値
名前 実際の設定値

メインフォーム上の最後のチェックボックス
コントロールソース 実際の設定値
名前 実際の設定値

メインフォーム上のサブフォームコントロール
名前 実際の設定値


サブフォームのデザインビューで確認
レコードソース 実際の設定値
既定のビュー 実際の設定値

サブフォーム上の1番目のチェックボックス
コントロールソース 実際の設定値
名前 実際の設定値

サブフォーム上の2番目のチェックボックス
コントロールソース 実際の設定値
名前 実際の設定値

サブフォーム上の最後のチェックボックス
コントロールソース 実際の設定値
名前 実際の設定値


テーブル MST実査実績一覧
フィールド名とデータ型を列挙してください。

下記のような書式でお願いします。

ID 数値型 主キー
年月日 日付時刻型
担当者 テキスト型(短いテキスト)
都道府県 整数型
北海道 Yes/No型
秋田 Yes/No型



沖縄 Yes/No型

14
rinrin 2024/02/20 (火) 21:19:49 b4dc9@c7f00

hatenaさん。。。。。。。。;;ありがとうございます。。。^^
明日またがんばります。。。。^^
ホントにありがとうございます

15
rinrin 2024/02/24 (土) 12:54:14 b4dc9@c7f00

いろいろバタバタしちゃって。。。遅くなっちゃいました。。。;;
ごめんなさい

あたしいろいろ考えてたんですけど
Me.SugMST実査実績一覧.Form.Filter=""
Me.SubMST実査実績一覧.Form.FilterOn=False
があるとこが、、、おかしいのかな???って思いました。。。;;

メインフォームとサブフォーム それぞれに設定するのかな???

16
rinrin 2024/02/24 (土) 12:55:36 b4dc9@c7f00

メインフォームのチェックボックスのレコードが
サブフォームに、、、レコード移行できないのって。。。

17
rinrin 2024/02/24 (土) 13:32:29 b4dc9@c7f00

もちろんhatenaさんの指示通りにせっていました。。。

18
rinrin 2024/02/25 (日) 07:56:47 b4dc9@c7f00

これのことです。。。。。。。。。;;

ID 数値型 主キー
年月日 日付時刻型
担当者 テキスト型(短いテキスト)
都道府県 整数型
北海道 Yes/No型
秋田 Yes/No型



沖縄 Yes/No型

19
hatena 2024/02/25 (日) 11:37:17 修正

私の質問に明確に回答していただけないようなので、
こちらで勝手に推測して回答します。

メインフォームは非連結(「レコードソース」プロパティが空欄)
メインフォーム上のチェックボックスの名前
Chk北海道、Chk秋田、・・・Chk沖縄 (48個)

サブフォームコントロールの名前
SubMST実査実績一覧

サブフォームのレコードソースの設定値 MST実査実績一覧
サブフォーム上のチェックボックス
名前とコントロールソースの設定値は同じでそれぞれ下記のように設定されている。
北海道、秋田、・・・沖縄 (48個)

やりたいことは、
メインフォーム上のコマンドボタン「新規登録」のクリックで、
メインフォームの各チェックボックスの値を、
サブフォームの新規レコードのYes/No型のフィールドに転記する。

以上の推測での回答です。

Private Sub 新規登録_Click()
    With Me.SubMST実査実績一覧.Form.Recordset
        .AddNew
        !年月日 = Me.Txt実査実施日
        !担当者 = Me.Cmb実査担当者
        !北海道.Value = Me.Chk北海道
        !北海道.Value = Me.Chk秋田
        '中略
        !北海道.Value = Me.Chk沖縄
        .Update
        Me.Cmb実査ID.Value = !ID
    End With
    Msgbox("登録完了しました。")
End Sub

解説
サブフォームのレコードセットは、フォームが開いたときにすでに生成されているので
ADOでRs.Openする必要はない。
Me.埋め込み1.Form.Recordset でレコードセットを取得できるのでそれに対して転記処理を実施すればよい。

以上です。
これでこの件に関しては私からのアドバイスは終わりとさせていだきます。

20
rinrin 2024/02/26 (月) 19:28:57 b4dc9@c7f00

hatenaさん。。。。。。。。。^^
会社でメインフォームのチェックボックスから
サブフォームのチェックボックスへのデータのやりとり   うまくいきました。。。。^^

ホントにホントにありがとうございます^^