
[Access2013 vba]
■したいこと
サブフォームのレコードの中から、一レコードだけをチェックボックスなどで選択したいのですが、どのようにしたら出来ますでしょうか。
複数行選択は出来ないようにしたいです。
選択したのち、メインフォームの選択ボタンを押すと、そのレコードのID番号を取得して、呼出元のフォームのIDフィールドに代入したいです。
■画面の流れ・・・
Aフォーム → 帳票型Bフォームで、レコードを選び「開く」ボタンを押す→
B 'メインフォームとCサブフォーム)が開く
Cサブフォームのレコードをチェックボックスにチェックを入れて選択する
B ' メインフォームの「選択」ボタンを押すと B ' メインフォームと、その前のBフォームが閉じて
Aフォームに戻り、AフォームのIDフィールドに選択したIDが格納される。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
揚げ足とりの意図では無い旨、あらかじめお断りしたうえで。
> うまく行きません。
「どう」うまく行きませんか?
「コピペしたので補足の記述が一字ー句違わない」なら、
[MyID]と[optSelect]の間はカンマではなく ! であるべき。
NzでNull対策すれば、iifの条件式そのものが結果として欲しい値。
iifもthenの値、elseの値、それらを区切るカンマもカッコも不要です。
画面の流れではフォームが3つになりましたが、必要?
以下、AフォームのIDフィールドと内容が見える状態で進めて下さい。
> Aフォーム → 帳票型Bフォームで、レコードを選び「開く」ボタンを押す→
Bが子フォームですので、「レコードを選び」の段階で
親フォームであるAフォームのIDフィールドへ値が入りますか?
3つのフォームなら、親・子・孫です。代入のイベントをどこに書いてますか?
孫フォームでクリックしたoptSelectのIDが親フォームに届いてますか?
まずはこれを確認してみて下さい。
#タブレットの手書き入力なのでしんどい。
#夕食の支度したら戻って来ます。
この回答への補足
Aフォーム→ Bフォーム → BフォームとサブフォームC
1) Aフォームで同じレコードにあるcmdBtnを押すと、acDialogモードでBを開きます。
※ここで、(1)のイベントPGは、中断
2) Bの帳票画面で、どのレコードに移動するか決めます。
→各レコードにある「選択」ボタンを押す
→そのレコードのBのIDをグローバル変数にセット
→イベントが走り、次のB+Cサブの一体型画面が開く
3)B+Cサブの BのForm_Load処理で
→グローバル変数のBのIDを取得し
→Me.RecordsetCloneで、該当のレコードをFindFirstして、NoMatch=Falseだったら、そのレコードに移動する
4) B+CのフォームのCのサブフォームの帳票で、ラジオボタンを押すと
そのレコードのC帳票のIDをBのメインフォームのテキストボックスに格納
5) Bの選択ボタンを押すと、Bのテキストボックスに保存されたCのIDを取得して
グローバル変数にセット
6) (2)の画面を閉じ、次に、(4)のB+Cのフォームを閉じる
7) (1)のcmdBtnイベント処理の中断したところから再開し
AのフォームのIDフィールドに、グローバル変数のCのIDをセットして終わり
です。
でも、これですね、何も選択しなかった場合の事をまだ考えてません。
でもでも、やはりラジオボタンがうまく動きません。。。
No.3
- 回答日時:
すみません。
!の件は間違い。一覧表サブフォームのoptSelectの値は
[=Nz([親フォーム]![ID])=Nz([ID]) ] ←右辺はレコードセットのID
この回答への補足
ご回答ありがとうございます。
>一覧表サブフォームのoptSelectの値は
>[=Nz([親フォーム]![ID])=Nz([ID]) ] ←右辺はレコードセットのID
これは、コントロールソースに書き込むのですか?
・レコードセットのIDとは、私はこのBメインとCサブのフォームのCの選択したレコードのIDの事だと理解しましたが。
・親フォームのTextBoxIDにセットしたいのです。
なんとかうまくしたいのですが、また、ラジオボタンの値がクリックしてもなにも代わりません。
どうかお知恵をよろしくお願いします。
ご回答ありがとうございました。
そちらの回答を待っていましたが、色々と試してみてうまくいきました。
こちらのリンクにある「非連結のチェックボックスでレコードを選択する」というやり方を参考にして、ラジオボタンの処理が完成しました。↓
http://hatenachips.blog34.fc2.com/blog-entry-28. …
No.1
- 回答日時:
チェックボックスは複数選択のためのもの。
単一選択なら、オプション(ラジオとも)ボタンを利用します。
でも結構面倒です。
メイン(以下「親」)フォームとサブ(以下「子」)フォーム間で
テキストボックス参照と更新が必要。
子フォームでクリック行のID列値を親フォームのIDテキストボックスへ更新。
(方法は参考URLを参照して下さい)
子フォーム側は、レコードに定義されていないオプション列を設け、
値は自レコードのID列値と親フォームのIDテキストボックス値との比較結果とします。
比較により不一致ならFalseで「未選択」、一致ならTrueで「選択」になります。
参考URL:http://www.happy2-island.com/access/gogo03/capte …
この回答への補足
ご回答ありがとうございます。
チェックしたラジオボタンだけONにするというのは、恐らく、そのレコードソースに式を入れるのかと思い、以下のような式を入れてみましたが、うまく行きません。
「=IIf([Forms]![親フォーム]![txbSelectedID]=[MyID],[optSelect]=-1,[optSelect]=0)」
MyIDとは、子フォーム側のチェックを入れたところの主キーのIDです。
どのようにすれば良いでしょうか?
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access サブフォームでの選択行...
-
ACCESSのTabStopについて
-
Access 複数フォームを...
-
Accessのサブフォームから値を...
-
ACCESSでのデータ削除について
-
(ACCESS)条件に応じて、テキ...
-
googleフォームでインストール...
-
アクセス2000の終了時にバック...
-
サブフォームの切り替え方を教...
-
AccessのFormのみをスクリーン...
-
サブフォームでのダブルクリッ...
-
ACCESSでサブフォームの...
-
Access2000、これはいったい・...
-
レコードセットで得た結果をサ...
-
Accessのサブフォーム内で連続...
-
エクセルで、抽出したデータだ...
-
ExcelのComboboxでマウスのスク...
-
Accessでデータを更新したらそ...
-
前のレコードの値を自動で入れたい
-
Access チェックボックスを利用...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access サブフォームでの選択行...
-
Access2000、これはいったい・...
-
access サブフォームにリストを...
-
Access 複数フォームを...
-
(ACCESS)条件に応じて、テキ...
-
初心者です。accessで請求書を...
-
サブフォームでのダブルクリッ...
-
ACCSESS2013VBA フォームのレコ...
-
サブフォームが見えなくなる。
-
Access2000 サブフォームのReco...
-
Accessで、一覧からクリックし...
-
Accessのサブフォームから値を...
-
サブフォームのデータを保存す...
-
AccessのFormのみをスクリーン...
-
レコードセットで得た結果をサ...
-
2回目に画面のレコードセットの...
-
アクセスで サブフォームの表...
-
複数項目でのサブフォームとの...
-
Access レイアウト変更したサブ...
-
Accessで、サブフォームのある...
おすすめ情報