月額表データの中に
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 と返すためにはどうすれば良いか、そういうことが出来るのかご存知の方教えて下さい。
宜しくお願いします。
No.7ベストアンサー
- 回答日時:
#6です。
SQLビューでの書き方が判らないなら、
賃金クエリをデザインビューで開き、この中の空いている最初の列の「フィールド」行で右クリック。
「ビルド」をクリックし、式ビルダのボックス内に
フィールドA: DLookUp("ID","月額表",[金額] & " >= フィールド1 And " & [金額] & " < フィールド2")
と入力し、OKを押せばいいです。
ありがとうございます!!
週末をはさんだのでチェックできず、お礼が遅くなってすみませんでした。
でもこれで出来ました!
私にはSQLはまだ高度すぎて、デザインビューでの書き方を求めていたので本当に助かりました。
#6の回答もありがとうございます。
No.6
- 回答日時:
賃金クエリを
SELECT 賃金台帳.社員ID, 賃金台帳.氏名, 賃金台帳.金額, DLookUp("ID","月額表",[金額] & " >= フィールド1 And " & [金額] & " < フィールド2") AS フィールドA
FROM 賃金台帳;
とすればいいのでは?
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 さんの式でも結果は同じです。
毎回迅速でしかもご丁寧な回答をありがとうございます。本当に嬉しく思っています。
何度もド素人な質問ばかりをしてしまいますが、
教えていただいたようにクエリでSQLビューを開いたら
既に
SELECT*************; と構文が書かれていたのでそのまま;の後ろに貼ったらダメだったので、;を取ってみたのですがダメでした。
SQLに直接書くのは初めてでぜんぜんわかりません・・・こんなに丁寧に教えていただいて申し訳ございませんが、また教えていただけますか?昨日今日で色々勉強させていただいてます。ありがとうございます。
No.4
- 回答日時:
両テーブルをクエリデザインビューに取り込み
結合はしないで
金額フィールドの抽出条件欄に
>=フィールド1 and <フィールド2
と書いてIDフィールドを取り出せば該当するものを持ってこれます
回答ありがとうございます。
回答いただいたようにやってみたのですが・・・
何かが間違えているのか、該当のものが何も無い状態になってしまいます・・・・。
No.3
- 回答日時:
もちろん、直接に SELECT文を書かれてもOKです。
SELECT 賃金.ID, 賃金.賃金, (SELECT 月額表.ID FROM 月額表 WHERE [賃金] Between [月額表]![フィールド1] And [月額表]![フィールド2])
FROM 賃金;
下に頂いた回答が難しかったので、直接上記のように入力したのですが、うまくいきませんでした。
賃金台帳クエリには
社員ID/氏名/・・・/金額/フィールドA/とあり
このフィールドAに月額表のIDを返したかったのですが、
月額表のようにIDがないので
(SELECT 賃金台帳.金額,(SELECT 月額表.ID FROM 月額表 WHERE [金額] Between [月額表]![フィールド1] And [月額表]![フィールド2])
FROM 賃金台帳;)
と直接書いたのですがそれがいけなかったのでしょうか。。。
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
この回答への補足
昨日に続き回答ありがとうございます。
ただちょっと私には高度すぎて、クエリフィールドに直接構文を入れる以外に上記のクエリをどうやって作成したらよいかが分からなくて・・長い回答頂いたのにすみません。
でも本当にありがとうございます。
No.1
- 回答日時:
いくつか方法があります。
定型パターンがあるなら数式で答えを出す。
テーブルを作って値を参照する。
そのようなファンクションを作る。
参考URL:http://oshiete1.goo.ne.jp/qa2977094.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) Accessクエリで年月フィールドを年のみで抽出する方法について 2 2022/08/29 18:10
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「A,B組の女子の氏名のよみ。 1 2023/05/16 15:28
- Access(アクセス) Accessテキストボックス内に2つのフィールドの値を比較して大きい方の値を表示させる方法 1 2022/09/09 10:50
- Access(アクセス) お世話になっています いまクエリを作っています。。 デザインビューの画面の集計の欄で、「グループ化」 4 2022/09/17 17:03
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
差込印刷での全角表示について...
-
クエリで割り算する方法を教え...
-
ACCESSのデータに自動で半角ス...
-
エクセルデータをワードで差し...
-
クエリーで、全角混じりデータ...
-
ACCESS 重複データを1...
-
フィールドの更新がない
-
エクセルにおける「フィールド...
-
アクセスでのテキストデータ取...
-
ACCESSでフィールド名の変更(...
-
Word差し込み印刷のハイフン(...
-
Acsess アクセス のクエリで...
-
Access2000のクエリでクラスご...
-
Accessのハイパーリンクをクリ...
-
実行時エラー '3464': 抽出条件...
-
ACCESSで条件によってフォーム...
-
VBで使用するAccessのSQL(INSER...
-
アクセスのレポートがうまく印...
-
エクセル ピボットテーブル 支...
-
英数字のチェックをしたい ACC...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
差込印刷での全角表示について...
-
エクセルにおける「フィールド...
-
エクセルデータをワードで差し...
-
ACCESS 重複データを1...
-
フィールドの更新がない
-
クエリで割り算する方法を教え...
-
ACCESSのデータに自動で半角ス...
-
Word差し込み印刷のハイフン(...
-
Accessのハイパーリンクをクリ...
-
Acsess アクセス のクエリで...
-
アクセスのクエリでパラメータ...
-
ACCESSでフィールド名の変更(...
-
ACCESSで条件によってフォーム...
-
実行時エラー '3464': 抽出条件...
-
列を移動させるvbaコードを教え...
-
クエリーで、全角混じりデータ...
-
レコードの内容にハイフンをつ...
-
sqlserverにはグループ集計のfi...
-
Accessフィールド分割
-
ACCESSでフィールドに-(ハイフ...
おすすめ情報