アプリ版:「スタンプのみでお礼する」機能のリリースについて

月額表データの中に

ID/フィールド1/フィールド2 
1 88000    89000
2 89000    90000
3 90000    91000  ・・・とあり、
(データは300件以上あります)


賃金クエリの中の金額フィールドを見て

88000以上89000未満 なら1を返し
89000以上90000未満 なら2を返す・・・ということをしたく


式1: (Select ID FROM 月額表 WHERE フィールド1=[金額])

としたのですがそれだと金額がフィールド1と一致するものしか返さないので

= を <= に変えてみたのですが、できませんでした。

89500なら2
88770なら1 と返すためにはどうすれば良いか、そういうことが出来るのかご存知の方教えて下さい。

宜しくお願いします。

A 回答 (7件)

#6です。


SQLビューでの書き方が判らないなら、
賃金クエリをデザインビューで開き、この中の空いている最初の列の「フィールド」行で右クリック。
「ビルド」をクリックし、式ビルダのボックス内に

フィールドA: DLookUp("ID","月額表",[金額] & " >= フィールド1 And " & [金額] & " < フィールド2")

と入力し、OKを押せばいいです。
    • good
    • 0
この回答へのお礼

ありがとうございます!!
週末をはさんだのでチェックできず、お礼が遅くなってすみませんでした。

でもこれで出来ました!
私にはSQLはまだ高度すぎて、デザインビューでの書き方を求めていたので本当に助かりました。

#6の回答もありがとうございます。

お礼日時:2007/06/11 09:22

賃金クエリを


SELECT 賃金台帳.社員ID, 賃金台帳.氏名, 賃金台帳.金額, DLookUp("ID","月額表",[金額] & " >= フィールド1 And " & [金額] & " < フィールド2") AS フィールドA
FROM 賃金台帳;
とすればいいのでは?
    • good
    • 0

1、[SQLビュー]を開きます。


2、下記をコピペします。

SELECT 賃金台帳.金額,(SELECT 月額表.ID FROM 月額表 WHERE [金額] Between [月額表]![フィールド1] And [月額表]![フィールド2])
FROM 賃金台帳;

・()が不要です。

初手の回答のように、月額表を修正したくなければ No4さんの式を採用。

SELECT 賃金台帳.金額,(SELECT 月額表.ID FROM 月額表 WHERE [金額] >=[月額表]!フィールド1 and [金額]<[月額表]!フィールド2)
FROM 賃金台帳;

<テスト結果>

賃金_______賃金評価
\89,500___2
\88,770___1

SELECT 賃金.賃金, (SELECT 月額表.ID FROM 月額表 WHERE [賃金] >=[月額表]!フィールド1 and [賃金]<[月額表]!フィールド2) AS 賃金評価
FROM 賃金;

と、No4 さんの式でも結果は同じです。
    • good
    • 0
この回答へのお礼

毎回迅速でしかもご丁寧な回答をありがとうございます。本当に嬉しく思っています。

何度もド素人な質問ばかりをしてしまいますが、
教えていただいたようにクエリでSQLビューを開いたら
既に
SELECT*************; と構文が書かれていたのでそのまま;の後ろに貼ったらダメだったので、;を取ってみたのですがダメでした。

SQLに直接書くのは初めてでぜんぜんわかりません・・・こんなに丁寧に教えていただいて申し訳ございませんが、また教えていただけますか?昨日今日で色々勉強させていただいてます。ありがとうございます。

お礼日時:2007/06/08 17:37

両テーブルをクエリデザインビューに取り込み


結合はしないで

金額フィールドの抽出条件欄に

>=フィールド1 and <フィールド2

と書いてIDフィールドを取り出せば該当するものを持ってこれます
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

回答いただいたようにやってみたのですが・・・
何かが間違えているのか、該当のものが何も無い状態になってしまいます・・・・。

お礼日時:2007/06/08 15:25

もちろん、直接に SELECT文を書かれてもOKです。



SELECT 賃金.ID, 賃金.賃金, (SELECT 月額表.ID FROM 月額表 WHERE [賃金] Between [月額表]![フィールド1] And [月額表]![フィールド2])
FROM 賃金;
    • good
    • 0
この回答へのお礼

下に頂いた回答が難しかったので、直接上記のように入力したのですが、うまくいきませんでした。

賃金台帳クエリには
社員ID/氏名/・・・/金額/フィールドA/とあり
このフィールドAに月額表のIDを返したかったのですが、

月額表のようにIDがないので


(SELECT 賃金台帳.金額,(SELECT 月額表.ID FROM 月額表 WHERE [金額] Between [月額表]![フィールド1] And [月額表]![フィールド2])
FROM 賃金台帳;)

と直接書いたのですがそれがいけなかったのでしょうか。。。

お礼日時:2007/06/08 15:19

<月額表>



ID_フィールド1__フィールド2
1__\88,000______\88999
2__\89,000______\89,999
3__\90,000______\90,999

<賃金>

ID__賃金
1___\89,500
2___\88,770

<クエリ1>

ID___賃金_______賃金評価
1_____\89,500___2
2_____\88,770___1

まあ、実際にテーブルとクエリを作成してみました。
賃金評価の列を生成していますが、2、1となっています。
ということは可能だということです。

SELECT
賃金.ID,
賃金.賃金,
DBLookup("ID",
       "月額表",
      [賃金] & "BETWEEN [月額表]![フィールド1] AND [月額表]![フィールド2] ") AS 賃金評価
FROM 賃金;

このようなクエリを作成すればいいです。

Public Function DBLookup(ByVal strField As String, _
             ByVal strTable As String, _
             Optional ByVal strWhere As String = "", _
             Optional ByVal ReturnValue = Null) As Variant
On Error GoTo Err_DBLookup
   Dim DataValue
   Dim strQuerySQL As String
   Dim rst     As ADODB.Recordset

   Set rst = New ADODB.Recordset
   strQuerySQL = "SELECT " & strField & " FROM " & strTable
   If Len(strWhere) > 0 Then
     strQuerySQL = strQuerySQL & " WHERE " & strWhere
   End If
   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 = Nz(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

この回答への補足

昨日に続き回答ありがとうございます。
ただちょっと私には高度すぎて、クエリフィールドに直接構文を入れる以外に上記のクエリをどうやって作成したらよいかが分からなくて・・長い回答頂いたのにすみません。
でも本当にありがとうございます。

補足日時:2007/06/08 15:00
    • good
    • 0
この回答へのお礼

間違えて補足の欄にお礼を書いてしまいました。すみませんでした。。

お礼日時:2007/06/08 15:02

いくつか方法があります。



定型パターンがあるなら数式で答えを出す。
テーブルを作って値を参照する。
そのようなファンクションを作る。

参考URL:http://oshiete1.goo.ne.jp/qa2977094.html
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考URL参照してみます。

お礼日時:2007/06/08 14:59

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

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