Access VBA質問箱 IV

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

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


36 / 500 ページ ←次へ | 前へ→

【12603】Re:データーの型について
お礼  いーぐる428  - 14/8/19(火) 5:25 -

引用なし
パスワード
   かるびのさん、詳細にご回答いただき、本当にありがとうございます。下記の件よくわかりました。
わたくしACCESSやACCESS VBAのまったくの初心者ですが、今週の金曜日までに品目マスター管理プログラム(入力、修正、削除)を書かなければいけないことになっています。かなりハードルが高く、投げ出したくなりますがかるびのさんにご教授いただけることでどれだけ助かっていることか計り知れません。また質問が出てくるかもしれませんが、自分で出来るだけやってみて、どうしてもわからないことがありましたらまた質問いたします。よろしくお願いいたします。

いーぐる428


▼かるびの さん:
>>ただ部品番号フィールドの含まれる「品目マスタ」テーブルの中身をみてみると部品番号フィールドが7桁に満たない場合は頭にゼロが付加されません。数値型ですからしょうがないと思うのですが、例えばレポートで部品番号を印字するときには頭にゼロを付加するなんらかの処置がとれると勝手に思っていますが、
> フォームでやったのと同じことを、レポートでも行えばいいです。
> つまり、レポートにおいて、「部品番号」フィールドをコントロールソースとする
>テキストボックスのFormatプロパティを同様に設定します。
>
>>品目マスタテーブルの部品番号フィールドをの中身を見たときにも頭のゼロを付加することはできませんでしょうか。
> 方法がないわけではないですが、
>テーブルの機能を考えると、そんなことはやらない方がいいと思います。
>
> テーブルは、レコードを保存しておくためのものです。
>レコードを表示するためのものではありませんし、レコードを入力するためのものでもありません。
>この点がエクセルのワークシートとは決定的に異なります。
> アクセスでは、レコードの表示や入力するためのオブジェクトは、フォームです。
> なので、レコードを見易くするための仕掛けをテーブルに設定するのは邪道です。
>
> また、データベース運用中にテーブルを開くような使い方は、やってはいけません。
> 例えば、株式会社の表記法にはいろいろなものがあります。
> 「株式会社」とか、全角括弧に「株」、半角括弧に「株」、
>(株)を1字で表すもの(シフトJISの文字コードで878A)などです。
> これらがバラバラに使われていると、集計のときに困るので、
>半角括弧に「株」以外のものの入力はできないような仕掛けをフォームに作ったとします。
> しかし、テーブルを直接開くと、例えば全角括弧に「株」という入力ができてしまいます。
> その結果、正しい集計ができないという事態に陥ってしまいます。
> なので、普通にデータベースを使っているときに、テーブルを開くような使い方はしてはいけないのです。
>
> テーブルを開くのは、データベースを改造するときに、
>ちゃんとテーブルにレコードが保存されたかどうかをチェックするような場合に限られるはずです。
>
> このように、テーブルはレコードを保存するためのものであって、
>レコードを表示するためのものではないので、
>テーブルでのレコード表示を見易くしたいという希望は、そもそも持つべきではありません。
>
>
> 私の回答は以上となりますが、それでもなお、テーブルにおいて頭のゼロを付加したいということがあるかもしれませんので、それへのヒントに触れておきます。
> 結局はフォームの場合と同じです。
> つまり、テーブルにおけるフィールドのFormatプロパティを、
>フォームと同様に設定してあげるということになります。
> VBAでの設定はできないので、デザインビューで設定します。
>なお、デザインビューでのプロパティシートには、「Format」と表記されたプロパティはなく、
>別の表記になっています。
・ツリー全体表示

【12602】Re:データーの型について
回答  かるびの  - 14/8/19(火) 0:48 -

引用なし
パスワード
   >ただ部品番号フィールドの含まれる「品目マスタ」テーブルの中身をみてみると部品番号フィールドが7桁に満たない場合は頭にゼロが付加されません。数値型ですからしょうがないと思うのですが、例えばレポートで部品番号を印字するときには頭にゼロを付加するなんらかの処置がとれると勝手に思っていますが、
 フォームでやったのと同じことを、レポートでも行えばいいです。
 つまり、レポートにおいて、「部品番号」フィールドをコントロールソースとする
テキストボックスのFormatプロパティを同様に設定します。

>品目マスタテーブルの部品番号フィールドをの中身を見たときにも頭のゼロを付加することはできませんでしょうか。
 方法がないわけではないですが、
テーブルの機能を考えると、そんなことはやらない方がいいと思います。

 テーブルは、レコードを保存しておくためのものです。
レコードを表示するためのものではありませんし、レコードを入力するためのものでもありません。
この点がエクセルのワークシートとは決定的に異なります。
 アクセスでは、レコードの表示や入力するためのオブジェクトは、フォームです。
 なので、レコードを見易くするための仕掛けをテーブルに設定するのは邪道です。

 また、データベース運用中にテーブルを開くような使い方は、やってはいけません。
 例えば、株式会社の表記法にはいろいろなものがあります。
 「株式会社」とか、全角括弧に「株」、半角括弧に「株」、
(株)を1字で表すもの(シフトJISの文字コードで878A)などです。
 これらがバラバラに使われていると、集計のときに困るので、
半角括弧に「株」以外のものの入力はできないような仕掛けをフォームに作ったとします。
 しかし、テーブルを直接開くと、例えば全角括弧に「株」という入力ができてしまいます。
 その結果、正しい集計ができないという事態に陥ってしまいます。
 なので、普通にデータベースを使っているときに、テーブルを開くような使い方はしてはいけないのです。

 テーブルを開くのは、データベースを改造するときに、
ちゃんとテーブルにレコードが保存されたかどうかをチェックするような場合に限られるはずです。

 このように、テーブルはレコードを保存するためのものであって、
レコードを表示するためのものではないので、
テーブルでのレコード表示を見易くしたいという希望は、そもそも持つべきではありません。


 私の回答は以上となりますが、それでもなお、テーブルにおいて頭のゼロを付加したいということがあるかもしれませんので、それへのヒントに触れておきます。
 結局はフォームの場合と同じです。
 つまり、テーブルにおけるフィールドのFormatプロパティを、
フォームと同様に設定してあげるということになります。
 VBAでの設定はできないので、デザインビューで設定します。
なお、デザインビューでのプロパティシートには、「Format」と表記されたプロパティはなく、
別の表記になっています。
・ツリー全体表示

【12600】Re:データーの型について
質問  いーぐる428  - 14/8/18(月) 4:30 -

引用なし
パスワード
   かるびのさん、返信ありがとうございました。Form_Loadイベントがみつからなかったので、Form_Openイベントに

Private Sub Form_Open(Cancel As Integer)
 FBUBAN.Format = "0000000"
End Sub

としてうまくいきました。ただ部品番号フィールドの含まれる「品目マスタ」テーブルの中身をみてみると部品番号フィールドが7桁に満たない場合は頭にゼロが付加されません。数値型ですからしょうがないと思うのですが、例えばレポートで部品番号を印字するときには頭にゼロを付加するなんらかの処置がとれると勝手に思っていますが、品目マスタテーブルの部品番号フィールドをの中身を見たときにも頭のゼロを付加することはできませんでしょうか。ご指導の程、よろしくお願い申し上げます。

いーぐる428
・ツリー全体表示

【12599】Re:データーの型について
回答  かるびの  - 14/8/18(月) 2:13 -

引用なし
パスワード
   >テキストボックスのFormatプロパティを工夫してみても上記のように頭に0を付加して表示することができません。

 Form_Loadイベントで「部品番号」テキストボックスについて
   部品番号.Format = "0000000"
というコードを実行させるか、
 プロパティシートで、「部品番号」テキストボックスの「書式」プロパティに
「0000000」(ダブルコーテーションは付けません)と指定してみてください。
・ツリー全体表示

【12598】Re:データーの型について
質問  いーぐる428  - 14/8/17(日) 17:46 -

引用なし
パスワード
   部品番号のデータ型を数値にすることはできました。

> 第三に、「部品番号」フィールドが長整数型のままでも、
>「部品番号」テキストボックスのFormatプロパティをうまく設定してやれば、
>テキストボックスに「0001234」のように表示させることは可能です。

と教えていただきましたが、テキストボックスのFormatプロパティを工夫してみても上記のように頭に0を付加して表示することができません。ご指導の程よろしくお願い申し上げます。

いーぐる428
・ツリー全体表示

【12597】Re:データーの型について
お礼  いーぐる428  - 14/8/16(土) 4:21 -

引用なし
パスワード
   かるびのさん、いつもいたらないわたくしにご教授いただきまして本当にありがとうございます。返信をよく拝見し、アドバイスに従ってトライしてみます。やはり部品番号は数値型に変更してもらった方がよいようですね。交渉してみます。
これからトライアンドエラーですが、また不明な点がありましたらご指導の程、よろしくお願いいたします。取り急ぎ御礼まで。

いーぐる428
・ツリー全体表示

【12596】Re:データーの型について
回答  かるびの E-MAIL  - 14/8/16(土) 1:38 -

引用なし
パスワード
   >Private Sub Forom_BeforeInsert(Cancel As Integer)
> If Dcount("*","部品マスタ")= 0 then
>   Me.部品番号 = "0000001"
> Else
>   Me.部品番号 = Format(DMax("部品番号","部品マスタ") + 1,"0000000")
> End if
>End Sub
>
>ただし、テーブル定義では部品番号は短いテキスト型になっています。テーブルの部品番号の型を数値型にすれば問題ないのですが、型を変更できないとき、どのようにすればよいでしょうか。

 当方のアクセスは2003ですが、上記のコード(一部誤字がありますが)で
動きました。

 ただ、データ型をシビアに考えていくと、上記のコードには問題がありますね。
 問題となるのは、Else以下です。
 なお、「部品番号」フィールド中の最大の値が「0123」であるとします。

 「部品番号」フィールドはテキスト型ですから、
上記のDMax関数は、テキスト型の値である"0123"を返します。
 上記コードでは、"0123"に1を加えようとしていますが、
テキスト型の値に数値をプラスしようとしても、データ型違いというエラーになるはずです。

 アクセス2003では、暗黙の型変換というのが行われるのでエラーにはなりません。
つまり、"0123"という文字列を、VBAが勝手に数値と解釈してくれるということです。
 2007以降、データ型にはシビアになった、
つまり、暗黙の型変換をあまりやってくれないようになった
と聞いたことがあります。

 対策ですが、DMax関数の返り値はテキスト型なので、これを数値型に変えた上で、
1を加えればいいです。
 CLng関数を使います。


 ただ、「部品番号」フィールドをテキスト型とすることには賛成できません。
おそらく、「部品番号」は、例えば、「1234」ではなく、「0001234」のように表示したい
ということから、テキスト型にしたのだと思いますが、本末転倒です。
 第一に、
「部品番号」フィールドは、7桁の数字からなる文字列をその値とするようですから、
それに要するデータ量は、1レコード当たり、2バイト×7字=14バイトとなります。
他方、これを長整数型にすれば、1レコード当たり4バイトで済みます。
 データベースは、テーブルに何万レコードも格納しますから、1レコード当たり10バイトの差は、
レコード数が多くなるといろいろと効いてきます。

 第二に、コンピュータは、文字列と数値とでは、数値を処理する方が得意です。

 第三に、「部品番号」フィールドが長整数型のままでも、
「部品番号」テキストボックスのFormatプロパティをうまく設定してやれば、
テキストボックスに「0001234」のように表示させることは可能です。

 なので、少なくとも「部品番号」フィールドは数値型とすべきだと思います。


>また、プレフィックス、部品番号、スァフィックスの組で重複は許されません。
>プレフィックス、部品番号、サフィックスが入力された時点で重複レコードがないかチェックし、あればアラーム、なければ続いて部品名等を入力したいです。
 方法としては、2つ考えられます。
 第一に、プレフィックス、部品番号、サフィックスの各フィールドで
複合インデックスを作る方法が考えられます。
 でも、どこかの本に「重複排除のためだけにインデックスを使うのは好ましくない」
と書かれていましたし、私もそう思うので、おすすめできません。
 
 第二に、然るべきイベントで、DCount関数を使って、
同じ組み合わせが既にテーブルに格納されていないかどうかチェックするという方法です。
 使うイベントは、おそらくテキストボックスのBeforeUpdateイベントになると思います。
 また、DCount関数の第3引数に設定する条件式をどう書くかというところもポイントとなります。
・ツリー全体表示

【12595】データーの型について
質問  いーぐる428  - 14/8/14(木) 8:16 -

引用なし
パスワード
   お世話になります。

部品情報が含まれているテーブル「部品マスター」は
プレフィックス  (短いテキスト)
部品番号     (短いテキスト)
サフィックス   (短いテキスト) 
部品名、     (短いテキスト) 
等のフィールドでできています。

今、部品番号を自動的に採番するために以下のような例を参照しました。

Private Sub Forom_BeforeInsert(Cancel As Integer)
 If Dcount("*","部品マスタ")= 0 then
   Me.部品番号 = "0000001"
 Else
   Me.部品番号 = Format(DMax("部品番号","部品マスタ") + 1,"0000000")
 End if
End Sub

ただし、テーブル定義では部品番号は短いテキスト型になっています。テーブルの部品番号の型を数値型にすれば問題ないのですが、型を変更できないとき、どのようにすればよいでしょうか。

また、プレフィックス、部品番号、スァフィックスの組で重複は許されません。
プレフィックス、部品番号、サフィックスが入力された時点で重複レコードがないかチェックし、あればアラーム、なければ続いて部品名等を入力したいです。

上記2点、ご指導の程よろしくお願いもうしあげます。
・ツリー全体表示

【12594】グループヘッダーを常に表示
質問  よし  - 14/7/31(木) 12:19 -

引用なし
パスワード
   こんにちは
どうしても解決できないところがあり悩んでいるので
お力添え願います。

Access2003で

ページヘッダー
グループヘッダー1
  繰越 ○○○○
グループヘッダー2
グループヘッダー3
詳細
グループフッター3
グループフッター2
グループフッター1
ページフッター

↑のようにレポートを作成しており
業者ごとに表示していて
同業者で2ページ目以降はそのページの先頭に1ページの繰越を表示したい
のですが、1ページ目でグループヘッダー1が表示されてからは
グループヘッダー2〜グループフッター2までを繰り返してしまい
2ページ目以降では繰越を表示できません。

グループ番号が1であれば非表示
グループ番号が2以上であれば、前ページの繰越を表示するといった
方法はありますでしょうか?

よろしくお願いいたします。。。
・ツリー全体表示

【12593】Re:累積構成比の算出方法について教えて...
お礼  kai  - 14/7/30(水) 10:50 -

引用なし
パスワード
   ▼独覚 さん:
早々にご返信いただきありがとうございます!
いただいた式を若干手直ししたら、想定通りの値を出力することができました。

Nz(DSum("構成比","テーブルA","大分類 = '" & [大分類] & "' and 中分類 = '" & [中分類] & "' and 品目 = '" & [品目] & "' And 金額 > " & [金額]))+Nz(DSum("構成比","テーブルA","大分類 = '" & [大分類] & "' and 中分類 = '" & [中分類] & "' and 品目 = '" & [品目] & "' and 商品 < '" & [商品] & "' And 金額 = " & [金額]))+[構成比]

ここのところこの処理でずっと悩んでいたので助かりました。
本当にありがとうございました。
・ツリー全体表示

【12592】Re:累積構成比の算出方法について教えて...
回答  独覚  - 14/7/29(火) 15:26 -

引用なし
パスワード
   ▼kai さん:
たぶんなさりたいことは
Nz(DSum("構成比","テーブルA","大分類 = '" & [大分類] & "' and 中分類 = '" & [中分類] & "' and 品目 = '" & [品目] & "' And 金額 > " & [金額]))+[構成比]
だと思いますがこれだと例の大分類が「◯」の場合のように商品以外が同じ(金額も同じ)
場合に両方とも「50%」になってしまいます。

それの対策も入れてみたものが
Nz(DSum("構成比","テーブルA","大分類 = '" & [大分類] & "' and 中分類 = '" & [中分類] & "' and 品目 = '" & [品目] & "' And 金額 > " & [金額]))+Nz(DSum("構成比","テーブルA","大分類 = '" & [大分類] & "' and 中分類 = '" & [中分類] & "' and 品目 = '" & [品目] & "' And 金額 = " & [金額] & " and 商品 < '" & [商品] & "'"))+[構成比]
になります。

一応「大分類 中分類 品目  商品」がキーでこれが同じレコードはないものとしています。

もう少し短くなる方法があるかもしれませんが私にはこれが精いっぱいでした。
・ツリー全体表示

【12591】Re:累積構成比の算出方法について教えて...
質問  kai  - 14/7/29(火) 13:40 -

引用なし
パスワード
   ▼独覚 さん:
早々にご回答いただき誠にありがとうございます。
いただいた内容を追加したところうまくいきました!

五月雨の質問となり申し訳ないのですが、
大分類、中分類、品目は昇順で並べ替え、金額を降順で並べ替えた場合の
累積構成比を算出したく思います。

いただいた式を手直しして、下記のような式を作成したのですが、上手く累積構成比が算出できません。
なにかいい方法はありますでしょうか。
ご教授いただけますと幸いです。

↓手直しした式
Nz(DSum("構成比","テーブルA","大分類 = '" & [大分類] & "' and 中分類 = '" & [中分類] & "' and 品目 = '" & [品目] & "'" And "金額>""[金額]"))+[構成比]

■イメージ(真ん中部分のところが変更したい箇所になります)

 大分類 中分類 品目  商品  金額  構成比 累積構成比
 ○   AAA   XXX  111  \2000  50%  50%
 ○   AAA   XXX  112  \2000  50%  100%
 --------------------------------------------------   
 △   BBB   YYY  114  \2500  50%  50% 
 △   BBB   YYY  112  \1500  30%  80%
 △   BBB   YYY  111  \1000  20%  100%
 --------------------------------------------------  
 △   AAA   ZZZ  115  \5500  100%  100%
・ツリー全体表示

【12590】Re:累積構成比の算出方法について教えて...
発言  独覚  - 14/7/29(火) 10:55 -

引用なし
パスワード
   ▼kai さん:
テーブルAをもとにしたクエリを作成し、大分類、中分類、品目、 商品を昇順に並べ替え、
計算フィールドとして
累計構成比: Nz(DSum("構成比","テーブルA","大分類 = '" & [大分類] & "' and 中分類 = '" & [中分類] & "' and 品目 = '" & [品目] & "' and 商品 < '" & [商品] & "'"))+[構成比]
というフィールドを追加してそのフィールドのプロパティで書式を設定してはどうでしょうか?

なお、最初は
累計構成比: DSum("構成比","テスト1","大分類 = '" & [大分類] & "' and 中分類 = '" & [中分類] & "' and 品目 = '" & [品目] & "' and 商品 <= '" & [商品] & "'")
としていたのですがなぜか書式を設定できないため最初の式となりました。
・ツリー全体表示

【12589】累積構成比の算出方法について教えてくだ...
質問  kai  - 14/7/28(月) 20:11 -

引用なし
パスワード
   下記のような構成のテーブルがあります。
大分類、中分類、品目、商品名はいずれも文字列で、
構成比は大分類×中分類×品目内における各商品の金額構成比です。

このテーブルに、大分類×中分類×品目内での累積構成比を追加したいのですが
Accessで作成することは可能でしょうか。
可能であればどのような方法がありますでしょうか。

お手数をおかけして恐縮ですが、ご教授いただけると幸いです。
宜しくお願い致します。


■現在のテーブルA
 大分類 中分類 品目  商品  金額  構成比 
 ○   AAA   XXX  111  \2000  50%   
 ○   AAA   XXX  112  \2000  50%
 --------------------------------------------------   
 △   BBB   YYY  111  \1000  20%  
 △   BBB   YYY  112  \1500  30%  
 △   BBB   YYY  114  \2500  50% 
 --------------------------------------------------  
 △   AAA   ZZZ  115  \5500  100%     


■作成したいテーブルイメージ
 大分類 中分類 品目  商品  金額  構成比 累積構成比
 ○   AAA   XXX  111  \2000  50%  50%
 ○   AAA   XXX  112  \2000  50%  100%
 --------------------------------------------------   
 △   BBB   YYY  111  \1000  20%  20%
 △   BBB   YYY  112  \1500  30%  50%
 △   BBB   YYY  114  \2500  50%  100% 
 --------------------------------------------------  
 △   AAA   ZZZ  115  \5500  100%  100%
・ツリー全体表示

【12588】Re:一つのフォームを4つのサブフォームと...
お礼  sin  - 14/7/24(木) 22:05 -

引用なし
パスワード
   >そうだとすると、レコードソースはどのように変更しているでしょうか。

メインフォームの読み込み時に
Me.[サブフォーム名].Form.Recordsource = ""
このようにして設定しています。

>だとすると、データベースでは、テーブルを分けないで一つにまとめるというのが、正しい設計になります。
>まとめたテーブルには、分類フィールドを追加して、どのテーブルにあったレコードかを識別するようにします。

確かにこの方法が最善かもしれません。ただ、私の実力ですとすぐに作れるものでもなさそうですので、多少時間をかけて最終的にこの形を目指そうかと思います。

ちなみにメインフォーム読み込み時にレコードソースの設定を、サブフォーム読み込み時に他のプログラムを実行させた所、目的の物が作成できた事を報告いたします。

アドバイスありがとうございました。
・ツリー全体表示

【12587】Re:一つのフォームを4つのサブフォームと...
回答  hatena  - 14/7/24(木) 8:20 -

引用なし
パスワード
   ▼sin さん:
>【テーブルが4つあります】
>テーブル1 テーブル2 テーブル3 テーブル4
>【フォームが2つあります】
>サブフォーム1 メインフォーム1
>
>メインフォーム1にサブフォーム1を4つ、非連結で配置しています。(サブフォーム名を変えて配置しています。)
>4つ、それぞれのサブフォームのレコードソースは別々のテーブルが設定
>されています。

サブフォームは サブフォーム1 の一つだけで、
サブフォームを埋め込むサブフォームコントロール名を変更して、4つ配置しているということでしょうか。
で、レコードソースをどのサブフォームコントロールに埋め込まれているかによって、変更していると。

そうだとすると、レコードソースはどのように変更しているでしょうか。


ただ、直接の回答ではないですが、
テーブル1 テーブル2 テーブル3 テーブル4 は同じフォームのレコードソースにするということはフィールド構成が同じということですよね。

だとすると、データベースでは、テーブルを分けないで一つにまとめるというのが、正しい設計になります。
まとめたテーブルには、分類フィールドを追加して、どのテーブルにあったレコードかを識別するようにします。

そうすれば、サブフォームコントロールのリンク親フィーるど、リンク子フィールドを設定するだけで希望のことが可能になります。
・ツリー全体表示

【12586】一つのフォームを4つのサブフォームとし...
質問  sin  - 14/7/24(木) 0:19 -

引用なし
パスワード
   【テーブルが4つあります】
テーブル1 テーブル2 テーブル3 テーブル4
【フォームが2つあります】
サブフォーム1 メインフォーム1

メインフォーム1にサブフォーム1を4つ、非連結で配置しています。(サブフォーム名を変えて配置しています。)
4つ、それぞれのサブフォームのレコードソースは別々のテーブルが設定
されています。

メインフォームの読み込み時にそれぞれのサブフォームで、少しずつ違うプログラムを起動させたいと思っています。

質問1
メインフォームの読み込み時イベントにvbaを書けばよいのか、
サブフォームの読み込み時イベントにvbaを書けばよいのかわかりません。
質問2
サブフォーム名を使って、if文か何かでプログラムを分ければよいかと思って
板のですが、メインフォーム上のサブフォーム名の取得方法が分かりません。

どのようなキーワードで調べれば方法のヒントが出てくるかも分からず、
曖昧な質問になってしまいました。
何かヒントになりそうなアドバイスでも良いので、教えていただけると
とても助かります。
・ツリー全体表示

【12585】Re:クエリでの四捨五入?
お礼  es  - 14/7/16(水) 16:20 -

引用なし
パスワード
   早速のご返答ありがとうございます。

ご指摘頂いた方法を試したところ
全て思ったとおりに表示されました!!
行き詰っていたところだったので、本当に助かりました。
ありがとうございます。

また質問することがあれば、よろしくお願いします。
・ツリー全体表示

【12584】Re:クエリでの四捨五入?
回答  hatena  - 14/7/15(火) 17:51 -

引用なし
パスワード
   >IIF(ROUND(([フィールドA]-[フィールドB]-[フィールドC]+[フィールドD])/1000)<>0,ROUND(([フィールドA]-[フィールドB]-[フィールドC]+[フィールドD])/1000))
>
>↑のような式を記述しているのですが
>真の場合のところで、([フィールドA]-[フィールドB]-[フィールドC]+[フィールドD])/1000の結果値が「-0.5」の時は「-1」、「-0.096」の時は「0」が返る
>ようにするにはどういった方法があるでしょうか?

Fix(([フィールドA]-[フィールドB]-[フィールドC]+[フィールドD])/1000 + IIf(([フィールドA]-[フィールドB]-[フィールドC]+[フィールドD]) > 0,0.5,-0.5))

でどうでしょうか。
あるいは、下記のように式を2つに分けると見やすいかも。

式1: ([フィールドA]-[フィールドB]-[フィールドC]+[フィールドD])/1000

式2: Fix([式1] + IIf([式1] > 0,0.5,-0.5))
・ツリー全体表示

【12583】クエリでの四捨五入?
質問  es  - 14/7/15(火) 12:52 -

引用なし
パスワード
   こんにちは。

現在Access2003を使いクエリで計算式を作っているのですが
分からないところがあり質問させていただきます。

IIF(ROUND(([フィールドA]-[フィールドB]-[フィールドC]+[フィールドD])/1000)<>0,ROUND(([フィールドA]-[フィールドB]-[フィールドC]+[フィールドD])/1000))

↑のような式を記述しているのですが
真の場合のところで、([フィールドA]-[フィールドB]-[フィールドC]+[フィールドD])/1000の結果値が「-0.5」の時は「-1」、「-0.096」の時は「0」が返る
ようにするにはどういった方法があるでしょうか?

皆様の力をお貸しください。。。
・ツリー全体表示

36 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1078248
(SS)C-BOARD v3.8 is Free