Q.こんなとき、何使えばいいの? 関数逆引き集!

 

関数のHelpって、関数の名前がわからなきゃぁ使えませんよね。
でも、「関数の名前知ってるなら苦労しない」んですよ実際問題。

ここでは、関数の名前と機能の概要しか説明していませんので、使用方法などの詳細は必ずHelpで確認してください

 

・関数の一覧って、どっかにないの?

Helpのトピックの検索で、「関数」-「リファレンス トピック」をごらんください。
アルファベット順の一覧を見ることが出来ます。
 
...と長い間書いていましたが、なに最近の Access 2010 とやらは。関数の一覧が見つけられないじゃんマジデ。 しかたがないので、Access 2007 の関数一覧 をご紹介します。これもいつ URL 変わったりするかわかったもんじゃないね。

・日付の表示される形がマシンによって違います。
・数値を前ゼロづめで表示したいんですが・・・
・日付・時刻型の項目で、時刻だけを表示したいんです。
・通貨型の項目でないと、¥マーク表示ってできないですか?

「書式」プロパティで対応できない、表示形式の編集には「Format関数」を使いましょう。
さまざまなデータ型をさまざまな表示形式で現すことが出来ます。すごくよく使います。




・検索条件として入力した商品コードに対応する名前を商品マスタから表示させたいんですが、非連結コントロールなので結合による表示は利用できません。
・同じ伝票NOですでに入力してある値を初期値で表示しておきたいんですが、結合ではできませんよね?

こんなときには、「DLookUp関数」を使いましょう。
あるテーブル(クエリーでも可)に条件を与えて、最初にHITしたレコード(1レコードだけ対象になるのが理想ですが該当レコードが複数件でもOK)の指定した項目(指定できるのは1つだけ)の値を返す関数です。
使いようによってはとても便利ですが、クエリー内で使うと対象件数によっては使い物にならないぐらい遅くなってしまいますので避けたほうが無難です。
フォームやレポートなどでとてもよく使われます。なぼは、わざわざレコードセットを作らなくてもデータを参照できるのでちょっとデータの整合性を確認したい時などにお手軽に使ってしまいます。




・該当件数を処理する前に把握したいんですが・・
・レポートのグループフッターに、そのグループ内の表示件数を出したいんですが。
・フォームヘッダーに、サブフォームの合計値を出したい。

「DCount関数」「Count関数」「DSum関数」「Sum関数」を使いましょう。
「Sum」は、ある項目の合計値をとる関数、「Count」は件数を数える関数です。
頭に「D」がつく関数は、任意のテーブル(またはクエリー)の任意の条件に該当する件数、または任意の項目の合計値を返します。処理中のフォームやレポートではまったく参照していないテーブル・クエリーの件数も数えることができます。
「D」がつかない関数は、主にフォーム・レポートのフッター・ヘッダーで使います。グループヘッダー・フッターで使えば、そのグループ内の該当件数、ある項目のグループ内での合計値を表示できます。ページヘッダー・フッターでも利用できます。
「D」がつかない関数で処理できる場合は、「D」がつかない方を利用したほうが高速に処理できます。

こういった関数を「集合関数」と呼ぶ場合がありますが、集合関数には他に最大値を求めるMax関数最小値を求めるMin関数などがあります。




・絶対値って表示できます?
・三角関数の計算は?
・小数点以下の切り捨ては?Logの計算は?乱数は?

Helpで、「Math関数」と入力してみてください。使えそうな関数がきっと見つかります。




・計算結果が桁あふれするので、データ型を変えたいんです。
・テーブルでは長整数で定義したんですが、割り算すると誤差が出ます。通貨型に変更しないと駄目ですか?

データ型を変更する関数は、頭に「C」がつきます。
「Ccur関数」「CDbl関数」「CDate関数」等。
ただし、浮動小数点型を整数型に変える「CInt関数」は、Int関数とは小数部のまるめ処理が若干違っています
小数点以下を切り捨てたい場合には「CInt関数」を使わずに「Int関数」を使うようにしてください。
Helpで「データ型」「変換」で検索すると、変換関数の一覧が出てきますので参考にしてください。



・日にちと日にちの間を求めるには、どうしたらいいんですか?

「DateDiff関数」を使います。間隔を年数で求めたり、日数で求めたり、週で求めたりできます。
その他、「何ヶ月後」「何年後」「何日後」を求める関数は「DateAdd関数」、年・月・日だけを取り出す関数は「DatePart関数」(Format関数、Year・Month・Day関数でもOK)等、日付に関する関数はいろいろ用意されています。



・英語大文字が混じっているので、すべて小文字にしたいんですが・・
・半角文字が入っていたら全角に変更したい。
・かたかなをひらがなに変更するなんて、できませんよね?

「StrConv関数」を使いましょう。
ただし、漢字で入力されているものをひらがなに変更する、なんてことは当然できません。




・先頭の5文字だけ取り出すことはできそうだけど、15文字目から2文字なんてできる?
・同じ文字を指定した数だけ繰り返したいんだけど、その回数が場合によって変わるんです。

「Left関数」で、文字列の左から指定した文字数だけ取り出すことができます。
「Right関数」で、文字列の右から指定した文字数だけ取り出すことができます。
「Mid関数」で、文字列の指定した場所から指定した文字数だけ取り出すことができます。
「String関数」で、指定した文字を指定した数だけ繰り返せます。"-"を、ずらーーーーっと定数で持ちたい時とか、ありますよね?そういう時によく使います。まぁ"-"255個とか直入力しても別にいいですけど(^_^;)




・名称を入力したとき、中にカンマが使われてたらエラーにしたいんです。

「Instr関数」で見つけることができます。上記「Mid関数」「Instr関数」をうまく組み合わせると、任意の文字列内の任意の文字を別の文字(文字数は違ってもOK)に置き換える、なんてモジュールも作れますよ。
(Access2000 からは、文字列の置き換えができる Replace 関数ができました)




・全角・半角の混在をチェックしたいんですが・・

Helpで「文字列操作関数」で検索し、文字列操作関数の動作の違いをよくご覧になってください。

...なんて長いこと書いてましたが、もうヘルプにそんなトピックないじゃん!!ひどい話。
MSDN ライブラリで同内容のトピックを見つけましたのでリンクしときます。
これもいつ URL 変わっちゃうかわかったもんじゃないね。

結構 StrConv とか 半角 全角 とかのキーワードで検索する人が多いみたいなので、昔公開してた記事も復活させようとしたんだが、原稿が手元にない... orz
ヘルプに書かれてるからいいやと思って消しちゃったんだよね。ヘルプを信じた私がバカだったよ。
もうちょっと探してみるので待っててください(^^;;


・「月末日」を求める関数ってありますか?

DateAdd("d",-1,Format(DateAdd("m",1,[年月日]),"yyyy/mm")&"/01")
で、どうですか?




・「四捨五入」する関数ってありますか?切り捨ては?切り上げは?

ありません。
Access2000 のヘルプで検索すると、Round 関数がヒットしちゃいますが、これはExcelのワークシート関数なので注意しましょう!まったくヘンなヘルプだよ本当に
0.5を足して、Int関数で整数にしましょう。小数点以下第何位を四捨五入したい、というなら10を掛けて小数点以下1位で計算後、またもとの位に戻しましょう。(つまり10で割っていく)
これを応用すれば、五捨六入だろうが六捨七入だろうが思いのままですね。
また、Format関数を使って四捨五入するという方法もありますが、Format関数の戻り値はString属性のVariant型(Format$関数はString型)なので、結果を計算に使いたいときには不向きかも・・・?
例:Format([単価], "##,##0.0") 小数点第2位で四捨五入した結果が返されます。
[単価]の値が 128.05 だった場合 128.1 が返ります。

ここにサンプルがありますので、自分で作りましょう。→ これ

 

*そんなあなたにお勧め書籍*


Access関数ポケットリファレンス Access2000/2002/2003/2007対応 (Pocket Reference)


やっぱ、紙ベースで読めるモノがあると便利だ。なにかと。

トラックバック(0)

トラックバックURL: http://www.naboki.net/movabletype/mt-tb.cgi/19