日付/品番/出庫数のフィールドで構成された「明細テーブル」があります。
「日付」フィールドからなるメインフォーム、「品番/出庫数」からなるサブフォームをつくり、メインフォームのサブフォームコントロールのレコードソースを「サブフォーム」に指定しました。

日付を入れるとその日の出庫明細がサブフォーム上に表示されるのですが、このレコード件数をメインフォーム上のコントロールで表示したいのです。

サブフォームのヘッダにテキストボックスコントロールを作り「=Count([品番])」としてやれば、「サブフォーム上での」件数表示は出来るのですが、同じ式をメインフォーム上のコントロールに記述すると、「全レコードの件数」が表示されてしまいます(当たり前ですが)
そこで、「=Count([埋め込み].Form![品番])」とやってみました。ここで「埋め込み」とはメインフォーム上のサブフォームコントロールの名前です。
結果は「#Error」となってしまいます。Count関数だけでなくSum関数などでも同様の結果となります。
はっきりいって「サブフォームのヘッダに表示させればいいじゃないか」というところなのですが、「式ビルダ」ではサブフォームのコントロール名も容易に参照できるようになっており、なにか方法があるのではないか、初歩的なところでつまずいていないか、と思案している次第です。
なにかアドバイスいただけたら幸いです。

A 回答 (2件)

サブフォームのフッタに『件数』というテキストボックスを作り


ソースに =Count(*) とします。

普通のフォームとして作り、[規定のビュー]をデータシートにすればデータシートのサブフォームになりますから、フッターを追加しても問題はなく

メインフォームにテキストボックスを作り
=NZ([サブフォーム名].[Form]![件数])
という具合にサブフォームの「件数」を参照すれば良いです。

参考になれば幸いです
    • good
    • 0
この回答へのお礼

これはすでに試していたのですが……
「コードビルダ」で作成した式では([サブフォーム名].フォーム![件数]) と
「Form」が「フォーム」(実際は半角カナ)になっていました(なぜ・・・?)

k_ebaさんの式で上手くいきました。ありがとうございました。

お礼日時:2002/03/13 21:51

AccessVBAでTblの件数を取得すると↓


1.Mainフォームにテキストボックスを1つ作って下さい。名前は「txt1」
2.デザインフォームのプロパティのイベントで「開く時」の右にある
「...」3点リーダーをクリックし、コードビルダを選択します。
3.コードビルダが開いたら ツール→参照設定→Microsoft DAO 3.6
Object Libraryにチェックを付けて下さい。
下記の点線の部分を↓にカット&ペースト


Private Sub Form_Open(Cancel As Integer)
●●●←ここにカット&ペースト
End Sub

'---------------------------↓
Dim db1 As Database '変数宣言
Dim rs1 As Recordset
Dim aCnt As Integer

'総件数の取得
aCnt = 0
Set db1 = CurrentDb
Set rs1 = db1.OpenRecordset("T_全件")
If rs1.EOF Then '1件も存在しない場合はエラー
Msgbox("T_全件テーブルに該当データは存在しません。")
Exit Sub
End If
rs1.MoveLast
aCnt = rs1.RecordCount
Me.txt1.Value = aCnt  'テーブルの合計値をTxt1に表示する。
rs1.Close
db1.Close
'----------------------------↑
説明が必要であれば追記してください。(暇なときに返事します)

この回答への補足

詳細な回答いただきありがとうございました。

>Set rs1 = db1.OpenRecordset("T_全件")
この"T_全件"のところにレコードソースとなるテーブル名を入れるのだと思いますが、実行したところ、テーブルのすべてのレコード数が表示されてしまいました。

サブフォームに表示されているレコード件数だけを取得したかったのですが……。

しかしこのコードを使えばレコードソース以外のテーブルからも値を取得することが出来ますね。今後の参考になりそうです。

補足日時:2002/03/13 21:41
    • good
    • 0

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

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

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

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

QAccess2000のフォームでのフォームのIMEが、2度目以降変更してしまう。

アクセス初心者です。
Accsss2000のフォームでのデータ入力を楽におこなうために、例えば名前ならばテキストボックスのプロパティシートのその他タブから、IME入力モードをオンにしてかつIME変換モードを人名/地名に変更したのですが、1回目の入力はIMEが全角・人名モードになるのですが、2度目以降は半角カタカナ・人名/地名モードになってしまいます。全角ではありません。なぜでしょうか?
また上のタブにIME入力モード保持というのもありますが、どういう時に利用すればよいのでしょうか?

Aベストアンサー

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、「ひらがな/全角カタカナ/半角英数」などのモードを特に指定
 しない場合に使用します。そのため、特定モードで固定したい場合は、
 それに合わせた設定値(ここでは「ひらがな」)を指定する必要がある、
 ということです)


> 上のタブにIME入力モード保持というのもありますが、どういう時に
> 利用すればよいのでしょうか?

私自身はこの設定は使用していないのですが・・・(汗)

例えば、取引情報を入力する場合、『企業略称』テキストボックスには
「アルファベットの略称」や「漢字の略称」、「カタカナの略称」がそれぞれ
連続することになります。
このとき、同テキストボックスの『IME 入力モード』を「ひらがな」などに固定
してしまうと、アルファベットやカタカナの略称のデータを入力する際には
毎回手動で「全角カタカナ」や「半角英数」に切り替える・・・という使い方を
する方もいる可能性があります。
『IME 入力モード保持』は、恐らくそういう場合を想定した機能ではないかと
思います。
(もちろん、ひらがなからの変換で全角カタカナや半角英数に変換するように
 している人の場合は、切替は不要ですので、この設定は使用しなくても
 かまわないことになります)

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、...続きを読む

Qサブフォームからメインフォームに移動

 現在ACCESS2000を使用してシステムを作成しております。のですが、サブフォームからメインフォームの特定のコントロールに移動したいと思っています。しかし、ちょっとやり方がわかりません。わかる方よろしくおねがいします。

Aベストアンサー

サブフォーム側のVBAで移動ということですよね?

メインのコントロール名を[txtMainBox]とすると、

Parent!txtMainBox.SetFocus

ですね。
サブフォーム側のコードです。

Qフォーム等入力時においてIMEが働かない(?)

よく起こる現象で、インターネットでフォーム入力や、Yahooとかの検索入力で日本語入力をしたいときに、IMEが働かない現象が起きています。半角英数のみ入力ができます。私の環境だけでしょうか‥。
キーボードの「半角/全角」キーが効かないので、IMEツールバーを出して、マウスで日本語入力の「あ」にしても入力画面では半角英数に戻ったりします。
Wordやメモ帳を起動すると、正常に働くので、メモ帳を立ち上げてそこへ入力して、コピーしてペーストをしたりして対処をしています・・。
常にメモ帳を立ち上げておけば解決とかの意味ではありません。
IEをアクティブウィンドウにした場合、IMEが働くなくのです。

Aベストアンサー

確かIEのバグだったと思います。

対処法のリンクを貼っておきますので、参考にしてください。
http://www.tku.ac.jp/~densan/local/ie7-ime/ie7-ime.html

QAccessのメインフォームとサブフォーム

メインフォームのコマンドボタンからサブフォームのテーブルを操作することは可能でしょうか?

【メインフォーム】
   日付[_2006/2/3]   『回数A(コマンドボタン)』
   品物[_りんご]    『回数B(コマンドボタン)』
   製作所[_青森]

 【サブフォーム】
    社員コード 所属   氏名   回数A 回数B
    [_1234]  [_福島] [_山田] [_1]  [_0]
    [_2345]  [_山形] [_佐藤] [_1]  [_0]

とあるときに、『回数B(コマンドボタン)』をクリックすると、サブフォームの社員コード
「1234」と「2345」の回数Bに「1」(回数B+1)を入力し、回数Aを「0」(回数A-1)
としたいのです。

どのようにすればいいのでしょうか?
よろしくお願いします。

Aベストアンサー

VBAが使える(参照設定でVBを設定等)のであれば、「回数B」ボタンのプロパティのイベントのクリック時のイベントプロシージャー内に、
Me![サブフォーム名]![回数B] = Me![サブフォーム名]![回数B]+1
Me![サブフォーム名]![回数B] = Me![サブフォーム名]![回数B]-1
と命令することで出来ます。

QWebフォームのIMEモードを入力項目毎に自動切替

ある人と話していて、議論になったので質問します。世の中にはたくさんのウェブフォームがあって、名前や住所、電話番号などの登録情報を入力することが多々あります。あまり深く考えたことはなかったのですが、私はなんとなく、「名前や住所のテキスト入力時には自動的にIMEの入力モードが日本語(ひらがな)になり、電話番号やメールアドレスのテキスト入力時には英数になる」ものだと思っていました。自分でIMEを操作することなく、テキストフィールドにタブで移動したりもしくはマウスをクリックしたときにアプリケーション側で制御されるものが大半だと思っておりました。それを聞いてある人は「そんなことはない、世の中の大半のアプリはそんなことを制御していない、「普通」は自分でIMEで制御しながら入力するものだ」、と言っていたので議論になりました。これからウェブサイトを作ろうと思っているので、最終的にはこの議論はアプリ側にそのような実装をするかどうかというところに帰着するのですが、まずは「一般的にどうなのか」というところでご意見を頂きたいと思います。ちなみに、日本のメジャーなサイト(航空会社、ポータル、携帯電話、電気屋)10個でユーザ登録フォームを確認したところ、名前欄をクリックしてもいずれもIMEのモードはひらがなに変更されませんでした。そこで今は友人が正しくて、僕が間違っていたどころか、「そもそも、名前入力時に自動的にひらがなにモード変換されるようなサイトって本当にあるのだろうか。。」というような状態になっております。どなたか、教えてください。よろしくお願いします。

ある人と話していて、議論になったので質問します。世の中にはたくさんのウェブフォームがあって、名前や住所、電話番号などの登録情報を入力することが多々あります。あまり深く考えたことはなかったのですが、私はなんとなく、「名前や住所のテキスト入力時には自動的にIMEの入力モードが日本語(ひらがな)になり、電話番号やメールアドレスのテキスト入力時には英数になる」ものだと思っていました。自分でIMEを操作することなく、テキストフィールドにタブで移動したりもしくはマウスをクリックしたときにア...続きを読む

Aベストアンサー

IMEのON/OFFができるスタイルシート「ime-mode」は、Internet Explorerが独自に追加した仕様で、Internet Explorerでは入力モードが切り替わりますが、その他のブラウザでは保証されません。
http://www.htmq.com/style/ime-mode.shtml

今、確認したところ、IE8はもちろん切り替わり、Firefox 3.6も切り替わりましたが、Google Chromeは切り替わりませんでした。
Opera,Safari,Sleipnir…等は試してません。

大手のサイトでは「より多くのブラウザで表示できること」が求められますので、独自仕様の「ime-mode」を使っているところは少ないのではないでしょうか。
逆に「Internet Explorerしか表示できなくて良い」と割り切ってるサイトや、社内だけに公開するようなページは「ime-mode」が使われていると思います。

QAccess メインフォーム サブフォームにて

お世話になります。

Accessにて
メインフォームにコマンドボタンを置いて、クリックするとサブフォームのレコードが
次に行くようにしたいのですが、

コマンドボタン クリック
Forms![メインフォーム]![サブフォーム名].Form!フィールド名.SetFocus
DoCmd.GoToRecord , , acNext

メインフォームとサブフォームのレコードが次に行ってしまいます。
サブフォームだけ次のレコードに行くには、どのようにすれば良いのでしょうか。

分かる方教えて下さい。
宜しくお願いします。

Aベストアンサー

>Forms![メインフォーム]![サブフォーム名].Form!フィールド名.SetFocus


Forms!FMain!埋め込み0.SetFocus
DoCmd.GoToRecord , , acNext

以下の[サブフォーム表示コントロール名]はサブフォームそのものの
名前でなく、デザインビューでサブフォームを表示するために設定
するコントロールの名前で、初期値は[埋め込み0]のような名前
であることに留意をしてください。もしサブフォームと同じ
名前に設定しているならば問題はありませんが。

以上を踏まえて、たとえば、

Forms![メインフォーム]![サブフォーム表示コントロール名].SetFocus
DoCmd.GoToRecord , , acNext

これで、サブフォームの次のレコードに移動します。
もし、質問の中の特定のフィールドにフォーカスを
当てたいのであれば、移動後にその特定のフィールドに
フォーカスを当てればいいので、

Forms![メインフォーム]![サブフォーム表示コントロール名].SetFocus
DoCmd.GoToRecord , , acNext
Forms![メインフォーム]![サブフォーム表示コントロール名].Form![フィールド名].SetFocus

これで、レコードを移動したときにフォーカスは
特定のフィールドに当たっています。

>Forms![メインフォーム]![サブフォーム名].Form!フィールド名.SetFocus


Forms!FMain!埋め込み0.SetFocus
DoCmd.GoToRecord , , acNext

以下の[サブフォーム表示コントロール名]はサブフォームそのものの
名前でなく、デザインビューでサブフォームを表示するために設定
するコントロールの名前で、初期値は[埋め込み0]のような名前
であることに留意をしてください。もしサブフォームと同じ
名前に設定しているならば問題はありませんが。

以上を踏まえて、たとえば、

Forms![メインフォーム]![サブフォー...続きを読む

QACCESS フォーム上 テキストボックスを移動するごとに文字の入力モードが戻ってしまう

ACCESSでフォーム上で入力をしています。
テキストボックスを移動するごとに半角英数になってしまい非常に不便です。

テーブルではIME入力モード:ひらがな、IME返還モード:一般としています。
テーブルのデザインビューの状態では指定している通りのひらがなで入力できるのが、フォームになると半角英数の状態です。
フォームのプロパティから何か設定を変更しなければいけないのでしょうか?
よろしくお願い致します。

Aベストアンサー

maigo-no-konekoさん
ACCESS2000では次の機能があります。
テーブルの項目定義のIMEの設定内容が引き継がれる仕様なのか
否か不明ですが、フォームの定義画面でテキスト項目やコンボボックス
など入力項目毎に指定します。
(ただし、シフトキーを押しながらマウスクリックすることで
複数選択できます)

1)テキストポックスのプロパティ画面を呼び出します。
2)その他 タブにIME関連の項目があります。
  IME入力モード保持 直前に入力した項目のIMEの入力設定
  状態を引き継ぐ場合は「はい」にします。直前の入力項目の
  設定によらない場合は「いいえ」にします。
  IME入力モード オンまたはひらがな等にします。
           ここでご希望の入力方法を選択します。
  IME変換モード 一般(人名や地名などを入力す場合は
  人名/地名)にします。

Qサブフォームからメインフォームの絞込をしたい

サブフォームの項目からメインフォームの絞込をおこないたいのですが、うまくいきません

やりたいこととデータベースの状況は以下のとおりです

メインフォームに「会社名」があり、サブフォームにその会社の「ブランド名」(一社に対し複数存在する)とその「業種」(1つのブランドにつき1つ)がある。

メインフォーム----会社名(テキスト)
サブフォーム--ブランド名(テキスト)----業種(コンボボックス)

【やりたい事】
サブフォームにある業種をメインフォーム上のフィルタ用コンボボックスで選択し、選択した
業種を持つ会社名のみ表示したい(たとえばケーキを扱うA社とD社、Z社のみメインフォームで表示するようにする)

【コード】
現在以下のようなコードを作成しています。
テキスト欄に「業種」を打ち込み、コマンドボタンを押して絞り込む
※本当はコンボボックスで選択したいのですが・・・

Private Sub コマンドボタン名_Click()
Me![サブフォームのパーツ名].Form.Filter = "[コンボボタン-業種] Like '*" & Me.テキスト欄 & "*'"
Me![サブフォームのパーツ名].Form.FilterOn = True
Exit_コマンドボタン名_Click:
Exit Sub
End Sub

作成しましたが、レコードを移動するたびにパラメータ入力のポップアップがでてきます
フィルターもかからず、絞込が全くできていません

どなたか詳しい方ご教授よろしくお願いいたします

サブフォームの項目からメインフォームの絞込をおこないたいのですが、うまくいきません

やりたいこととデータベースの状況は以下のとおりです

メインフォームに「会社名」があり、サブフォームにその会社の「ブランド名」(一社に対し複数存在する)とその「業種」(1つのブランドにつき1つ)がある。

メインフォーム----会社名(テキスト)
サブフォーム--ブランド名(テキスト)----業種(コンボボックス)

【やりたい事】
サブフォームにある業種をメインフォーム上のフィルタ用コンボボックスで選択し...続きを読む

Aベストアンサー

メインとサブフォームは、会社名でリンクされているのでしょうか?


以下が参考になると思います

サブフォームのフィールドを対象にメインフォームにフィルタをかける
http://hatenachips.blog34.fc2.com/blog-entry-235.html

QAccess フォームのテキストボックスに半角英字のみで入力する設定は

IME入力モードをテーブル・フォームともオフにしたのですがひらがな入力モードになってしまいます。
フォームのテキストボックスに半角英字のみで入力する設定としてプロパティのIME入力モードをオフにするやり方自体が間違っているのでしょうか。
それともATOKを使っているなど利用するパソコン側の問題でしょうか

Aベストアンサー

IME入力モードを「使用不可」にしましょう。

QACCESS VBA メインフォーム及びサブフォームのフィルタのクリア

ACCESS VBA初心者です。ネット上の書き込みを参考に下記のようなフォームを作成しデータ検索したいのですが、うまくいかず、ネット上の情報を参考に色々トライしてみたのですが解決できません。

顧客名簿で顧客(会社)名で検索し、当該顧客の関係者(複数)をサブフォーム(帳票形式)に表示しています。さらにサブフォームに表示された一覧から、氏名、所属部署等で検索をかけています。
ところが、メインフォームに設けたテキストボックスで検索した結果をクリアするとき、サブフォームの検索を掛ける前だと、クリアできるのですが、サブフォームの検索を掛けた後では、メインフォームで検索した会社名をクリアできません。サブフォーム内の再検索、クリアは何度でもできます。
サブフォームの検索を掛けた後でも、メインフォームの検索値をクリアする方法をご教示ください。
各種作業のコードは下記の通りとしています。

メインフォームの検索コード
Dim dbs As Database
Dim qdf As QueryDef
Dim rst As Recordset
Set dbs = CurrentDb
Set qdf = dbs.QueryDefs("クエリ名")
With qdf
.Parameters("[forms]![フォーム名]![検索用フィールド名]") = Forms!フォーム名!フィールド名
Set rst = .OpenRecordset
.Close
End With
rst.Close
DoCmd.OpenQuery "クエリ名", acViewNormal
DoCmd.Close acQuery, qdf.Name, acSaveYes

メインフォームの検索クリアコード 
 Me.検索用フィールド名 = ""
  Dim dbs As Database
Dim qdf As QueryDef
Dim rst As Recordset
Set dbs = CurrentDb
Set qdf = dbs.QueryDefs("クエリ名")
With qdf
.Parameters("[forms]![フォーム名]![検索用フィールド名]") = Nothing
Set rst = .OpenRecordset
.Close
End With
rst.Close
Me.[サブフォーム名].Form.Requery
 ※検索値をNullにしてFilterOn=True にする方法(下記サブフォーム内の検索クリアの方法)でも結果は同じでした。

サブフォーム内の検索コード
 Dim sFilter As String
sFilter = vbNullString
sFilter = "検索適用フィールド名Like '" & Me.サブフォーム内の検索用フィールド名.Value & "'"
Me.サブフォーム名.Form.Filter = sFilter
Me.サブフォーム名.Form.FilterOn = True

サブフォーム内の検索クリアのコード
 sFilter = vbNullString
Me.サブフォーム内の検索用フィールド名 = vbNullString
Me.サブフォーム名.Form.Filter = sFilter
Me.[サブフォーム名].Form.FilterOn = True
Me.[サブフォーム名].Form.Requery

よろしくお願いします。

ACCESS VBA初心者です。ネット上の書き込みを参考に下記のようなフォームを作成しデータ検索したいのですが、うまくいかず、ネット上の情報を参考に色々トライしてみたのですが解決できません。

顧客名簿で顧客(会社)名で検索し、当該顧客の関係者(複数)をサブフォーム(帳票形式)に表示しています。さらにサブフォームに表示された一覧から、氏名、所属部署等で検索をかけています。
ところが、メインフォームに設けたテキストボックスで検索した結果をクリアするとき、サブフォームの検索を掛ける前だ...続きを読む

Aベストアンサー

ACCESS2007でしたか....
それだと
https://support.microsoft.com/ja-jp/kb/941800
が原因かもしれません....


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

人気Q&Aランキング

おすすめ情報