Microsoft Access 掲示板

メインフォームから サブフォームの値を選んで メインフォームで修正するやり方

16 コメント
views
4 フォロー

メインフォームに"txt住所"という名前のテキストボックスと”cmd新規登録”という名前のコマンドボタンと、チェックボックス48個都道府県があります。これと”Chk実査flg”という名前のチェックボックスがあります。サブフォームには一覧表のサブフォームを設定してあります。

1回目のcmd新規登録をクリックし、サブフォームへの入力が許可されます。と同時にChk実査flgにチェックが入ります。。。^^このタイミングでメインフォームに 新規入力したいレコード(※都道府県)を選びます。。。^^

2回目のchk新規入力ボタンをクリックすると、、、選んだ都道府県が テキストボックスに表示されます。

ここで選ばれた都道府県に正式な住所を追加修正して、3回目のcmd新規入力コマンドボタンをクリックして確定して、サブフォームにレコードが収まるというプログラムを作りたいと思っています。。。。。。。^^

でも
実行時エラーが表示され、、、オブジェクトが必要ですと、実行時エラーが表示されちゃいます。。。。。。。。;;

ご指導 および アドバイスをいただきたいと思います。。。^^
よろしくお願いします

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

If Me.Chk実査flg = True Then
GoTo LastLine
End If
Else
End If
'////////////////////////////////////////////////////////
LastLine:
'ADO接続開始
Dim Cn ADODB.Connection
Dim Rs ADODB.Recordset

Rs.Open"MST実査実績一覧",Cn, adOpenKeyset, adLockOptimistic
'登録
Rs.AddNew
If Me.Chk北海道.Value=True Then
Me.Txt住所.Value = "北海道札幌市"
Rs!実査住所 = Me.Chk北海道札幌市.Value
Rs!実査住所 = Me.Txt実査住所.Value
Exit Sub
End If

  ⇃

'都市が50個くらい並んでます。。。。。。。。。。個々の部分も シンプルな書き方あれば 教えてください。。。^^

Me.Chk実査Flg = False
Me.txt住所 .Value <> "" Then
Rs!住所 = Me.txt住所
End If
Update

Me.SubMST実査実績一覧.Form.Filter = ""
Me.SubMST実査実績一覧.Form.FilterOn = False
End Sub

ご指導 よろしくお願いします。。。。。。^^

rinrin
作成: 2024/03/01 (金) 19:54:05
通報 ...
1
rinrin 2024/03/02 (土) 14:41:55 b4dc9@c7f00

なんで誰も教えてくれないの。。。。。。。。。。。;;

3
rinrin 2024/03/02 (土) 20:22:12 b4dc9@c7f00

回答ありがとうございます

でも あたしが頑張ってもうそれなりに作りこんであります。。。。他の人に作らせているみたいで。。。;;
だから上記のプログラムをどう修正したらいいのか???
正しいソースコードの書き方 
教えていただけませんでしょうか
よろしくお願い致します

4
りんご 2024/03/02 (土) 21:05:06 07313@0e907

 都道府県を入力するだけなのに、かっこつけてもしょうがないです。
 例えば、人参を切って、インスタ!大根を切って、インスタ!インスタしないと料理が出来ない、残念みたいな感じになると悲しみ。
 Accessは伝統芸能なので、先人の作品をの忠実に守るとお得。貴方の頑張りは一旦保留して、Accessを卒業してから役立てると丸。
 これって私の意見に過ぎないので、コードのアドバイスは気長に待てば3名ぐらいから回答が来るはず。

5
rinrin 2024/03/02 (土) 21:24:11 b4dc9@c7f00

わかりました。。。。。。ありがとうございます
これはこれで取り組みますね

6
rinrin 2024/03/02 (土) 21:29:24 b4dc9@c7f00

でも。。。。。。あたしの質問は
コンボボックスで選択した都道府県に。。。市を選択して
そこから手入力で 住所の細部を記入して、、、再度 テキストボックス(※DB)に戻したいってことなんですけど。。。
ちょっと回答が   ずれちゃってるような気がするんですけど。。。。。。。。^^ごめんなさい。。。;;

7
rinrin 2024/03/03 (日) 08:43:00 b4dc9@c7f00

ソースコードのアドバイスが何も来ないの。。。。。;;

8
名前なし 2024/03/03 (日) 16:48:58 eec97@9f7fc

削除テキスト市区町村まではテキストボックスに入るんです。。。
それ以下入力するとエラーが出ちゃうんです。。。
何がいけないんですか?どこを修正 どうすればいいんですか?

9

メインフォームに"txt住所"という名前のテキストボックスと”cmd新規登録”という名前のコマンドボタンと、チェックボックス48個都道府県があります。これと”Chk実査flg”という名前のチェックボックスがあります。

1回目のcmd新規登録をクリックし、サブフォームへの入力が許可されます。

2回目のchk新規入力ボタンをクリックすると
選んだ都道府県が テキストボックスに表示

3回目のcmd新規入力コマンドボタンをクリックして確定して、
サブフォームにレコードが収まる

これらの機能を1つのコマンドボタンに集約しているのであれば、ソースコード云々以前にフォームの設計自体に問題があると申し上げざるを得ません。

実行時エラーが表示され、、、オブジェクトが必要ですと、実行時エラーが表示されちゃいます

どのステートメントを実行しようとした時にその実行時エラーが発生したのかを具体的に明記して下さい。

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

もし上記のステートメントを本当にこの通りに記述されているのであれば、変数名と型の間に As キーワードが記述されていないため、実行時エラーどころかコンパイルエラーが発生するはず。

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

また、Cn にも Rs にも何のオブジェクトも渡されていない状態なのであれば、このステートメントでも実行時エラーが発生します。

Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset

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

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

If Me.Chk北海道.Value=True Then
Me.Txt住所.Value = "北海道札幌市"
Rs!実査住所 = Me.Chk北海道札幌市.Value
Rs!実査住所 = Me.Txt実査住所.Value
Exit Sub
End If

そこは Exit Sub ステートメントを呼び出すべきタイミングではないでしょう。

Update

Rs.Update

現状(あからさまに判る範囲で)修正すべき箇所として挙げられるのは以上のみ。
他のステートメントについては、現時点では評価のしようがありません。

  • メインフォームは連結フォームであるか、それとも非連結フォームであるか。

  • メインフォームが連結フォームである場合、メインフォームのレコードソースはどのテーブルであるか。

  • (サブフォームのレコードソースであると思われる)テーブル[MST実査実績一覧]の定義内容(各フィールドの名前/データ型およびキー定義)

とりあえず、以上の点について明示されることをお奨めします。

参照先のテーブルについての情報も判らない状況では、rinrin さんが求められている「正しいソースコード」を提示することなど誰にもできないでしょう。

10
rinrin 2024/03/04 (月) 20:35:11 b4dc9@c7f00

hatenaさん。。。。。。。いつもいつもほんとにありがとうございます。。。。。
ご指導何卒宜しくお願い致します。。。^^

メインフォーム サブフォームどっちも非連結です。。。※そこは何も変換してません。。。
前述したように、、、48の都道府県を選び、、、そこに更に該当する市区町村を選択し、、、最後に住所の詳細を記入するユーザーフォームを作りたいと思っています。。。^^
結構件数があり、、、人でも限られているので、、、少しでも効率的なプログラムを作りたいと思っております。。。^^

テーブルは4つあり、、、リレーションシップで最初につなげてあります。。。^^(※クエリじゃないです。。;;)
メインとなる軸のテーブル名は”MST実査実績一覧”で、、、
ID :オートナンバー型
年月日 :日付/時刻型
担当者 :短いテキスト
都道府県 :数値型
北海道 :Yes/No型

沖縄 :Yes/No型
実査住所 :短いテキスト
(※最後にここに正式な住所を作成し、、、サブフォーム(テーブル)に格納したいと思っております。。。^^)
最寄駅 :短いテキスト
駅から目的地までの公共手段
:数値型
役職名 :数値型
実査flg :Yes/No型

二つ目のテーブル名が”MST都道府県”です。。。。。
id :オートナンバー型
都道府県名 :短いテキスト

三つ目のテーブル名が"MST役職名"
ID :オートナンバー型
役職名 :短いテキスト

最後が "MST駅から目的地までの手段"です。。。。。。
ID :オートナンバー型
駅から目的地までの手段
:短いテキスト
4っつのテーブルをリレーションシップした状態で、、、サブフォームに、、、一覧表として設定してます。。。

hatenaさんのおかげで、、、ドンガメ状態でも なんとかメインフォームから市区町村まで、、、チェックを入れることはできたんですけど、、、、
最後にそれを選択し、、、詳細を記入する段階で、、、エラーが出ちゃいます。。。
☆確か二度目のチェックボックスの値が サブフォームに収まった状態で、、、テキストボックスに詳細を記入して登録しようとすると、、、
オブジェクトが必要ですとか、、、実行時エラーが表示されちゃいます。。。。。。。;;ソースコード持ち出せない。。。;;わかんないです。。::

開示できる情報の全てです。。。^^
何卒宜しくお願い致します

11

直前の投稿に対する返信だと思いますが、その投稿者は私(hatena)ではありません。
skさんの投稿です。

12
rinrin 2024/03/05 (火) 20:30:06 b4dc9@c7f00

メインフォームには
コンボボックスが四つ
☆ID
☆担当者
☆都道府県
☆最寄駅
テキストボックスが三つ
☆開始日
☆終了日
☆備考
それと市区町村が50個くらい並んでます。。。。。。。。;;

それとサブフォームがあります。。。。。。。^^

13
驚天動地!前任者失踪丸 2024/03/06 (水) 13:36:35 23e8e@44ebd

回答でも何でもないただの感想なのですが、都道府県と市町村がずらっと並んでて、その数だけチェックボックスがある入力フォーム・・・目が疲れそうです^^;

14
rinrin 2024/03/06 (水) 20:46:42 b4dc9@c7f00

例なんですけど。。。。。。。;;

15
名前なし 2024/03/06 (水) 20:54:28 eec97@76fcd

ダメですか???。。。(泣)

16

まず、回答者の名前を間違えるという失礼な行為を指摘されたのに、それに対してなんの反応もないのはどうかと思います。

そのうえ、
skさんの下記の質問に対してなんの回答もないですね。

どのステートメントを実行しようとした時にその実行時エラーが発生したのかを具体的に明記して下さい。

私も前のスレッドで何度も状況を把握しようと質問をしましたが、正確な情報を得られませんでした。

そのような状況では適切な解答をすることは不可能と判断して回答するのを諦めました。

質問者と回答者のやりとりがうまく行かない原因は、
質問者(rinrinさん)がAccessの基本知識の不足にあると思います。

あと、正確な情報を整理して提示するという努力(能力?)も不足しているようです。

どちらにしても、現状のコードの一部を修正してどうにかなるレベルの問題ではないでしょう。コードを一から書きなおす必要があります。テーブル設計、フォーム設計も見直す必要があるでしょう。

おそらく現在の質問者のスキルでどうにかできるレベルの問題ではないです。

もし、どうしてもこれを作り上げる必要があるのなら、
まずは初心者用のAccess解説書を購入して基本から勉強されることをお勧めします。