Access2000です。
フォームを作成し、ツールボックスより「サブフォーム/サブレポート」をクリックしてサブフォームを配置しました。
イベントがEnterとExitしかないやつです。
検索するとサブフォームのテキストボックスが・・・とかあるのですが、何の事やら?です。
この、配置したサブフォームと検索すると色々ヒットするサブフォームは別物なのでしょうか?
このシンプルなサブフォームのソースオブジェクトにテーブルを指定して表示させています。
リンク子フィールドやリンク親フィールドは未設定です。
使い方が間違っているでしょうか?
このサブフォームの使い方がイマイチよく分かりません。
検索しても前述のように存在しないイベント(?)等の説明でさっぱりです。
分かりやすくどなたかお願いします。。。

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

A 回答 (2件)

> このシンプルなサブフォームのソースオブジェクトにテーブルを指定して表示させています。



これができているのでしたら、難しくはないと思います。
サンプルの作成法を説明しますので、いろいろ試してみて下さい。

1)新規mdbを作成して開く
 (後で下記フォームを削除するなら、ここは既存のmdbでも可)
2)新規フォームを作成し、テキストボックスやコマンドボタンなどを適当に配置
 (とりあえず、サブフォームの設定法のサンプルなのでレコードソースは空でも可)
3)上記フォームに「SF1」と名前をつけて保存
4)改めて新規フォームを作成し、サブフォーム(シンプルと言われたもの)を配置
5)サブフォーム内をクリックした後、「SF1」と入力
 (または、サブフォームのプロパティシートで、『ソースオブジェクト』に「SF1」を指定)
 ※テーブルの場合はテーブル名の前に「テーブル.」をつけて「テーブル.テーブル1」等としますが、
  フォームを指定する場合は「フォーム.」はつけずフォーム名だけを指定します)
6)上記フォームに「MF1」と名前をつけて保存


・・・以上です。

これで、MF1を開くとサブフォームコントロール内には「SF1」(に配置したテキストボックス等)が
表示されるようになります。

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


※Access2003の場合、ソースオブジェクトにフォーム名を指定した時点で、当該フォームの
 デザインビューがサブフォームコントロール内に表示され、そこでコントロールの追加やイベントの
 設定などができます。
 (サブフォームの内側をゆっくり2回クリックすると、そちらのコントロールやイベント等の編集が可能)
 Access97の場合は、指定したフォーム名が表示されるだけなので、コントロールの追加などは
 そのフォームを別途デザインビューで開く必要があります。
 Access2000は勤務先で以前使っていたのですが、Access97/2003のどちらと同じだったかは
 忘れてしまいました(汗)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。サンプルそのままを作成してみました。
Webのiframeのようなものですね。
1つのフォームに複数のフォームを配置できるのですね。
検索して出てくるオブジェトの意味も分かりました。
ありがとうございました!

お礼日時:2009/05/13 11:58

> サブフォームは別物なのでしょうか?


別物ではないと思います。

そのフォームをデザインで開きプロパティを表示した時、そのサブフォームコントロールをクリックしたらプロパティには何が表示されますか。
「ソースオブジェクト」には何が書かれていますか。
ここには現在使われているように、テーブル名が入ったり、クエリ名が入ったり、はたまたフォーム名が入ったりします。
親子関係とかよくいう時には、フォームを指定していることが多いようです。

> リンク子フィールドやリンク親フィールドは未設定です
特に指定しなくても、サブフォーム側単独で動かしたりしています。

> 使い方が間違っているでしょうか?
間違ってはいないと思います。(そのような表示もするので)


以下は、私が実際に行っている処理部分の抜粋になります。

フォームの上部分に、オプショングループを配置し、やりたい処理を選んでもらいます。
その選択内容により、サブフォームに表示するフォームを切り換えています。
親子関係は設定していません。

Private Sub op1_Click()
  Select Case Me.op1
    Case 1
        Me.fsub.SourceObject = "F_A1"
    Case 2
        Me.fsub.SourceObject = "F_A2"
    Case 3
        Me.fsub.SourceObject = "F_A3"
    Case 4
        Me.fsub.SourceObject = "F_A4"
    Case 5
        Me.fsub.SourceObject = "F_A5"
    Case 6
        Me.fsub.SourceObject = "F_A6"
  End Select
End Sub

※ op1 がオプショングループ、fsub がサブフォームコントロール名

※ この方法は決まった大きさ位置での表示を、画面を切り替えるようなイメージで操作させたかったので

※ よく例とか教材に出てくるような画面構成は、親のフォームにもテキストボックスなりコントロールのものがあって、サブフォームに表示した内容のものを拾ってくるとか参照させるとかが多いです。
でも、使い方はそれだけではないので、その時々で考えられればいいと思います。
    • good
    • 0
この回答へのお礼

細かな回答をありがとうございます!
オブジェクトが絶対必要、という訳ではなく、今のやり方でも良いと知って安心しました。
オプションボタンではなくコンボボックスで似たような動作をさせてみました。なるほどー。
ありがとうございました!

お礼日時:2009/05/13 11:56

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

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

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

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

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

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初心者です。

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

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

Aベストアンサー

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

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

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


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

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

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

Me.CurrentRecord

という構文によっても、それぞれ取得が可能です。

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【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)

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

Qフォームを開くときに、コンボボックスの値を選択(アクセスVBA)

こんにちは。
アクセスVBAで、フォームを開いたとき
(フォームのOpenイベント)に、
コンボボックスの値を選択したいのですが、
どういう方法が、あるでしょうか。

理想は、
フォームのOpenないし、Loadイベント内で、
コンボ0.ItemData(2).Selected
と、書くような感じです。
(無論、Selectedは使えませんでした)。

よろしくお願いします。

Aベストアンサー

これでいいのかな?
※テキスト書きなので検証していません

If コンボ0.ListCount > 0 Then
  コンボ0.Value = コンボ0.Column(0, 2)
End If

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
 <現...続きを読む

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テキストボックスにクエリ結果を表示させたい

フォームにテキストボックスAがあり、そこに入力した文字(下記テーブルのフィールド1の文字)をクエリーの「抽出条件」にし、同じフォーム上のテキストボックスBに表示しようと思っています。

クエリを開くとパラメータの入力を求めてきて、入力するとうまく抽出されます。

テーブルは
フィールド1|フィールド2
  A   |  10
  B   |  20
  C   |  30
  D   |  40
のような簡単なものです。

テキストボックスBのコントロールソースに
「=[○×クエリ]![フィールド2]とやっても「#Name?」と表示されてしまいます。

どのようにやればよいのでしょうか?

Aベストアンサー

クエリは必要ありません。

フォームのレコードソースに無いデータを表示させる
場合には DLookUp を使います。

テキストボックスBのコントロールソースに
=DLookUp("フィールド2","テーブル名","フィールド1='" & [テキストボックスA]) & "'"

上記は「フィールド1」が文字列型の場合です。

数値型の場合は次のようになります。
=DLookUp("フィールド2","テーブル名","フィールド1=" & [テキストボックスA])

DLookUp 関数は コントロールソースに限らず
VBA でも使用し、Access では、非常に使用頻度の高いものです。

ヘルプで調べて、ぜひマスターしてください。

もし Access でなかったら、このレスは無視して下さい。

Qサブフォームのイベント取得

親フォームからサブフォームのレコード移動時、クリック時等のイベントを取得できるのでしょうか?

また、同様に親フォームからサブフォームの中のサブフォームのイベントを取得することができるのでしょうか?

ご存じの方がいらっしゃいましたらご教授よろしくお願いします。

Aベストアンサー

親フォームからサブフォーム、或いは逆でも、イベントの取得は可能です。
但し、手続き(?)が複雑なことなどから、意図した動作をさせるには、
かなり苦労するかもしれません(汗)

ともあれ、とりあえず簡単なサンプルを提示してみます。
 ・子フォームのレコード移動時イベントを、親フォームで取得
 ・親フォームのコマンドボタンのクリック時イベントを、子フォームで取得

【構成】
 ・親フォームに設置したコンボボックスの名前: 起動
 ・コントロールとしてのサブフォームの名: SF1
※レコード移動時イベントを発生させる関係上、子側のレコードソースには
 適当なテーブル/クエリを指定して下さい。

【コード】
<親側>

'フォームのモジュールレベル(全てのSub/Functionよりも前の領域)で、
'イベントを取得したいオブジェクトを参照する変数を宣言
'★「WithEvents」により、イベント取得が可能になります★
Private WithEvents Frm As Form

'開く時イベント
Private Sub Form_Open(Cancel As Integer)
  '変数に子フォームを設定
  Set Frm = Me!SF1.Form
End Sub

'閉じる時イベント
Private Sub Form_Close()
  '念のため、明示的に変数を解放
  Set Frm = Nothing
End Sub

'サブフォームのレコード移動時イベントを受けて行う処理
'★「Sub」の後は「Form_」でなく「Frm」(=変数名)なので注意★
Private Sub Frm_Current()
  MsgBox "子側でレコード移動がありました"
End Sub

'自身に設置したコマンドボタンのクリック時
Private Sub 起動_Click()
  MsgBox "親側でボタンクリック"
End Sub


<子側>

'親と同様にモジュールレベルで変数を宣言
Private WithEvents Btn As CommandButton

'開く時
Private Sub Form_Open(Cancel As Integer)
  Set Btn = Me.Parent!起動
End Sub

'閉じる時
Private Sub Form_Close()
  Set Btn = Nothing
End Sub

'レコード移動時
Private Sub Form_Current()
  MsgBox "子側でレコード移動"
End Sub

'親側のコマンドボタンのクリックを受けて行う処理
Private Sub Btn_Click()
  MsgBox "親側でボタンがクリックされました"
End Sub


・・・以上です。
これで、子側のレコード移動で、親/子の双方のMsgBoxが表示
されることを確認したら、これをベースに、実際に行いたい処理コードを
追加していってみてください。

なお、「Private Sub Btn_Click()」などは、全て手入力する必要が
あります(「Sub 」の後は、「変数名」+「_」(アンダーバー)+「イベント名」)。
また、マウスボタンクリック時のように、引数を持つイベントの場合は、
それらも同様に記述しないと、コンパイルエラーになるのでご注意下さい。


◆参考(別手法)◆
禁じ手的ではありますが(汗)、「親側から子側のイベント取得」とは逆に、
「子側から親側の各イベント時の処理の呼び出し」も可能です。

例えば、子側のレコード移動時に、親側の『起動』ボタンのクリック時
の処理を実行するには、以下のようにします:

<親側>
 同ボタンのクリック時イベントの「Private」を「Public」に変更

<子側>
 以下のような構文で、同ボタンのクリック時の処理を子側のレコード
 移動時に呼び出せます:

Private Sub Form_Current()
  Call Me.Parent.起動_Click
End Sub


※親側からの呼び出しは以下のようにします:
 (子側のレコード移動時イベントの処理を実行する場合)
  SF1.Form.Form_Current
 または
  Me.SF1.Form.Form_Current

親フォームからサブフォーム、或いは逆でも、イベントの取得は可能です。
但し、手続き(?)が複雑なことなどから、意図した動作をさせるには、
かなり苦労するかもしれません(汗)

ともあれ、とりあえず簡単なサンプルを提示してみます。
 ・子フォームのレコード移動時イベントを、親フォームで取得
 ・親フォームのコマンドボタンのクリック時イベントを、子フォームで取得

【構成】
 ・親フォームに設置したコンボボックスの名前: 起動
 ・コントロールとしてのサブフォームの名: SF1
※レコード移動時...続きを読む

QACCESSでフォームを使って、テーブルを参照、データ入力、データ更新をしたいのです

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入力画面
       ↓
レコード番号を入れると、そのレコードのデーターが画面に表示され、
その画面で修正可能
       ↓
 保存 ボタンで保存

という流れです。

レコードナンバーはIDを使おうと思っています。

データの量が莫大な為、コンポボックスなどは使えません。

できるだけ、VBAなどは使わずに作りたいです。

よろしくお願い致します。

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入...続きを読む

Aベストアンサー

まずそのテーブルを基にしてフォームを作成します。
そのフォームのヘッダー部分にテキストボックスを配置後、一旦
上書き保存。
フォームのレコードソースを
SELECT *
FROM テーブル名 WHERE ID=[Forms]![フォーム名]![テキストボックス名]
とします。
次にテキストボックスの更新後処理に
Me.Requery
とすれば完成です。
フォームを開いてテキストボックスにID入力後エンターしてください。

保存に関しては、コマンドボタン作成後クリック時イベントに
DoCmd.RunCommand acCmdSaveRecord
とすれば良いでしょう。

この手のモノは検索すれば相当数ヒットするので、そちらを参考にされるのもよろしいかと。


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

人気Q&Aランキング

おすすめ情報