忙しい現代人の腰&肩のお悩み対策!

こんにちはアクセス2000で管理表をつくっています。

「工事マスタ」
工事ID、顧客ID、工事部門、契約日、請負額、追加額(以下略)
「顧客マスタ」
顧客ID、顧客名(以下略)
などがあり、工事マスタを基にクエリAを作成し、
それをコントロールソースにもつフォームAを作成しました。

フォーム上のボタンやテキストボックスで
レコードの抽出(フィルタ)を行いたいのですが
いろいろ調べてみましたが、初心者なもので
どう手をつけていいのかわからず困っています。
やりたいことは

1)工事部門(1・2)で、(1)のみのレコードを表示する
その検索方法をコンボボックスでつくりたい

2)発注者名で検索をかけ、該当するレコードのみを表示する
その検索方法をテキストボックスでつくりたい

3)契約日のソートをかける実行ボタンを配置したい

4)「請負額」「追加額」にそれぞれ消費税を計算して、その合計額「請負額+追加額+請負税+追加税」の《総合額》を自動計算しています。
その《総合額》の¥●●●~¥●●●という範囲に値するレコードを抽出したい

です。
説明が足りない部分もあるかと思いますが
どなたかご存知の方お知らせくださいませ。

また、参考サイトなども教えていただけると助かります。
どうぞよろしくおねがいします。

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

A 回答 (5件)

1)はフォーム上の「工事部門」フィールド上で右クリックして


 「フィルタの対象」に1を入れてEnter。
2)もフォーム上の「発注者名」フィールド上で右クリックして
 「フィルタの対象」に「名前」か「*名前の一部*」を入れてEnter。
3)は「契約日」フィールド上で右クリックして、降順・昇順お好きな方で並べ替え。
4)はフォーム上の「総合額」フィールド上で右クリックして
 「フィルタの対象」に「Between 金額 And 金額」と入れてEnter。

こうすればプログラムを一行も書くことなく、
というか特に何もしなくても、目的が達成できると思います。
フォームフィルタの機能でもいいですしね。

Accessだと、ついつい、無駄なコマンドボタンやコンボボックスを作って
しまいがちですが、出来合い機能をきちんと知り、
効率よくコーディネイトして使うことを
考えるほうが、お仕事にプラスですよ(^^)

右クリックでのフィルタは非常に重宝しますので、
下手に機能追加するより、右クリックフィルタの説明書書いたほうが
あとあとも、全てのフォーム、クエリ、テーブルに使用でき、
圧倒的に効率的です。

右クリックの「選択フィルタ」はドラッグした語句での絞込みも出来ます。
で、
・テキストの先頭でドドラッグして「選択フィルタ」を押せば前方一致、
・末尾だけをドラッグすれば後方一致、
・先頭でも末尾でもない中ごろを部分的にドラッグすれば部分一致(あいまい一致)で
絞り込まれます。(フィルタがかかります)
フィルタ/並べ替えの解除、でもとに戻ります。

ご存知でしたでしょうか?
    • good
    • 0
この回答へのお礼

ご丁寧なアドバイスありがとうございます。
右クリックでのフィルタは私は知ってたのですが
アクセスを全く知らない人が触るのと
フォーム上でどうにかしたいという上からの命令で
困っています。。
もう少し試行錯誤してみますね
ありがとございました!

お礼日時:2009/01/23 01:08

#1です。


他の回答者の邪魔をしたくないので、本題の回答は控えます。

別に不愉快な思いはしていません。
むしろあなたの素直な態度がうれしいです。

質問には、過程や背景についてある程度の説明が必要だと思います。
丸投げであったり、唐突なものであってはいけないのです。

これからもよい質問を心がけてください。
そういう質問にはよい回答があるはずです。

以上
    • good
    • 0
この回答へのお礼

こんばんは ご丁寧にお返事いただき、ありがとうございます^^
長くなるとややこしくなるかなと簡潔に質問したつもりが
かえって、配慮のない質問になってしまい、反省しております。

よい質問にはよい回答。そうですよね。

言葉選びが不得手でお恥ずかしい限りですが、
よい質問を心がけていきたいと思います
ありがとうございます

お礼日時:2009/01/30 01:39

すみません。

訂正です。

●並べ替えをする場合
「OrderBy」プロパティで並べ替え条件の設定(=指定)をします。
で、「FilterOn」プロパティでフィルタを適用/解除します。




●並べ替えをする場合
「OrderBy」プロパティで並べ替え条件の設定(=指定)をします。
で、「OrderByOn」プロパティで並べ替えを適用/解除します。

でした。

ご迷惑をおかけして
誠に申し訳ありませんでした。

ではでは(^^)
    • good
    • 0

VBAですと・・・、


●フィルタをかける場合
「Filter」プロパティでフィルタ条件の設定(=指定)をします。
で、「FilterOn」プロパティでフィルタを適用/解除します。

●並べ替えをする場合
「OrderBy」プロパティで並べ替え条件の設定(=指定)をします。
で、「FilterOn」プロパティでフィルタを適用/解除します。

以上をコマンドボタンのクリックイベントや
テキストボックスの更新後処理イベントなどに書きます。


Access filteron
Access orderbon
などの語句でGoogle検索等すればいろいろとサンプルが出てきます。
ご参考にしてください。

http://www.mahoutsukaino.com/ac/ac2000/ac2000/ke …

など。




>アクセスを全く知らない人が触るのと
>フォーム上でどうにかしたいという上からの命令で
>困っています。。

うーん、ということですと、なおさらフォーム上での右クリックがおすすめなんですが・・・(^^)

私なら以降のように上司に言ってしまって、できるだけ作りこみはしないです。面倒くさいから。

(01)右クリックの操作説明書を書いてまず上司の方にお見せします
(02)実際に操作します。   
(03)そして次のような説明をします。
   この右クリック機能はすべてのAccessファイルで使える共通操作で、かつ、
   一番効率よく、安く作れます(時間ゼロでタダで作れます)。
   操作は簡単だから忘れても説明書見ればすぐに誰でも思い出せます。
   また、無理に覚える必要はありません。
   この操作説明書は全員にお配りしますので。

   他の機能の追加では、込み入った作りこみが発生し、色々と面倒です。
   もちろん作れといわれれば作りますが、結局色々と作りこんでも
   この機能以上効率の良い操作ができないケースも少なくないです。
   もし、それでもよければ、「これとほとんどかわらない機能」を
   時間をかけて作りますけど、本当にいいですか?


という感じです。

で、それでも
「多少の時間(もしくは費用)がかかってもいい。やっぱり作ってくれ」と
上司がおっしゃるなら、作ります。

その際は前述のプロパティを使って、VBAでどのフォームからでも呼び出して使えるような汎用的なものを作成します。

抽出作業の頻度が少なければなおさら、Accessのできあい機能を使います。

正直なところ、
「パソコン使うんだったらワイルドカードとBetweenと、 <、 >、#、""、''、 くらい使えるようになってくれよ。それだけでいいんだから。それだけ覚えてくれるだけで、どれだけ無駄な作りこみが減らせるかわからないよ。」
という思いにかられることも多いです(^^)

無駄話、誠にすみませんでした。

がんばってくださいね(^^)
    • good
    • 0
この回答へのお礼

こんにちは
インフルエンザにかかってしまい、
お礼が遅くなりまして大変失礼いたしました。
すごくご親切に回答いただき、感謝しています
ありがとうございます!
職場復帰したら、いろいろためさせていただきますね
右クリック。。。そうなんですよね
私もそのほうが簡単だ~!と心の中で叫んで一応説明もしたのですが
「それでもやってくれ」の回答だったので はいと言うしか。。苦笑
楽しい横道話もありがとうございました^^

お礼日時:2009/01/30 01:34

申し訳ないけど、どこまで勉強してるのかな。



「課題の丸投げ」は禁止行為って知っていますよね。

とにかく参考書籍を読み漁って勉強する、自分で試すこと。
それからでないと、回答できませんよ。

以上
    • good
    • 0
この回答へのお礼

こんにちは 課題の丸投げが禁止行為だとは知りませんでした
アクセスは1級程度ですが、ブランクがあるので初心者と変わりません。
参考書も読みあさり、ネットでも検索し、
いろいろ自分でも触っているのですが時間が限られているのと
色々エラーなども起きたので、
過程を説明するとややこしくなりそうなのと
少しのヒントでも得られればと思って質問させていただきました。
私の質問で不愉快な思いをさせてしまってすいません。

お礼日時:2009/01/23 01:13

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

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

この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

QACCESS フォームで抽出したデータのみをレポートで表示したい

初歩的な質問だとは思いますが、どうしてもできないので教えてください。

フォームで抽出条件をメインフォーム抽出結果をサブフォームに表示するフォームを作成しました。
このサブフォームで抽出したものだけをボタンをクリックするとレポート表示するように作りたいのですができません。

どうすればいいでしょうか?

Aベストアンサー

>レポートのプレビューで出力ボタンを作成したのですが、全てのデータが表示されます。
レポートのプレビューで出力ボタンを作成??意味が不明ですが。
>抽出条件を入力しても同じです。
レポートのレコードソースは抽出条件が入っているのでしょうか?抽出条件がなければ全レコード出力されてしまいます。
抽出条件はどのように入れてあるのでしょうか。
レポートのプロパティでレコードソースの右のボタンをクリックするとSQLステートメントが開きますので抽出条件のフィールドの抽出条件に
=[Forms]![メインフォーム名]![抽出条件のコントロール名]
と記述してください。(メインフォーム名・抽出条件のコントロール名は実際の名前に変えてください)
メインフォームにレポートを出力するボタンを作りそのレポートを設定すれば出来ます。

QAccessのレポート機能でソート&抽出条件を指定したい

accessでレポート機能について、質問です。
エクセルでいうフィルタ機能みたいなものはあるのでしょうか。

例えば、以下の場合、職位="B"だけレポートで表示したい場合、
どうすればよいのでしょう?
CD 職位 所属
01  A  東京
02  B  東京 → このデータだけを表示
03  A  大阪

1)クエリを作って、レポートで表示するしかないのでしょうか?
2)レポートのデザインで条件指定ができるのでしょうか?

ソートの条件も変えたいのですが、どの項目をソートするかは、
どこで指定できるのでしょうか?

要はレポートの形式は1つで、様々な抽出条件とソート条件で
レポート表示したいのです。

Aベストアンサー

>1)クエリを作って、レポートで表示するしかないのでしょうか?
>2)レポートのデザインで条件指定ができるのでしょうか?
レポートのデザインで、レポートのフィルタプロパティで、職位="B"として、フィルタ適用を"はい"にすると言う方法もあります。

>ソートの条件も変えたいのですが、どの項目をソートするかは、
>どこで指定できるのでしょうか?
レポートのデザインの「並べ替え/グループ化の設定」で行います。

>要はレポートの形式は1つで、様々な抽出条件とソート条件で
>レポート表示したいのです。
1つレポートの雛形を作って、フィルタと並べ替えのプロパティと並べ替え/グループ化の設定を変えて保存し、複数のレポートを用意する。
入力した値によって変えたい場合は、フォーム上のテキストボックスの値や特定テーブルのレコードの値にを参照するクエリを作り、レポートのレコードソースにする。
またはVBAで処理する。

p.s.
レポートの表示をボタンで起動する場合、VBAやマクロを呼び出します。
VBAやマクロでレポートを開く時に、フィルタやWhere条件式を設定できます。

>1)クエリを作って、レポートで表示するしかないのでしょうか?
>2)レポートのデザインで条件指定ができるのでしょうか?
レポートのデザインで、レポートのフィルタプロパティで、職位="B"として、フィルタ適用を"はい"にすると言う方法もあります。

>ソートの条件も変えたいのですが、どの項目をソートするかは、
>どこで指定できるのでしょうか?
レポートのデザインの「並べ替え/グループ化の設定」で行います。

>要はレポートの形式は1つで、様々な抽出条件とソート条件で
>レポート表示した...続きを読む

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

QACCESS で マクロの中でフィルタを使用する方法

ACCESS初心者です
フォームを使用してテーブルのデータを単にマクロでフィルタ実行をかけて検索をしたいのですが、where条件式のところで文字列をあいまい検索したいのです。(フォームでテーブルの項目の一部を入力して検索をかけたい)like * を使用したいのですが記述の方法がわかりません。教えてください。
よろしくお願いいたします!

Aベストアンサー

No.2です。

> 現在[顧客マスタ]![顧客カナ]=[Forms]![顧客情報検索]![顧客カナ] と式を入れている

「顧客情報検索」フォームの「顧客カナ」コントロールの値であいまい検索をしたい、ということですね。
でしたら、以下のように変えれば可能になると思います。

現在:
[顧客マスタ]![顧客カナ]=[Forms]![顧客情報検索]![顧客カナ]
変更後:
[顧客マスタ]![顧客カナ] Like "*" & [Forms]![顧客情報検索]![顧客カナ] & "*"


これで、「顧客カナ」に入力した文字列を含むものを検索できます。
なお、「先頭一致/後方一致をユーザーが選択できるようにしたい」という場合は、

変更後:
[顧客マスタ]![顧客カナ] Like [Forms]![顧客情報検索]![顧客カナ]

としておいた上で、ユーザーに「*」を含めて入力してもらう、というのが、プログラムを
組む側としては一番簡単かと思います。
(「モリ」を含む場合は「*モリ*」、「モリ」で始まる場合は「モリ*」、「モリ」で終わる場合は
 「*モリ」、「モリ」の完全一致の場合は「モリ」と、それぞれ入力してもらいます)

No.2です。

> 現在[顧客マスタ]![顧客カナ]=[Forms]![顧客情報検索]![顧客カナ] と式を入れている

「顧客情報検索」フォームの「顧客カナ」コントロールの値であいまい検索をしたい、ということですね。
でしたら、以下のように変えれば可能になると思います。

現在:
[顧客マスタ]![顧客カナ]=[Forms]![顧客情報検索]![顧客カナ]
変更後:
[顧客マスタ]![顧客カナ] Like "*" & [Forms]![顧客情報検索]![顧客カナ] & "*"


これで、「顧客カナ」に入力した文字列を含むものを検索できます。
なお...続きを読む

QAccessのフォームで思った順番でレコードが表示されない

こんにちは
Accessのフォームで受注管理を作成しています。
メインフォームには
・伝票番号
・顧客番号、顧客名
・担当部署、担当者名
サブフォームに
・明細番号、商品ID、商品名、単価、個数、金額
としていますがフォームを開くと伝票番号順にレコードが並ぶのが希望なのですが顧客番号順に並びます。
例)希望
伝票No 1  顧客番号 001 ・・・・・
伝票No 2  顧客番号 010 ・・・・・
伝票No 3  顧客番号 009 ・・・・・
伝票No 4  顧客番号 001 ・・・・・

現状
伝票No 1  顧客番号 001 ・・・・・
伝票No 4  顧客番号 001 ・・・・・
伝票No 3  顧客番号 009 ・・・・・
伝票No 2  顧客番号 010 ・・・・・

伝票番号順にしたい場合どこを確認すればよいかご存知の方がおられましたらご教示いただけますようお願いいたします。

Aベストアンサー

Access(データベース)ではレコードの順番というものはありません
何も指定しなければ見つかった順に表示します
顧客番号順というのもたまたまそうなっているだけです

伝票番号順に表示したければそういう並べ替えを指定したクエリをフォームのソースに指定します

Qアクセスのフォームで期間検索するには?

アクセスの検索フォームで、レコードを別フォームで表示して、表示したフォームでフィールド毎に検索しています。

日付の部分だけ、検索方法が分からず、なかなか出来ない状態です。

このフォームに、開始と終了のテキストボックスを設置しています。
ボタンを押して、開始と終了の期間のデータを表示出来ればと思います。

宜しくお願いします。

Aベストアンサー

>日付フィールドは、日付/時刻型でyyyy/mm/ddで入力しています。
ということですから

Private Sub 期間検索_Click()

Me.Filter = "日付 Between #" & Me.[開始] & "# And #" & Me.[終了] & "#"
Me.FilterOn = True

End Sub

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QACCESS フォームで入力した日付をクエリで読み

ACCESS フォームで入力した日付をクエリで読み替えたい

ACCESS フォームで入力した日付をクエリで使用しているテーブルの書式に変換したい

フォーム テキスト名:日付にyyyymmdd で入力します

クエリ テキスト名:日付はパラメータとして使用しています
クエリ内で使用しているテーブルの日付書式は 日付:yyyy/mm/ddです

パラメータは 「日付始」と「日付終」の2箇所のテキストに入力されたデータを使用しています。以下がパラメータです。

Between [Forms]![フォーム]![日付始] and [Forms]![フォーム]![日付終]

フォームのテキストボックスにyyyymmddと入力してもクエリでエラーが出ることない パラメータを日付に設定したいのですがどうしたらよいでしょうか?

ちなみに、以下の式を入れたらエラーです。

Between CDate(Format([Forms]![フォーム]![日付始],"yyyy/mm/dd")) and CDate(Format([Forms]![フォーム]![日付始],"yyyy/mm/dd")) と入力しましたところ、、、、「式が複雑すぎるか、、、」のエラーメッセージが出てしまいました。
どなたか助けてください。お願い致します。

ACCESS フォームで入力した日付をクエリで読み替えたい

ACCESS フォームで入力した日付をクエリで使用しているテーブルの書式に変換したい

フォーム テキスト名:日付にyyyymmdd で入力します

クエリ テキスト名:日付はパラメータとして使用しています
クエリ内で使用しているテーブルの日付書式は 日付:yyyy/mm/ddです

パラメータは 「日付始」と「日付終」の2箇所のテキストに入力されたデータを使用しています。以下がパラメータです。

Between [Forms]![フォーム]![日付始] and [...続きを読む

Aベストアンサー

> Between [Forms]![フォーム]![日付始] and [Forms]![フォーム]![日付終]
これで合ってると思います。

> クエリ内で使用しているテーブルの日付書式は 日付:yyyy/mm/ddです
フォームの値が正しく日付として認識できてますか?
YYYYMMDDのつもりで8桁の入力なら、ダメですよ。
YYYYMMDDのつもりの8桁の入力なら、betweenを設定する日付の列をformat文で
yyyymmddに編集してテキスト同士として比較するとか。

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


人気Q&Aランキング