出産前後の痔にはご注意!

クエリ計算の小数点以下の四捨五入は、項目ごとに自由に切り上げにしたり、切り捨てにしたり設定できるのですか。

それともクエリではなくフォームやレポートの設定で行うのでしょうか。

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

A 回答 (2件)

>項目ごとに自由に切り上げにしたり、切り捨てにしたり設定できるのですか


Round関数を使って桁数を指定して四捨五入が出来ます。
切上げ・切捨てはInt関数を使ってできます。これは少し記述が必要ですが切上げ・切捨てはモジュールにユーザー関数として保存すれば簡単に使うことが出来ます。
(四捨五入もIntを使って出来ますが)

>クエリではなくフォームやレポートの設定で行うのでしょうか
クエリでもフォームでもレポートでも設定できます。

ちなみにテーブルでは小数点以下表示桁数の指定でその桁で数字が丸められます。
    • good
    • 0
この回答へのお礼

ありがとうございます
難しそうですがInt関数、ROUND関数、勉強してみます。
助かりました。

お礼日時:2005/09/30 09:44

クエリ上でも四捨五入や桁数の調整は出来ますよ。


ACCESSのバージョンによっても方法が違ってくると思いますが
2000以降のバージョンだとROUND関数もあります。

また、おっしゃるようにフォームやレポートでも調整できます。
    • good
    • 0
この回答へのお礼

ありがとうございました
ROUND関数、勉強してみます。

お礼日時:2005/09/30 09:41

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

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

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

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

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

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

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

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

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

Aベストアンサー

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

Qアクセスの集計クエリの件

アクセスのクエリを使って集計計算をする際、エクセルで言うround関数のような処理をする方法はありますか。あれば教えてください。ヨロシクお願いします。

Aベストアンサー

>アクセスのクエリを使って集計計算をする・・・

集計計算とは、クロス集計のことですか?
普通の選択クエリでの計算でしたら、INT関数を使えば
ROUND関数のような処理ができます。

小数点以下四捨五入:INT([フィールド]+0.5)
小数点以下切り捨て:INT([フィールド])
小数点以下切り上げ:INT([フィールド]+0.9)
上記式で、小数点第一位で処理ができます。

小数点以下二位とか十の位での処理は、一工夫必要です。

質問の意味が違っていたらごめんなさい。

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)

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

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アクセス集計クエリでの書式設定

アクセス2000を使っています。

テーブルにある「金額」フィールドをグループごとに合計する、集計クエリを作成したのですが、「金額の合計」の書式をコンマ区切りにしたいのですがどうしたら良いでしょうか?

デザインビューで「金額の合計」のプロパティの書式にコンマスタイルにしたのですが、表示形式は変わりません。

「金額」フィールドはテーブルで設定している通り、コンマスタイルになっているのですが・・・。

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

Aベストアンサー

舌足らずでした。
書式設定する場所はクエリの集計行の位置で右クリックからプロパティに入ります。

QAccessでテキスト型→数値型への変換方法

Access2000を使用しており、クエリを作成しています。
テーブルから[回答]というフィールドをひっぱってきています。
フィールド[回答]にて、最初の3文字に対応時間を入れており、
Mid関数にて対応時間を抽出しました。

対応時間:Mid([回答],1,3)

しかし、Mid関数でとったフィールドは文字列として認識されています。(Ex:001など)
この文字列を数値に変換する関数、又は方法などお教えくださいませ。
よろしくお願い致します。

以下にイメージ図を記載致します。
=================================
回答            対応時間
001 ●●●~        001
=================================
(対応時間を数値で扱えるようにしたい、ということです)

Aベストアンサー

対応時間が、整数(-32,768 ~ 32,767)であれば、

対応時間:CLng(Mid([回答],1,3))


また、長整数(-2,147,483,648~2,147,483,647)であれば、

対応時間:CLng(Mid([回答],1,3))

とすればokのハズです。

Qアクセスのデータ型。数値型についてお聞きしたいのですが・・・

アクセスのデータ型。「数値型」ですが、「フィールドサイズ」に

(1)バイト型(0~255の範囲。小数点以下の数値は扱えない)
(2)整数型(-32,768~32,767の範囲。小数点以下は扱えない)
(3)長整数型(-2,147,483,648~2,147,483,647の範囲。小数点以下は扱えない)
(4)単精度浮動小数点型(-3.402823×10^38~3.402823×10^38の範囲。
            小数点以下の数値が扱える)
(5)倍精度浮動小数点型(-1.79769313486231×10^308~-1.79769313486231×
           10^308の範囲。少数点以下の数値が扱える)
(6)十進型(-10^28-1~10^28-1の範囲。小数点以下の数値が扱える)

と6種類決められますが、それぞれの「選び方の違い」と「その理由」を
教えてください。

たとえば、(1)~(3)くらいなら分かります。
扱える数値の桁数が違うということですよね?で、(1)~(3)を選ぶ時と(4)~(6)を
選ぶときで大きな違いというと、「小数点以下の数値が扱えるかどうか」
ですよね?そういう認識であっているか・・・ということと、上記の(1)~(6)を
「選び分ける必要がある場合」というのを教えてください。

なぜ、このような6種類に分かれているのか、人に説明しないとなりません。

よろしくお願い致します。m(_ _)m

アクセスのデータ型。「数値型」ですが、「フィールドサイズ」に

(1)バイト型(0~255の範囲。小数点以下の数値は扱えない)
(2)整数型(-32,768~32,767の範囲。小数点以下は扱えない)
(3)長整数型(-2,147,483,648~2,147,483,647の範囲。小数点以下は扱えない)
(4)単精度浮動小数点型(-3.402823×10^38~3.402823×10^38の範囲。
            小数点以下の数値が扱える)
(5)倍精度浮動小数点型(-1.79769313486231×10^308~-1.79769313486231×
           10^308の範囲。少...続きを読む

Aベストアンサー

整数型と浮動小数点型の大きな違いは、少数点以下の数字を扱えるかどうかで合っていると思います。
補足すると、浮動小数点型の方が整数型より大きい数字が扱えます。
長整数型なら21億くらいまでしか扱えませんが、浮動小数点型なら、兆、京・・・と非常に大きい数字が扱えるようになります。
有効数字として、どのくらいのケタを保持できるかが、精度になります。
倍精度は単精度の倍の精度です(当たり前ですが)

コンピュータが2進数で数字を表現していることはご存知のことだと思いますが、2進数で少数を表す場合、必ずしも10進数の少数と一対一に対応するわけではありません。2進数を10進数に直すのはnビットめの数字(0,1)*2のn乗の和ですが、少数の場合は-n乗になります。つまり1/2+1/4+1/8っていうような感じになります。0.75だったら、1/2+1/4で表現できますが、0.3とかになると1/4+1/32+・・・という感じできっちり表現しきれないので、0.299・・・という近似値になります。

それで問題があるようでしたら、十進型を使えば?ってことだと思います。

整数型と浮動小数点型の大きな違いは、少数点以下の数字を扱えるかどうかで合っていると思います。
補足すると、浮動小数点型の方が整数型より大きい数字が扱えます。
長整数型なら21億くらいまでしか扱えませんが、浮動小数点型なら、兆、京・・・と非常に大きい数字が扱えるようになります。
有効数字として、どのくらいのケタを保持できるかが、精度になります。
倍精度は単精度の倍の精度です(当たり前ですが)

コンピュータが2進数で数字を表現していることはご存知のことだと思いますが、2進数...続きを読む

QAccess サブフォームでの選択行の取得

こんにちは。

Access初心者です。

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

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

Aベストアンサー

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

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

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


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

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

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

Me.CurrentRecord

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

Qクエリで合計を出したい。。

こんにちは。
初歩的な質問で申し訳ありませんが、回答お願いします。
アクセスで売上をつけています。
地区ごとのクエリで合計を出したいのですが

社名  地区  売上
A社 ○○地区 1000
B社 ○○地区 2000 
C社 ○○地区 3000
D社 ○○地区 4000
E社 ○○地区 5000

という感じなんですが
どこかのセル(アクセスでもセルと呼ぶのでしょうか^_^;?)に売上の合計(ここでは15000です)が出るようにしたいのですが・・・。

Aベストアンサー

地区ごとの合計を出したいのなら、
クエリを作成し、該当するテーブルを選び
「地区」、「売り上げ」を選択して
右クリックして「集計」をクリックし
「地区」の集計を「グループ化」
「売り上げ」の集計を「合計」にする。

SQLビューで見ると

SELECT 地区名, Sum(売り上げ) AS 合計 FROM テーブル名 GROUP BY 地区名;

といった感じかな。


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

人気Q&Aランキング