• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:AccessのSELECTでこんなことできますか?)

Accessで月額表データの金額範囲からIDを取得する方法

このQ&Aのポイント
  • AccessのSELECT文を使用して、月額表データの金額フィールドの範囲からIDを取得する方法をご教示ください。
  • 現在のクエリでは、金額がフィールド1と完全一致する場合にしかIDを返さないため、金額の範囲でIDを取得することができません。
  • 金額の範囲でIDを取得するには、=演算子を<=または>=演算子に変更し、適切な条件を組み合わせる必要があります。具体的な解決方法をご教示いただけますか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#79209
noname#79209
回答No.7

#6です。 SQLビューでの書き方が判らないなら、 賃金クエリをデザインビューで開き、この中の空いている最初の列の「フィールド」行で右クリック。 「ビルド」をクリックし、式ビルダのボックス内に フィールドA: DLookUp("ID","月額表",[金額] & " >= フィールド1 And " & [金額] & " < フィールド2") と入力し、OKを押せばいいです。

meatoffice
質問者

お礼

ありがとうございます!! 週末をはさんだのでチェックできず、お礼が遅くなってすみませんでした。 でもこれで出来ました! 私にはSQLはまだ高度すぎて、デザインビューでの書き方を求めていたので本当に助かりました。 #6の回答もありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (6)

noname#79209
noname#79209
回答No.6

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

すると、全ての回答が全文表示されます。
noname#140971
noname#140971
回答No.5

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 さんの式でも結果は同じです。

meatoffice
質問者

お礼

毎回迅速でしかもご丁寧な回答をありがとうございます。本当に嬉しく思っています。 何度もド素人な質問ばかりをしてしまいますが、 教えていただいたようにクエリでSQLビューを開いたら 既に SELECT*************; と構文が書かれていたのでそのまま;の後ろに貼ったらダメだったので、;を取ってみたのですがダメでした。 SQLに直接書くのは初めてでぜんぜんわかりません・・・こんなに丁寧に教えていただいて申し訳ございませんが、また教えていただけますか?昨日今日で色々勉強させていただいてます。ありがとうございます。

すると、全ての回答が全文表示されます。
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

両テーブルをクエリデザインビューに取り込み 結合はしないで 金額フィールドの抽出条件欄に >=フィールド1 and <フィールド2 と書いてIDフィールドを取り出せば該当するものを持ってこれます

meatoffice
質問者

お礼

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

すると、全ての回答が全文表示されます。
noname#140971
noname#140971
回答No.3

もちろん、直接に SELECT文を書かれてもOKです。 SELECT 賃金.ID, 賃金.賃金, (SELECT 月額表.ID FROM 月額表 WHERE [賃金] Between [月額表]![フィールド1] And [月額表]![フィールド2]) FROM 賃金;

meatoffice
質問者

お礼

下に頂いた回答が難しかったので、直接上記のように入力したのですが、うまくいきませんでした。 賃金台帳クエリには 社員ID/氏名/・・・/金額/フィールドA/とあり このフィールドAに月額表のIDを返したかったのですが、 月額表のようにIDがないので (SELECT 賃金台帳.金額,(SELECT 月額表.ID FROM 月額表 WHERE [金額] Between [月額表]![フィールド1] And [月額表]![フィールド2]) FROM 賃金台帳;) と直接書いたのですがそれがいけなかったのでしょうか。。。

すると、全ての回答が全文表示されます。
noname#140971
noname#140971
回答No.2

<月額表> 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

meatoffice
質問者

お礼

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

meatoffice
質問者

補足

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

すると、全ての回答が全文表示されます。
noname#60992
noname#60992
回答No.1

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

参考URL:
http://oshiete1.goo.ne.jp/qa2977094.html
meatoffice
質問者

お礼

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

すると、全ての回答が全文表示されます。

関連するQ&A