今、貸アパートの水道料金請求のデータベースをACCESSで作っていますが、クエリで水道使用量:[先月検針]ー[今月検針]で当月の使用量まで出しました。使用料金:IIF(水道使用量]<100,とIIF関数を使おうと思ったんですが、これでは条件は1個しか指定出来ないですよね。使用料金は例えば、100未満が300円、100以上200までが400円と20個くらいに使用量によって、金額を変えて表示したいのです。IIF関数では、条件が1個しか指定できないのでしょうか?EXCELではAND関数とかを組み込むとたくさんの条件を指定できますが、ACCESSではどうすればいいのでしょうか?LOOKUP関数みたいなのがあるのでしょうか?教えて下さい。

A 回答 (5件)

再登場


 遅くなりました。なんせ月曜日まで出張なもので・・・
 気になっていたものでインターネットカフェから書いております(笑)

 先の回答は、前月量と当月量を入力して請求書などを印刷する時の方法です。
  だって入力データと料金データを入力してはいけませんよね?
>それをクエリで、伝票NO,日付、入居者ID、氏名、家賃、共益費、当月量、先月量、使用量、水道代という、請求書入力フォームを作ろうとしました。
 お待ちどうさま DLOOKUP関数の説明です(笑)
 使用量:当月量-先月量
 水道代: DLookUp("水道料金","水道料金TBL","水道量 = " & Int(([当月量]-[先月量]+9)/10)*10)

 で入力出来るクエリーになります。
 したがって計算クエリ2は不要になります(汗)

忠告)
>たくさんの本をはしごしながら・・・
 1.初心者にありがちなのは95%位出来ると5%を作ろうとする
   だめでも作ろうとする、作った95%を壊せない、
   どうしても駄目なら最初からということが出来ない
 2.システムを先に考えるとにっちもさっちもいかなくなる
対策
 どの本でも回答1の参考URLでもどこでもいいから
 書いてある通りに作って見る
 するとこういう使いかたをするのだとかが分かる

参考になれば幸いです
何か有れば補足して下さい。
但し再回答が送れることをご了承下さい。
がんばって下さい。
    • good
    • 0
この回答へのお礼

本当にありがとうございました。バッチリです。本当に助かりました。両親に作ってあげるって言ったものの、1週間悩んでました。ちゃんと設計していないまま、考えながら、質問しながら作っていたので、質問が的を得ず、ころころ変わって迷惑をおかけしましたが、快く教えて下さったことに本当に感謝します。今はとてもHAPPYな気持ちでいっぱいです。ありがとうございました。

お礼日時:2002/04/13 11:23

再登場


 はい深呼吸
すべて書きますので現在のアクセスをコピーしてください

テーブル
 水道量TBL
  名前  テキスト型
  当月量 数値型 長整数型 
  先月量 数値型 長整数型
   Aさん 100 85
   Bさん 200 155
   Cさん 100 75
 水道料金TBL
  水道料 数値型 長整数型 値要求=はい インデックス=はい重複なし
   10 1100
   20 2200
   30 3300
   40 4400
   50 5500
クエリ
 計算クエリ1
  フィールド
   名前
   当月量
   先月量
   使用量:当月量-先月量
   金額使用量:INT((当月量-先月量)+9)/10)*10 注)ここが重要
 計算クエリ2
  テーブル
   計算クエリ1
   水道料金TBL
    計算クエリ1の金額使用量をドラッグして
    水道料金TBLの水道量に持っていく(線が結ばれる、結合)
  フィールド
   名前
   当月量   計算クエリ1
   先月量   計算クエリ1
   使用量   計算クエリ1
   金額使用量 計算クエリ1
   金額    水道料金TBL

ほら出来た。パチパチパチ
参考になれば幸いです
 

この回答への補足

本当にありがとうございます。おかげでバッチリ出来ました。すごくうれしかったです。
それでまた、次のステップでまたつまずきました。

入居者テーブルにID,氏名、家賃、共益費、当月量、先月量というフィールドがあり、請求テーブルに伝票NO,日付、入居者IDがあります。
それをクエリで、伝票NO,日付、入居者ID、氏名、家賃、共益費、当月量、先月量、使用量、水道代という、請求書入力フォームを作ろうとしました。
伝票NO,日付、入居者ID,氏名、家賃、共益費、当月量、先月量、使用量まではクエリで作成し、水道代計算クエリ2の水道代を追加すると、新しいデータを入力出来なくなるんです。請求テーブルに入力されたデータしか表示されないのはなぜでしょう?

希望としては請求書フォームで顧客IDだけ入力すれば、家賃などは表示されますが、水道当月量だけを入力して、先月量は入居者テーブルから自動表示させ、使用量、水道代を計算させたいんです。水道代の表示でどうしてもひっかかります。クエりでは計算できてるのに。。。

たくさんの本をはしごしながら、やってみましたが、独学なので、基本的なことがわかってない気がします。すみません。
何度も本当にすみませんが、よろしくお願いいたします。

補足日時:2002/04/11 16:01
    • good
    • 0

再登場


>条件は範囲ではなくて、=で出せるみたいなんですけど・・
 だとするとテーブルの結合で十分です。

以上???
>テーブルの結合方法ですが
 複数の条件にあてはまるものを複数のフィールドに。
 http://oshiete1.goo.ne.jp/kotaeru.php3?q=245652
を参考にして下さい。
頑張って下さい。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=245652

この回答への補足

度々すみません。水道代検針は12ヶ月保存し、更新クエリで月次更新する仕組みにしました。フォームで当月だけを入力して、クエリーで使用量:[当月]ー[先月]を出しました。その使用量はクエリで演算したので、その結果を何かの方法で、テーブルに保存して、料金テーブルと結合するってことでしょうか?そうであったならば、クエリの演算結果を新しいテーブルもしくは既存のテーブルに保存する方法を教えて下さい。
半日ああでもないこうでもないとやっているうちに、頭がパニックになってきました。いまいちわかりにくい説明ですみません。

補足日時:2002/04/10 17:20
    • good
    • 0

再登場(遅くなりました。

昼人間なもので・・・)
>DLOOKUP関数というのが使えそうでは、と思いました。
 結論
  使えません
 理由
  キー(今回は水道量)が範囲の為

対策案
 1.水道量テーブルを作成(既存)
 2.水道量クエリ1を作成(<100の金額設定)
  クエリ内容
   水道量  金額:IIF(水道量<100,300円,0円)
 3.水道量クエリ2を作成(<200の金額設定)
  クエリ内容
   水道量  金額1:IIF(水道量>=100 AND 水道量<200,400円,金額) 
 4.水道量クエリ3を作成(<300の金額設定)
  クエリ内容
   水道量  金額2:IIF(水道量>=200 AND 水道量<300,500円,金額1)
 
のようにクエリーの入れ子にして違ったら前の金額を流用する
という案はいかがでしょうか
 参考になれば幸いです
 頑張って下さい

この回答への補足

早速ありがとうございます。これは50個条件があればクエリを50個作らないといけないということですよね。
よくよく考えると条件は範囲ではなくて、=で出せるみたいなんですけど、それならDLOOKUP関数は使えるんですか?
最初からゆっくり頭を整理して、考えてから質問すればよかったのに、何度もややこしいことを聞いて、本当に本当に、ごめんなさい。教えて下さいませんでしょうか?。すみませんm(__)m

補足日時:2002/04/10 11:30
    • good
    • 0

>IIF関数では、条件が1個しか指定できないのでしょうか?


 IIF文の入れ子で対応します。
 A: IIf([項目]=210,1,IIf([項目]=220,2,3))
 項目が210なら1を設定
 項目が220なら2を設定
 項目がそのたなら3を設定
>LOOKUP関数みたいなのがあるのでしょうか?
 CHOOSE関数があります。
>ACCESSではどうすればいいのでしょうか?
 案)クエリーを料金別に作成して後でまとめる

御土産
http://www.accessclub.jp/
http://ws.31rsm.ne.jp/~pension/access/ota2001/co …
http://www.mahoutsukaino.com/

参考になれば幸いです

この回答への補足

早速返事ありがとうございます。IIF関数で一度やってみましたが、条件が10件以上になると、条件が複雑すぎますというエラーが出てしまい、ダメでした。(結局条件は50件ありました。)CHOOSE関数はヘルプを見たんですが、よくわからず、参考URLでいろいろ調べたところ、DLOOKUP関数というのが使えそうでは、と思いました。別に料金のテーブルを作って、参照させるってことだと思いますが、クエリに条件を入れれるのでしょうか?出来るとした、どういう風な式を作ればいいんでしょうか?あまりよくわかってなくて、変な質問で本当にすみません。よろしくお願い致します。

補足日時:2002/04/09 23:17
    • good
    • 0

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

関連するカテゴリからQ&Aを探す

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

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

Q刑法の『者』の読み方

大学の刑法の授業で、例えば「人を殺したる者は…、」という条文の『者』は、人ではなく行為を意味するものだから、「もの」ではなく「しゃ」と読む、と学者は言っていたのですが、
ほんとうにその読み方でいいのですか?
常識はずれで不自然な読み方だと思うのですが。

Aベストアンサー

法律上は規定なし。
法学上(講学上)通説や多数説、有力説か如何かは知らないが、社会科学に絶対的正解など存在しないので其の学者の支持する説はそうであると言う事です。

Qアクセスでのswitch又はiif関数使用時のその他の場合

ACCESS2000の追加クエリで

[Aテーブル].[B]という項目が"*"ならば
[Bテーブル]に?という項目をいれ、
それ以外ならば""をインサートするという処理です。

型はCHAR型。
元になるAテーブルには*以外には半角スペースが
入っている場合があります。

このときに

IIf([Aテーブル].[B]="*","?","")

又は

Switch([Aテーブル].[B]="*", "?",True,"")

という式で実行を行うと
"*"以外のものを追加しようとするとき
入力規則違反となり追加できません。

Switch文で半角スペースの場合の条件を指定すれば
問題ないのですが、"*"以外の場合として追加したいのです。

どこか問題点がわかれば教えてください。

Aベストアンサー

こんばんは!
""は長さ0の文字列です。(空文字)

対応方法:

1.
IIf([Aテーブル].[B]="*","?",[Aテーブル].[B])

2.IIf([Aテーブル].[B]="*","?",Null)

3.追加先テーブルのフィールドの"空文字の許可"を"はい"にする。

どれでも動くとは思いますが、検証はしていません。

詳しくは空文字やNullを調べて見てください。

Q松川事件の容疑者(判決無罪)の浜崎二雄さんの読み方を雄教えてください

松川事件の容疑者(判決無罪)の浜崎二雄さんの読み方を雄教えてください

Aベストアンサー

#1です。詳細が揃いましたので、改めて回答します。

名前の読み方は、
『バマザキ フタオ』
さんでした。

出典は、

タイトル:松川15年・真実の勝利の為に
出版社:労働旬報社
出版年数:昭和39年8月
読み仮名記載ページ:44ページ

【補足】

1,現在、労働旬報社は「旬報社」に改称
2,上記の本は現在絶版ですが、復刻版として事件50年目に復刻。しかし流通してない為、現物がご希望の場合には松川事件研究の福島大学・伊部(イベ)教授までお問い合わせ下さい。

イベ先生の連絡先電話番号は、このサイトの性質上ここに記載出来ませんのでご理解下さい。

大変申し訳ありませんでした、頑張って下さい。

QAccessの「IIF」に相当するSQL関数(ADOでOracleに接続時)

Access2002からADO経由でOracleに接続し、データを取得しようと
思っています。
AccessのクエリやExcel関数では、「IIF」、「IF」で条件分岐が出
来ますが、SQLでこれに相当する関数はありますか?
具体的には、

  ・日付A が 2007/08/01 ~ 本日 の間なら、「手配数」フィー
ルドの数字を返す
  ・日付Aが それ以外の期間なら、0 を返す

というような事をしたいです。
DECODE関数がIF関数と似ているように思いますが、Between~And~
や、不等号での分岐が出来ないようなので困っています。
IIFやIF のように分岐条件を自由に設定できて、入れ子も出来るよ
うな関数があれば教えてください。
よろしくお願いいたします!

Aベストアンサー

#1回答者です。

CASE式は、Oracle8iでサポートされているようです。

>SELECT (case when [T$QTY] > 100 then [T$QTY] else 0 end as 数量) FROM T_Sample A

そうですね。
select case when 列名1>100 then 列名2 else 0 end as 名前 from 表名
といった指定が可能です。

()は、この場合、必要ありません。指定しても文法エラーにはならないでしょうけどね。

[]は、$という特殊記号を使っているから、指定しているのでしょうか?[]は、ACCESSやSQL Serverなど、マイクロソフトの独自仕様だと承知しています。Oracleや標準SQLの場合は、「"」で囲みます。

<CASE式のマニュアル記載>
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_v1/server.102/B19201-01/expressions.html#2100

#1回答者です。

CASE式は、Oracle8iでサポートされているようです。

>SELECT (case when [T$QTY] > 100 then [T$QTY] else 0 end as 数量) FROM T_Sample A

そうですね。
select case when 列名1>100 then 列名2 else 0 end as 名前 from 表名
といった指定が可能です。

()は、この場合、必要ありません。指定しても文法エラーにはならないでしょうけどね。

[]は、$という特殊記号を使っているから、指定しているのでしょうか?[]は、ACCESSやSQL Serverなど、マイクロソフトの独自仕様だと承...続きを読む

Q「岸壁の母」の作曲者、平川浪竜の名前の読み方を教えて!

「岸壁の母」の作曲者、平川浪竜の名前の読み方を教えてください。

Aベストアンサー

さっき実家の祖母に電話して聞いたところ、「ひらかわ・なみりゅう」さんとのことです。
ちなみにこちらでも調べましたのでご参考に。1928年10月10日の神奈川県生まれの方だそうです。

Qエクセルのsumif関数を使用して二つの条件の計算の方法は

東京∥A商品∥10    東京∥A商品∥ここに合計をsumifで求めたい
東京∥C商品∥10    東京∥B商品∥
東京∥A商品∥10    大阪∥A商品∥
大阪∥A商品∥10
大阪∥A商品∥10     ピボットでは無くて
大阪∥B商品∥10
大阪∥C商品∥20
東京∥B商品∥10   
東京∥C商品∥10
東京∥A商品∥10
大阪∥A商品∥10
大阪∥A商品∥10
大阪∥B商品∥10
大阪∥C商品∥10

Aベストアンサー

A列に東京、B列に商品、C列に数字が入っているとして、東京、A商品の場合、

=SUMPRODUCT(($A$1:$A$100="東京")*($B$1:$B$100="A商品")*($C$1:$C$100))

集計する地名、商品名をセル(たとえばE1、F1)で指定したいときは、

=SUMPRODUCT(($A$1:$A$100=E1)*($B$1:$B$100=F1)*($C$1:$C$100))

データが100行以上あるときは、$100をそれ以上の数に変えてください。

Q「支払者」読み方についてご教授ください。

お世話になります。日本語の学生の純です。

下記言葉どう読みますか。
「支払者」しはらいしゃですかしはらいものですか。
もし両方の読み方正しいなら、どの場合どう読めば良いか教えていただけますか。

よろしくお願いします。
学生 純

Aベストアンサー

こんばんは。

「しはらいしゃ」です。

「者」を「もの」と読む言葉はたくさんあります。
A「しゃ」と読むのが正しい言葉
B「もの」と読みのが正しい言葉

Bのパターンは、その人を見下げている場合が多いです。
(「働き者」(はたらきもの)のように、良い意味で使う場合もありますが。)

ご参考に。

Q[Oracle][IBM DB2][SQL Server]の違いと適性

現在、Accessで業務アプリケーションを作成しているのですが、そろそろパフォーマンス的にも限界で、というかC/S環境でAccessを使っていること自体危険ですね…

ここでデータベースをグレードアップしようと思っています。
しかし、データベースと言ってもたくさんあり、どれがいいのか
迷っています。

現在、商用RDBMSでは[Oracle][IBM DB2][SQL Server]がメインとの
ことですが、これらの違いが分かりせん。

うちの規模は社員数が40人程度です
Oracleは大規模システム向けと聞いた事があるのですが、
それであれば、IBM DB2かSQL Serverなのでしょうか

御教授宜しくお願いします。

Aベストアンサー

SEじゃないですけど、現状でどの辺りがボトルネックになっているかまず分析する必要がありますよ、案外ハード(サーバー本体)の方がいっぱいいっぱいてこともありますから、仮にHDDのディスクアクセスの場合シリコンディスクに置き換える、メインメモリの増設などがあります。逆にソフト側(MSアクセス)で同時接続多・同時更新多・データ肥大化の場合はやはりDBエンジンを変更するしかないでしょう。自社で開発するなら(情報量の多い)SQLServer。外注の場合は先方によって得手不得手がありますので一概には言えませんがオラクルでしょうこれしかないです(規模は関係なし)。DB2は使ったことがありません。他にもたくさんデータベースエンジンがありますので・・・

参考URL:http://ja.wikipedia.org/wiki/関係データベース管理システム

Q被保険者の読み方

被保険者の読み方は、「ひほけんじゃ」ですか?「ひほけんしゃ」ですか?
また、介護保険での被保険者証は、「ひほけんじゃしょう」ですか?「ひほけんしゃしょう」ですか?

Aベストアンサー

追記から

介護も国保も後期高齢者医療保険も
全て「保険者」です。
読みは「ほけんしゃ」です。

Q[ACCESS]レポートで、指定した数だけレコードを表示する方法

困っております。
簡単だと思っていたので、自分で色々と調べましたが、方法が見つかりませんでした。

ACCESSのレポートで商品のラベルを発行したいのですが、たとえばAという商品の数量が2の場合、その商品のラベルを2つ表示させたいのですが、どのようにすればよいでしょうか?なるべくVBAを利用せずに、シンプルに実現する方法があればアドバイスをお願いします。

Aベストアンサー

「VBAを利用せずに、シンプルに実現する方法」とのことですので以下のようなものでは如何でしょうか?
1.数量というフィールド(データ型は上記の数量が入力されているものと同じ)が1つのテーブルを作成します。
2.数量フィールドに値が1の場合には1行、値が2の場合には2を入力して2行、・・・・、というように数量と同じ値の行数を数量分入力します。
3.このテーブルを質問にある数量のフィールドと結合したQueryを作成します。
このQueryをレコードソースにすれば、質問のように数量分の枚数ができると思います。
(但し、枚数が少ない場合に限ります)


人気Q&Aランキング

おすすめ情報