痔になりやすい生活習慣とは?

こんにちは。

Access初心者です。

サブフォームでテーブルの項目を表示させていますが、
選択された行を取得する方法はありますか?
サボフォームの下の方に現在選択されているレコード数が表示されてますが、その値でかまいません。

調べているのですが、なかなか検討がつきません。
宜しくお願い致します。

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

A 回答 (4件)

フォーム名がフォーム1、サブフォームコントロールの名前がサブフォーム1だとすると、



Forms!フォーム1!サブフォーム1.Form.CurrentRecord

で取得できます。
(「Forms」と「Form」がありますのでご注意下さい)


また、フォーム1にコードを記述する場合であれば

Me!サブフォーム1.Form.CurrentRecord

サブフォーム1へのコード記述であれば

Me.CurrentRecord

という構文によっても、それぞれ取得が可能です。
    • good
    • 2
この回答へのお礼

お礼が遅くなりました。
同じようにやらせて頂き、無事できました!
どうもありがとうございます。

お礼日時:2006/11/28 10:06

No3 さんの回答と同じですが・・・。



フォーム[売上伝票]に[売上伝票 サブフォーム]が配置されているとします。
次は、メインからサブフォームのカレントレコード等を取得するサンプルです。

Private Sub コマンド142_Click()
  MsgBox FormRecord(Me.売上伝票_サブフォーム.Form)  ' カレントレコードを表示
  MsgBox FormRecord(Me.売上伝票_サブフォーム.Form, 1) ' レコードカウントを表示
End Sub

Public Function FormRecord(ByVal frm As Form, _
             Optional R As Integer = 0) As Integer
On Error Resume Next
  If R = 0 Then
    FormRecord = frm.CurrentRecord
  Else
    FormRecord = frm.Recordset.RecordCount
  End If
End Function

もちろん、

MsgBox FormRecord(Forms("売上伝票").売上伝票_サブフォーム.Form)

という書き方でもOKです。
    • good
    • 1
この回答へのお礼

お礼が遅くなりましてすみません。
大変詳しく丁寧にご回答頂きありがとうございます。
勉強になりました!

お礼日時:2006/11/28 10:08

データベースではレコードナンバーにはあまり意味がありません


レコードを特定するには主キーを使いましょう

取得というのがどこへ取得したいのか書かれていませんが
普通に主キーをフィールド名で参照すれば、
カレント(選択されている)レコードの主キーが得られます
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。
説明不足で意味が分かりずらかったと思います。
ご回答ありがとうございました。

お礼日時:2006/11/28 10:05

Me.[テキストボックス名].Value


とかで今何が選択されているかわかるので
テキストボックスのクリックイベントに
書き込んではどうでしょうか?
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。
参考にさせて頂き無事出来ました。
ご回答ありがとうございました。

お礼日時:2006/11/28 10:03

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

意味 データベース」に関するQ&A: Oracleとは?

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

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

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

Qサブフォームに対してGoToRecordするには?

フォームに対してRequeryすると先頭のレコードへ移動してしまうので
Requeryする前のレコードの番号を取得して
Requery後にそのレコード番号へ移動したいのですが

Sub test()
i = Forms("Form").Controls("SubForm").Form.CurrentRecord
Forms("Form").Controls("SubForm").Requery
DoCmd.GoToRecord acActiveDataObject, Forms("Form").Controls("SubForm"), acGoTo, i
End Sub

これをすると、実行時エラー2498
指定した式は、いずれかの引数とデータ型が対応していません。
になりますが、
どこがおかしいのでしょうか?

Aベストアンサー

【要旨】
サブフォームのレコード移動では、対象サブフォームは引数で指定するのではなく、
SetFocusメソッドで移動後、引数を省略したGotoRecordを使用します:
  Forms("Form").Controls("SubForm").SetFocus
  DoCmd.GotoRecord , , acGoto, i

但し、「Requery前後でのレコード移動の回避」が目的の場合は、Requeryの
対象を「親フォームまたはサブフォームのFormオブジェクト」ではなく「サブフォーム
コントロール」とすればOkです。
 <現状・例1>
  Forms("Form").SetFocus
  DoCmd.Requery
 <現状・例2>
  Forms("Form").Requery
 <現状・例3>
  Forms("Form").Controls("SubForm").Form.Requery
 <代替策>
  Forms("Form").Controls("SubForm").Requery
  ※「現状・例3」との違い(→途中の「.Form」の有無)に注意。


【詳細】
> 実行時エラー2498

このエラーの直接の原因は、GotoRecordメソッドの第2引数に指定している
「Forms("Form").Controls("Subform")」の部分です。

ここに指定するのはオブジェクト名になりますが、そのデータ型は文字列型です。
一方、「~.Controls(~)」の形で指定した場合、取得できるのは
 a)オブジェクトそのもの
 b)そのオブジェクトのデフォルトプロパティ
のどちらかです(→状況によって変化します)。
(例えばテキストボックスなら、TextBoxオブジェクトまたはValueプロパティの値)

サブフォームのデフォルトプロパティは調べていませんが(汗)、少なくとも文字列
型のプロパティではないため、「型が一致しない」とのエラーとなります。
サブフォームのコントロール名を取得する場合は、
  Forms("Form").Controls("SubForm").Name
というように、Nameプロパティを明示的に指定する必要があります。

ただ、「サブフォームのレコード移動」の場合、明示的に「Name」プロパティを
指定しても解決には至りません(汗)
これは、GotoRecordメソッドの第2引数には、直接開いているオブジェクトの
名前のみが有効なためで、サブフォームを直接的に指定することはできない、
ということです。
(注:Microsoftの資料を探したわけではなく、経験則から記述していますので、
 私の勘違いでしたらご容赦願います(汗))

サブフォームのレコード移動には、冒頭に記述したとおり、「フォーカスの移動」と
「一部の引数を省略したGotoRecord」を使用します:
  Forms("Form").Controls("SubForm").SetFocus
  DoCmd.GotoRecord , , acGoto, i

なお、これも冒頭に書きましたが、サブフォームのRequeryの仕方には幾つか
方法がありますが、Requeryの対象を「コントロールとしてのサブフォーム」にすれば、
レコード移動が発生しませんので、GotoRecord自体が不要になります。
http://www.f3.dion.ne.jp/~element/msaccess/AcTipsFrmHowToRequeryAndReturn.html

【要旨】
サブフォームのレコード移動では、対象サブフォームは引数で指定するのではなく、
SetFocusメソッドで移動後、引数を省略したGotoRecordを使用します:
  Forms("Form").Controls("SubForm").SetFocus
  DoCmd.GotoRecord , , acGoto, i

但し、「Requery前後でのレコード移動の回避」が目的の場合は、Requeryの
対象を「親フォームまたはサブフォームのFormオブジェクト」ではなく「サブフォーム
コントロール」とすればOkです。
 <現状・例1>
  Forms("Form").SetFocus
  DoCmd.Requery
 <現...続きを読む

QAccessのフォーム上にレコード数とレコード番号の表示

Accessでクエリを元に表示するフォーム上で、テキストボックス等に関数を使って、レコード数とレコード番号を表示する方法がありましたら教えてください。

フォームの書式設定で「移動ボタン」の表示をすれば目的の事は出来るのですが、表示の大きさが調整できない為、とても見難いのです。

以上よろしくお願いします。

Aベストアンサー

レコード番号のコントロールソースを
=[CurrentRecord]
レコード数のコントロールソースを
=Count("*")-[NewRecord]
としてみてください。

Q【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには

バージョン:Access2002

フォーム「frm01」にテキストボックス「tb01」が作ってある場合、
Forms.frm01.tb01.Value="あいう"
とすれば、フォームもコントロールも指定できるのですが、
Dim strTxt As String
strTxt = "tb01"
Forms.frm01.strTxt.Value="あいう"
だと、文字列型変数"strTxt"が展開されないのでフォーム「frm01」のコントロール「strTxt」を探してしまいエラーになってしまいます。

文字列型変数でフォームやコントロールを指定するには、どのようにすればよいのでしょうか?

Aベストアンサー

フォームの場合
 Forms(strFrm)

フォームのコントロールの場合
 Forms(strFrm).Controls(strTxt)


これでも参照できますが、普通ここまで省略しませんね。
 Forms(strFrm)(strTxt)

あとで見たとき、訳がわからなくなりそう。

QACCESS フォームからサブフォームのデータを更新・入力したい

ACCESS フォームからサブフォームのデータを更新・入力したい

tbl_プロジェクトというテーブルにIDとプロジェクトコード、プロジェクトの基本情報を持たせ、f_プロジェクトフォームからプロジェクトコード、件名、契約日等のデータ及び、f_テーマサブフォームにテーマを入力できるようなフォームを作成しています。フォームで入力したものをそれぞれのテーブルに保存したいのですがうまくいかない部分があります。

フォームから入力すると、tbl_プロジェクトに所属する情報は更新されます。そのtbl_プロジェクトに所属するプロジェクトコードをサブフォームのtbl_テーマのプロジェクトコードにも反映したいのですがどのようにしたらよいでしょうか?
そういったことは可能でしょうか?分かりにくい説明で申し訳ないですが教えていただけると助かります。よろしくお願いします!



DBの構成
【テーブル】
tbl_プロジェクト (1件1件のIDとプロジェクトコードを持つ)
(フィールド:P_ID、プロジェクトコード、件名、契約日など)
tbl_テーマ(プロジェクト毎に関連のあるキーワードを持つ)
(フィールド:P_ID、プロジェクトコード、テーマ)←これのプロジェクトコードにtbl_プロジェクトのデータが入るようにしたい。
tbl_顧客(プロジェクトを依頼した顧客情報を持つ)
【クエリ】
q_テーマ(プロジェクト、テーマ、顧客を抽出するクエリ)
【フォーム】
f_プロジェクト (プロジェクトを1件ずつ表示・参照・新規作成するフォーム)
f_テーマサブフォーム (f_プロジェクトフォームのプロジェクトコードにづきテーマを
        表示・入力するサブフォーム)

リレーションはP_IDをキーに一対多で作成しています。

ACCESS フォームからサブフォームのデータを更新・入力したい

tbl_プロジェクトというテーブルにIDとプロジェクトコード、プロジェクトの基本情報を持たせ、f_プロジェクトフォームからプロジェクトコード、件名、契約日等のデータ及び、f_テーマサブフォームにテーマを入力できるようなフォームを作成しています。フォームで入力したものをそれぞれのテーブルに保存したいのですがうまくいかない部分があります。

フォームから入力すると、tbl_プロジェクトに所属する情報は更新されます。そのtbl_プロジェク...続きを読む

Aベストアンサー

No.4です。

前回の回答は、「レコードの新規登録」のみを想定していました(汗)
大変失礼致しました。


【「メインフォーム」-「サブフォームの新規レコード」間の不一致について】
(=No.4の補足での、2個目の「◆」の件)

メインフォーム側の「レコード移動時」イベントで、『プロジェクトコード』の
更新後イベントと同様の処理を行えば、解消すると思います。
(先頭1行が「Private Sub Form_Current()」となる他は、前回のVBAと全く
 同じなので、今回は省略します)


【既存レコードでの『プロジェクトコード』の空白について】
(=No.4の補足での、1個目の「◆」の件)

対処法としては、
 a)更新クエリを使用して、tbl_テーマの『プロジェクトコード』を一括更新
  (→tbl_テーマに入力済みの『P_ID』の再確認が不要な場合)
 b)「メインフォーム上のプロジェクトコードを、サブフォームの全レコードに
  一括代入」するためのコマンドボタンを、メインフォームに追加
  (→tbl_テーマの『P_ID』が正しいかを目視確認してから代入する場合)
の、2つの考え方があります。

「a」については添付画像をご覧いただくとして、ここでは「b」について説明
します。

メインフォームに『コード転記』コマンドボタンを作成したら、そのクリック時
イベントに以下のコードを記載して下さい:

Private Sub コード転記_Click()

  If MsgBox("サブフォームにプロジェクトコードを追記します", vbOKCancel, "確認") = vbCancel Then Exit Sub

  'サブフォームの全レコードを上書き更新
  With Me![サブフォームのコントロール名].Form.RecordsetClone
    Do Until .EOF
      .Edit
      !プロジェクトコード = Me!プロジェクトコード
      .Update
    Loop
  End With

  '更新を反映
  Me![サブフォームのコントロール名].Form.Refresh

  MsgBox "追記しました", , "確認"

End Sub


なお、「a/b」のどちらを採った場合でも、サブフォームの『P_ID』の上書き
編集に合わせて『プロジェクトコード』も連動して更新させるには、別途、
以下のような『P_ID』の更新後イベントでの対応が必要です:

Private Sub P_ID_AfterUpdate()
'メインではなくサブフォームの『P_ID』テキストボックスの更新後イベント

  If IsNull(Me!P_ID) Then
    Me!プロジェクトコード = Null
  Else
    Me!プロジェクトコード = DLookup("[プロジェクトコード]", "tbl_プロジェクト", "[P_ID]=" & Me!P_ID)
    '『P_ID』がテキスト型の場合は上記ではなく以下のコード
    'Me!プロジェクトコード = DLookup("[プロジェクトコード]", "tbl_プロジェクト", "[P_ID]='" & Me!P_ID & "'")
  End If

End Sub

また、この対応を組み込んで戴けば、

> テーマを修正するとフォーム上では10001が入力される。
> tbl_テーマには反映されない。

の件も解消すると思います。
(但し、別のレコードに移動したり、メニューから「レコード(R)→レコードの
 保存(O)」を選択する等して、レコードが保存してからでないと、テーブル
 には反映されないので、確認の際はご注意下さい)


・・・以上です。

No.4です。

前回の回答は、「レコードの新規登録」のみを想定していました(汗)
大変失礼致しました。


【「メインフォーム」-「サブフォームの新規レコード」間の不一致について】
(=No.4の補足での、2個目の「◆」の件)

メインフォーム側の「レコード移動時」イベントで、『プロジェクトコード』の
更新後イベントと同様の処理を行えば、解消すると思います。
(先頭1行が「Private Sub Form_Current()」となる他は、前回のVBAと全く
 同じなので、今回は省略します)


【既存レコードでの『プロジェクトコー...続きを読む

Q親フォームからサブフォームのレコードソースを設定

親フォームからサブフォームのレコードソースを設定するには?
フォーム1にテーブル1をドロップアンドドラッグして、「テーブル1のサブフォーム」を作成しました。

フォーム1にあるコマンドボタンから「テーブル1のサブフォーム」のRecordSourceを設定する方法を教えてください。

「テーブル1のサブフォーム」からなら
Private Sub Form_Load()
Me.RecordSource = ""
End Sub

とできるのですが、
やりたいことはフォーム1からのイベントなので
「テーブル1のサブフォーム」からのイベントは使えません。

だからってフォーム1の
Private Sub コマンド2_Click()
Me.テーブル1のサブフォーム.RecordSource = "テーブル1のサブフォーム"
End Sub

とするとコンパイルエラーになります。

良い方法があれば教えてください。アドバイスよろしくお願いします。

Aベストアンサー

No2です。説明もれがあったので追加しておきます。
No2のところで、

>このとき、「テーブル1のサブフォーム」
>のフィールドには「#Name?」のような表示がされていると
>思います。すなわちこときはサブフォームにはレコードソースが
>設定されていないからです。

としていますが、「#Name?」と表示される理由はフィールドの
コントロールソースが設定されているために、「#Name?」のような
表示が出てきます。


ここからは蛇足ではありますが、コントロールソースが設定されていなければ
こうした表示はでませんが、もしコントロールソースも取り除いて
いるならば、コマンド1でもコマンド2のクリックイベントでもどちらでも
かまいませんが、たとえば「テーブル1のサブフォーム」の
フィールドのコントロールソースをすべて取り除いておいて、
コマンド2のクリックイベントで設定するとすれば、一応
「テーブル1のサブフォーム」のフィールドの名前をID、名前、住所として
テーブル1のフィールド名を同じくID、名前、住所とするならば、

Private Sub コマンド2_Click()
Me.テーブル1のサブフォーム.Form.RecordSource = "テーブル1"
Me.テーブル1のサブフォーム.Form.Controls("ID").ControlSource = "ID"
Me.テーブル1のサブフォーム.Form.Controls("名前").ControlSource = "名前"
Me.テーブル1のサブフォーム.Form.Controls("住所").ControlSource = "住所"
End Sub

として、レコードソース、コントロールソースを設定します。

No2です。説明もれがあったので追加しておきます。
No2のところで、

>このとき、「テーブル1のサブフォーム」
>のフィールドには「#Name?」のような表示がされていると
>思います。すなわちこときはサブフォームにはレコードソースが
>設定されていないからです。

としていますが、「#Name?」と表示される理由はフィールドの
コントロールソースが設定されているために、「#Name?」のような
表示が出てきます。


ここからは蛇足ではありますが、コントロールソースが設定されていなければ
こうした表示はで...続きを読む

Qアクセエスのレコードの更新をVBAでするには?

アクセスで、一覧表のフォームにボタンを取りつけています。レコードの内容を変更したら、ペンの形のマークが現れますね。これは変更中ということですが、そこでボタンを押しても変更は確定されないから、更新確定させたいのです。

それで、DoCmd.Requery を最初の行に入れてみたら、元の一覧表は最初のレコードに飛んでしまう。

元の一覧表の位置を動かさないために、Ctrl+Enter キーを押して更新確定させたような状態をVBAで実現する方法あるのでしょうか?

よろしくお願いします。

Aベストアンサー

No1 です。
今回の場合には
Docmd.RunCommand acCmdSaveRecord の方が良かったですね
文字通りレコードを保存します。
Requery に引きづられてしまいました (^_^;)

Recalc、Refresh、Requery の使い分けは下記が参考にはなりますか?
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QAccessで別テーブルの値をフォームに表示したい

初めてのAccessで分からない事があり質問させてください。

<会社テーブル>
会社ID
会社名
住所

<社員テーブル>
会社ID
社員名
ソート番号

*1社に対し複数の社員レコードが存在

以上のようなテーブルがあるとします

現在「会社テーブル」を表形式で一覧表示しています
会社ID,会社名、住所とフィールドが並んでいるのですが、その後ろに「社員テーブル」のソート番号が一番若い社員名を表示したいと考えています(現状は番号関係なく表示させる方法すら分かりません)

色々いじくりまわしたのですが、初めてAccessをさわる事もあってよくわかりません

リレーション等でひっぱってくる事ができるのでしょうか?

どなたか教えて頂けませんでしょうか

何卒よろしくお願い致します

PS.Access2013で作成中です

Aベストアンサー

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FROM 社員
ORDER BY 社員.ソート番号;

2、コントロールソースに次のように書きます。

=DLookUp("社員名","社員ソートクエリ","会社ID=" & [会社ID])

http://office.microsoft.com/ja-jp/access-help/HA001228825.aspx

DLookup()については、マイクロソフトの解説を参照されてください。

【DLookup()の限界を破るにはVBAで同じ関数を作るしかない】

マイクロソフトの解説を読めば判りますが、ORDER BY 節を指定する引数が用意されていません。ですから、どうしても、"社員ソートクエリ"を作成するという手間が必要となります。そこで、SQL文を引数とするDBLookup()をVBAで書けば、その手間を省けるという算段になります。この辺りは、好みと趣味の問題。どっちでも良いと思います。そういうお断りをした上で DBLookup()を紹介しておきます。なお、ADOは、つぎのように参照設定しないと利用できません。

http://www.happy2-island.com/access/gogo03/capter00307.shtml

Public Function DBLookup(ByVal strQuerySQL As String, _
             Optional ByVal ReturnValue = Null) As Variant
On Error GoTo Err_DBLookup
  Dim DataValue
  Dim rst     As ADODB.Recordset

  Set rst = New ADODB.Recordset
  With rst
    .Open strQuerySQL, _
       CurrentProject.Connection, _
       adOpenStatic, _
       adLockReadOnly
    If Not .BOF Then
      .MoveFirst
      DataValue = .Fields(0)
    End If
  End With
Exit_DBLookup:
On Error Resume Next
  rst.Close
  Set rst = Nothing
  DBLookup = IIf(Len(DataValue & ""), DataValue, ReturnValue)
  Exit Function
Err_DBLookup:
  MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _
      "・Err.Description=" & Err.Description & Chr$(13) & _
      "・SQL Text=" & strQuerySQL, _
      vbExclamation, " 関数エラーメッセージ"
  Resume Exit_DBLookup
End Function

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FR...続きを読む

Qサブフォームでのダブルクリックイベント

Access2003です。
フォームにサブフォームを設置し、直接テーブルを表示させています。
このサブフォームのテーブルのある行をダブルクリックしたら
その行のデータを他のフォームのオブジェクトにセットしたいのですが
行や行のデータ全てを取得は出来るのですが、サブフォームのイベントがEnterとExitしかなくて、イベント発生が出来ません。
フォームのダブルクリックでXとYを見て…と思ったのですがサブフォーム上ではフォームのダブルクリックイベントが発生せず。
サブフォームのテーブルはユーザーがソートする事もあるのでベタに上にテキストボックス等を置く事は出来ません。
どうにかダブルクリックで動作させる方法はありませんでしょうか?

Aベストアンサー

> どうにかダブルクリックで動作させる方法はありませんでしょうか?

前回の質問でも触れたように(下から2つ目の段落)、
http://oshiete1.goo.ne.jp/qa4952701.html

> サブフォームの「コントロールとしてのイベント」は「Enter」と「Exit」の2つしかありませんが、
> ソースオブジェクトに指定したフォーム(上記の例では「SF1」)側で、各種イベント(Open
> その他)が実行

されます。

ですので、No.1の方の回答にもあるように、『既定のビュー』(フォームのプロパティシートの
『書式』タブにあります)を「データシート ビュー」にしたフォームを、サブフォームのソース
オブジェクトにすれば、テーブルと同様の表示で、かつ、ダブルクリック等のイベントを発生
させることができます。
(但し、テーブル/クエリでは「サブデータシート」を表示できますが、これには非対応です)


【重要】
「フォームのダブルクリックイベント」は、データシートの外側(データが表示されていない、
グレーの背景部分)をダブルクリックした時にしか発生しません。
『データシート内でのダブルクリック』でデータを取得するレコードを指定する場合は、面倒
でも「各コントロールのダブルクリックイベント」に処理を記述してやる必要がありますので
ご注意下さい。
(以下のように、他のフォームへの代入を行う部分を、イベントとは別のSubとして作成して、
 各コントロールではそれを呼び出す形にすると、コードを組むのも修正/管理するのも
 比較的楽だと思います)

なお、ダブルクリックした時点で、コントロールの値は「現在のレコードのもの」しか参照
できないので、x,yなどで「どのレコードが選択されたか」の判定は不要です。念のため(汗)


Private Sub 社員コード_DblClick(Cancel As Integer)
  Call FromAtoB
End Sub

Private Sub 氏名_DblClick(Cancel As Integer)
  Call FromAtoB
End Sub

Private Sub FromAtoB()
  With Forms!フォームB   '別フォームの名前が「フォームB」の場合
    !社員コード = Me!社員コード
    !氏名 = Me!氏名
    '(以下、データを転記する処理を必要な追加)
  End With
End Sub

> どうにかダブルクリックで動作させる方法はありませんでしょうか?

前回の質問でも触れたように(下から2つ目の段落)、
http://oshiete1.goo.ne.jp/qa4952701.html

> サブフォームの「コントロールとしてのイベント」は「Enter」と「Exit」の2つしかありませんが、
> ソースオブジェクトに指定したフォーム(上記の例では「SF1」)側で、各種イベント(Open
> その他)が実行

されます。

ですので、No.1の方の回答にもあるように、『既定のビュー』(フォームのプロパティシートの
『書式』タブにあり...続きを読む

QAccessの画面更新を一時的に停止する方法。

こんにちは。
Accessの画面更新を一時的に停止する方法を捜しています。
ExcelのScreenUpdatingと同様な機能です。

VBAでの更新処理時に画面がチラチラと動くのを防止したいと思っています。
(Ver:Access2000)
ご存知の方宜しくお願い致します。

Aベストアンサー

Application.Echo False '画面の描画を止める

・・・処理を実行する・・・

Application.Echo True '画面の描画を行う


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング