Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1967 / 2272 ツリー ←次へ | 前へ→

【4372】検索フォーム内でのフォーカス(カーソル?... mako 05/2/8(火) 16:14 質問[未読]
【4377】Re:検索フォーム内でのフォーカス(カーソル... かろちん 05/2/9(水) 0:14 回答[未読]
【4388】Re:検索フォーム内でのフォーカス(カーソ... mako 05/2/9(水) 17:02 質問[未読]
【4391】Re:検索フォーム内でのフォーカス(カーソ... かろちん 05/2/10(木) 0:29 回答[未読]
【4405】Re:検索フォーム内でのフォーカス(カーソ... mako 05/2/10(木) 17:22 お礼[未読]
【4420】Re:検索フォーム内でのフォーカス(カーソ... mako 05/2/14(月) 17:08 質問[未読]
【4421】Re:検索フォーム内でのフォーカス(カーソ... かろちん 05/2/15(火) 0:47 回答[未読]
【4424】Re:検索フォーム内でのフォーカス(カーソ... mako 05/2/15(火) 11:51 お礼[未読]

【4372】検索フォーム内でのフォーカス(カーソル?...
質問  mako  - 05/2/8(火) 16:14 -

引用なし
パスワード
   製品を作る標準書番号の管理台帳のテーブルがあります。
そのテーブルには標準書番号、製品名、製品コード、廃止日の
フィールドがあります。

製品コードを入力してenterキーを押すと、標準書番号、製品名、廃止日
(廃止していない標準書は空白)がでてくる検索フォーム(選択クエリ)を
作成しました。

製品の統廃合などの都合で、ひとつの品コードに対して
いくつかの標準書番号が存在する場合があるので、並べ替えを降順にして
最新の情報が一番最初に出てくるようにしました。

最新の情報が画面に表示されていてもenterキーを押すたびに
どんどん古い情報が画面に表示されていき、最後は製品コード(検索に使った)
以外は空白になります。

そこで。。。使用者の希望が二つ発生してしまったのです。

1.一番古い情報を確認した後、また最新の情報を見たい
2.一番最初にenterキーを押した時点で、その製品コードに対して
 何個の標準書番号が存在するのか知りたい

の二つです。
2.は重複クエリというのをみつけたのですが、
その結果をフォームに表示する方法がわかりません。
いつも、初歩的な質問で説明もへたですみません。
どうか教えて下さい。お願いします。

【4377】Re:検索フォーム内でのフォーカス(カーソ...
回答  かろちん  - 05/2/9(水) 0:14 -

引用なし
パスワード
   画面構成が良く分からないのですが

>1.一番古い情報を確認した後、また最新の情報を見たい

 これは、最新の順に表示するサブフォームと
 古い順に表示するサブフォームを用意すること
 により可能ではないでしょうか。

 古い順のサブフォームは、最後の1件のみの
 表示でも良いと思います。

>2.一番最初にenterキーを押した時点で、その製品コードに対して
> 何個の標準書番号が存在するのか知りたい

 これは、フォームに件数を表示するテキストボックスを
 設置し、DCount関数で件数を表示(コントロールソース
 にセットする)することにより可能かと思います。

【4388】Re:検索フォーム内でのフォーカス(カーソ...
質問  mako  - 05/2/9(水) 17:02 -

引用なし
パスワード
   かろちんさんへ。ありがとうございました。
朝、再質問したつもりがかろちんさんのお返事をそのまま
投稿してしまっていました。本当にすみません。

どうか再び再質問させて下さい。

>>1.一番古い情報を確認した後、また最新の情報を見たい

> これは、最新の順に表示するサブフォームと
> 古い順に表示するサブフォームを用意すること
> により可能ではないでしょうか。
    
   説明不足ですみません。使用者の中でただ一人だけが
   「古い情報を見たい時がある」という位、使用頻度が少ないので
   できれば新旧の情報をいったりきたりくるくるしたいです。
   enterキーを押すたびに新→旧→新→旧みたいにしたいです。

>>2.一番最初にenterキーを押した時点で、その製品コードに対して
>> 何個の標準書番号が存在するのか知りたい
>
> これは、フォームに件数を表示するテキストボックスを
> 設置し、DCount関数で件数を表示(コントロールソース
> にセットする)することにより可能かと思います。

   これもすみません。ひとつの製品コードに対して何件(大体2〜3件)の
   標準書(データ)があるか知りたかったのです。
   Dcount関数を試したら、テーブルにある全レコード数(220件)をカウント
   してしまいました。

>画面構成が良く分からないのですが
   
   私の説明が不十分なために、大切な時間を割いていただいたのに
   申し訳ございませんでした。
   質問する時のポイントなどがあれば、教えて下さい。
  
どうかよろしくお願いいたします。
   

【4391】Re:検索フォーム内でのフォーカス(カーソ...
回答  かろちん  - 05/2/10(木) 0:29 -

引用なし
パスワード
   整理します。
>最新の情報が画面に表示されていてもenterキーを押すたびに
>どんどん古い情報が画面に表示されていき、最後は製品コード(検索に使った)
>以外は空白になります。
これは、
1)単票フォームですか?
2)帳票フォームですか?
3)単票フォームがサブフォームとして張り付いているのですか?
4)帳票フォームがサブフォームとして張り付いているのですか?
5)製品コード入力フォームと、結果表示フォームは分かれているのですか?
画面上には、入力した製品コード以外のデータも抽出されていているような
文書になっていますが、どうでしょうか?

6)Enterキーはどこで入力するのですか?
 製品コードですか?
 標準書番号ですか?
 製品名ですか?
 製品コードですか?
 廃止日ですか?

>   説明不足ですみません。使用者の中でただ一人だけが
>   「古い情報を見たい時がある」という位、使用頻度が少ないので
>   できれば新旧の情報をいったりきたりくるくるしたいです。
>   enterキーを押すたびに新→旧→新→旧みたいにしたいです。
上記の内容から想定するならば、Enterキーを押したタイミングで
DoCmd.GotoRecordで該当するレコードに飛ばしてやればよいように
思います。

>   これもすみません。ひとつの製品コードに対して何件(大体2〜3件)の
>   標準書(データ)があるか知りたかったのです。
>   Dcount関数を試したら、テーブルにある全レコード数(220件)をカウント
>   してしまいました。
これはHELPでDcount関数を調べられましたか?

--以下HELP--------------------------------------------------------
DCount(expr, domain[, criteria])

DCount 関数には、次の引数があります。

引数 内容
expr    対象となるデータが含まれているフィールドを表す文字列式、
      またはフィールドの値の計算を表す式です。テーブルのフィー
      ルド名、フォームのコントロール、定数、組み込み関数、および
      ユーザー定義関数が指定できます。ただし、ほかの定義域集計
      関数や SQL 集計関数は指定できません。

domain   定義域を構成するレコードを指定する文字列式です。
      テーブル名またはクエリ名が指定できます。
criteria  この引数は省略可能です。演算対象となるデータの範囲を指定
      する文字列式です。
      たとえば、SQL 式の WHERE 句を指定できます (語 WHERE は省略
      します)。
      引数 criteria を省略すると、定義域全体に対して expr が適用
      されます。
      criteria に含まれるフィールドが domain のフィールドでない
      場合、DCount 関数はNull 値を返します。
------------------------------------------------------------------
したがって、検索するデータの件数は、画面で入力した製品コードの数を
カウントすることになるため。

DCount("製品コード","クエリー名","製品コード=" & Froms!フォーム名.製品コード)
製品コードが文字型なら
DCount("製品コード","クエリー名","製品コード='" & _
            Froms!フォーム名.製品コード & "'")
になると思います。

【4405】Re:検索フォーム内でのフォーカス(カーソ...
お礼  mako  - 05/2/10(木) 17:22 -

引用なし
パスワード
   かろちんさんへ
ありがとうございました。

DCountの方は、ばっちりできました!
HELPの解析はまだ不十分ですが。。。きちんと理解できるようにします。
ありがとうございました。

GotoRecordの方は、今日一日試みましたがあまり進めませんでした。
また月曜日に引き続き挑戦してみます。

それからフォームのこと、まったく説明していなかったことに初めて
気づきました。

単票フォームに帳票フォームがサブフォームとして張り付いています。
帳票フォームに表示されるデータは、別のテーブルのデータです。

>画面上には、入力した製品コード以外のデータも抽出されていているような
>文書になっていますが、どうでしょうか?

その通りです。テーブルの全ての情報(文書番号と型式と製品コードと制定日)が
一気に表示されます。
その情報(各々の文書番号)に対する改訂の履歴を別のテーブルで管理しているので
それをサブフォームで表示しています。

>6)Enterキーはどこで入力するのですか?

検索用のテキストボックスに製品コードを入力した後です。

本当にありがとうございました。
あとひとつ、がんばります。

【4420】Re:検索フォーム内でのフォーカス(カーソ...
質問  mako  - 05/2/14(月) 17:08 -

引用なし
パスワード
   かろちんさんへ。こんにちは。

GotoRecordがうまくできません。
原因は私がGotoRecordのことをわかっていないからです。
HELPの理解も、どうもちゃんとできていない感じです。

本当にすみませんが、どうかもう一度質問しなおさせてください。
本などを読んでも、ひとつ前や次や新しいレコードに移動する
方法は書いてあるのですが、元のレコードに戻す方法がわかりません。

enterキーは検索用のテキストボックスに、製品コードを入力した後に押し、
画面にデータが表示されます。
その後もキーを押すたびにひとつ前の古いデータが画面に表示されるという
感じです。
一番古いデータが表示された後は、フォーカス(カーソル?)が製品コードの
テキストボックスのところに移り画面は空白になります。
一番古いデータが表示された後、空白にならないで一番新しい(はじめの)
データを表示するようにしたいです。
GotoRecord,,の後に何と書けばいいのでしょうか?
すみません。どうかお願いいたします。

【4421】Re:検索フォーム内でのフォーカス(カーソ...
回答  かろちん  - 05/2/15(火) 0:47 -

引用なし
パスワード
   >一番古いデータが表示された後、空白にならないで一番新しい(はじめの)
>データを表示するようにしたいです。
>GotoRecord,,の後に何と書けばいいのでしょうか?

  DoCmd.GoToRecord acDataForm, Me.Name, acFirst

これか

  DoCmd.GoToRecord acDataForm, Me.Name, acGoTo, 1

これで可能かとおもいますが。

【4424】Re:検索フォーム内でのフォーカス(カーソ...
お礼  mako  - 05/2/15(火) 11:51 -

引用なし
パスワード
   かろちんさんへ
こんばんは!!

ありがとうございました、できましたぁ!!(o^o^o)
すごくすごく嬉しいです。
>
>  DoCmd.GoToRecord acDataForm, Me.Name, acFirst
>  DoCmd.GoToRecord acDataForm, Me.Name, acGoTo, 1
>
>これで可能かとおもいますが。

はいっ。このどちらも私が思っていた通りにうごきました。
途中で何回も挫折しそうになりましたが、私の超初心者で
的外れな質問に、毎日必ずお返事を下さったおかげで
最後までできました。
いつも遅い時間に、貴重な時間を使っていただいて、
感謝しています。
本当に本当にありがとうございました。

1967 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078270
(SS)C-BOARD v3.8 is Free