• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESS VBAにてDlookupとDmin)

ACCESS VBAでDlookupとDminを使用して商品サイズに応じた梱包材を取得する方法は?

山田 太郎(@f_a_007)の回答

回答No.4

>SizeW < 内寸1 >SizeD < 内寸2 >SizeH < 内寸3 >をすべてクリアした段ボールの中で一番軽い箱のIDを取得がしたいです。 SELECT TOP 1 * FROM 梱包材台帳   WHERE (内寸1>18 AND 内寸2>19 AND 内寸3>20)   ORDER BY 重量 となりますが・・・。ただ・・・。 SELECT TOP 1 * FROM 梱包材台帳   WHERE (内寸1>18 AND 内寸2>19 AND 内寸3>20)         OR         (内寸1>19 AND 内寸2>18 AND 内寸3>20)   ORDER BY 重量 と、天地は厳守で左右と奥行とはどちらに合致してもOKなのでは????? Q、上記のようなSQLを書く場合どこに書くものなのでしょうか? A、通常はイベントプロシージャに書くことになるかと思います。 例えば、添付図のようなフォームだと仮定すると・・・。 1、幅、奥行、天地の寸法を入力する。 2、選択オプションは、キッチリとユトリの二つ。 3、検索結果はリストボックスに表示する。 テストでは、10×10×10に合致するユトリサイズを表示すると共に選択しています。このフォームのコードは次のようです。 Option Compare Database Option Explicit Private Sub Form_Load() End Sub Private Sub sizeD_AfterUpdate()   DoSelect End Sub Private Sub sizeH_AfterUpdate()   DoSelect End Sub Private Sub sizeW_AfterUpdate()   DoSelect End Sub Private Sub DoSelect()   Dim intW As Integer   Dim intD As Integer   Dim intH As Integer   Dim strSQL As String      intW = Val(Me.sizeW & "")   intD = Val(Me.sizeD & "")   intH = Val(Me.sizeH & "")   If intW * intD * intH > 0 Then     '     ' SQL文の基本形     '     strSQL = "SELECT TOP 2 * FROM 梱包材台帳 WHERE " & _          "内寸1> WWWWW AND 内寸2> DDDDD AND 内寸3> HHHHH " & _          "ORDER BY 重量"     '     ' SQL文のWWWWW、DDDDD、HHHHHを入力値と置換     '     strSQL = Replace(strSQL, "WWWWW", Trim(intW))     strSQL = Replace(strSQL, "DDDDD", Trim(intD))     strSQL = Replace(strSQL, "HHHHH", Trim(intH))     '     ' リストボックスに該当する梱包材料のトップ2を表示     '     Me.リスト_該当する梱包材料.RowSource = DBSelect(strSQL)     '     ' オプションによって選択する材料を決定     '     Me.リスト_該当する梱包材料.Value = Me.選択オプション   End If End Sub なお、ここではVBAを簡略化するために自作のDBSelect()を用いています。また、その兼ね合いでリストボックスのタイプは”リスト”にしています。 【選択オプションと求める答えとの関係】 ここでは、一応、リストボックスの値が求めるものになるようにしています。そうすることで2番目を求めるというSQL文の作成を回避しています。ユーザーには、キッチリとユトリとの双方は目で確認できるので、それで良いという考えです。 PS、DBSelect() Public Function DBSelect(ByVal strQuerySQL As String, _              Optional colDelimita As String = ";", _              Optional rowDelimita As String = ";") As String On Error GoTo Err_DBSelect   Dim i      As Integer   Dim J      As Integer   Dim R      As Integer ' 行インデックス   Dim N      As Integer ' 行総数 - 1   Dim rst     As ADODB.Recordset   Dim fld     As ADODB.Field   Dim strList   As String ' 全てのデータを区切子で連結して格納      Set rst = New ADODB.Recordset   With rst     .Open strQuerySQL, _        CurrentProject.Connection, _        adOpenStatic, _        adLockReadOnly     If Not .BOF Then       N = .RecordCount - 1       .MoveFirst       For R = 0 To N         For Each fld In .Fields           With fld             strList = strList & .Value & colDelimita           End With         Next fld         strList = Mid(strList, 1, Len(strList) - 1) & rowDelimita         .MoveNext       Next R     Else       strList = ""     End If   End With Exit_DBSelect: On Error Resume Next   rst.Close   Set rst = Nothing   DBSelect = IIf(Len(strList) > 0, Replace(strList & "[END]", rowDelimita & "[END]", ""), "")   Exit Function Err_DBSelect:   MsgBox "SELECT 文の実行時にエラーが発生しました。(DBSelect)" & Chr(13) & Chr(13) & _       "・Err.Description=" & Err.Description & Chr(13) & _       "・SQL Text=" & strQuerySQL, _       vbExclamation, " 関数エラーメッセージ"   Resume Exit_DBSelect End Function

関連するQ&A

  • 学習机の梱包について

    学習机の梱包について 机を分解し 分解したサイズが 下記になります。 机。 高さ:66CM。 横:101CM。 幅:23CM 3辺合計:190CM 机の棚。高さ:36CM。 横:96CM。 幅:23CM 3辺合計:155CM 梱包を段ボールにしますが 段ボールを店にもらいにも行けないので 注文しようと思い 昨日、半日かけてネットで探しましたが サイズに合う段ボールが 見つからず あるショップでは オーダーメイドでも3辺合計1200mm以内とありました。 梱包方法に大きい段ボールを重ねてガムテープで貼りあわせれば 荷物として扱ってもらえるそうですが 強度が心配です。 机と棚は別の段ボールに梱包した方がいいですか? 自分で梱包が条件の配送業者に依頼するのですが 段ボールが見つからずに困っています。 宜しくお願い致します。

  • Access VBA について

    Access2000 をXPで動かしています。 全く別のフォルダーに入れている ABC.mdb を使って、 \Seikyu というフォルダーにある 請求sys.mdb の テーブル「銀行マスター」から銀行名等を取りだそう としています。 Dim DB As ADODB.Connection Set DB = New ADODB.Connection DB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Program Files\Seikyu\請求sys.mdb;" Set RS = New ADODB.Recordset RS.Open "銀行マスター", DB, adOpenKeyset, adLockOptimistic Me.T1 = RS!ID Me.T2 = RS!銀行名 Me.T3 = RS!口座 RS.Close DB.Close こうすると、 実行時エラー '3709': このコンテキストで閉じられているかあるいは無効です のエラーが表示されます。 どこが間違いなのでしょうか。

  • アクセスで在庫管理

    Access初心者ですが、在庫管理をアクセスでしたいと思います。Windowsでアクセス2003です。管理する商品の種類はそれほど沢山ないのですがサイズと色が沢山あります。商品マスターテーブルはこのようなテーブルです。サイズマスター、色マスターも 別途作りました。 商品ID 商品名 サイズ 色 ・・・・ 1   ABC   60A White 2 ABC 60A Black 3 ABC 70A WHite 4 ABC 70A Black ・ ・ このABCの商品以外にも他に7種類くらいの商品があり、それぞれに同じサイズ・色展開をしています。 ひとつのテーブルに全部まとめて7種類とも入れてしまえばよいのですが、他のサイズの在庫が増えた場合に追加しなくてはいけなく、一番下から追加して、テーブルを見たときにあまり綺麗ではありません。そこで商品マスターを7種類作って、新しいサイズ・色が加わった場合に各々の商品マスターに加えたいのです。この考え方は間違っていますか? さらに質問なのですが、レポートで出したい情報は「サイズ60Aは今いくつ在庫があるか?」です。7種類のテーブルからサイズ順に在庫がわかるようなレポートを出したいのですが、一つのテーブルからならやり方はわかるのですが、複数のテーブルからだとわかりません。 すみませんが、教えてください。自分でウェブ上のトレーニングなどを試みましたがギブアップです。宜しくお願い申し上げます。

  • SQLを教えてください

    お世話になります。 商品マスタと商品カラーマスタと商品サイズマスタがあります。 商品マスタの一覧を出したいのですが、 商品に付随しているカラーやサイズも一緒に表示したいのです。 商品マスタ(商品ID・商品名) 商品カラーマスタ(商品カラーマスタID・商品ID・カラーID) 商品サイズマスタ(商品サイズID・商品ID・サイズID) カラーマスタ(カラーID・カラー名) サイズマスタ(サイズID・サイズ) という構成です。 商品カラー、商品サイズは商品に対して複数あります。 表示したい一覧は 商品ID・商品名・カラー・サイズ で 商品1つに対して1行で表し カラー列、サイズ列は「赤・黒・茶」「S・M・L」というように 書きたいのです。 SQLでズバッと取得する方法はありますか? 1行1行、商品ごとに カラー・サイズをループしなくてはいけないのでしょうか? 教えてください。 よろしくお願いします。

  • 特大の段ボールの入手方法

    段ボールのことで、教えて下さい。 昨日、ヤフオクでジョーバフィットが売れました。 その際、商品を梱包する特大の段ボールが欲しいのです。 大きさは60cm×42cm×61cmです。 できれば500円以内で入手したいです。 普通サイズの段ボールは、店で買う、もらってくるなど簡単に入手できるのですが、 かなり大きいのでゆうパックなど配送業者で段ボールを買う等しか思いつきません。 どうやったら入手することができるか教えて下さい。 よろしくお願いします。

  • 特定比率の直方体の中に複数の直方体を自動的に隙間なく入れる方法

    たとえば段ボール箱(直方体)があるとします。 段ボール箱の縦横高の長さは特定の比率の縦横比ですが、大きさは決まっていません。 その段ボール箱の中に、できるだけ隙間なく、購入した商品を梱包するには、商品をいろんな方向に回転して梱包しなければなりません。 そうして商品すべてをできるだけ小さい段ボール箱に入れて、その段ボール箱の大きさとなるものを一つだけ知りたいのです。 プログラムは、パズルゲーム「ミキソミノ」の解法プログラムなどを参考にできるかと思いましたがわかりませんでした・・。 結果的に梱包した段ボールの大きさの数値だけわかればいいのですが・・。 よろしくお願いします。 言語はcoldfusionなので、アイデアだけでも教えていただければ幸いです。

  • 梱包用ダンボールについて

    落札された商品を梱包する段ボールなんですが、商品がちょうど 納まるよう自分で小さく切ろうと思ってるんですが、その前に・・・ 段ボールは無地でなくてもアリですか??? 定形外で発送予定してるんですが、子供のオモチャの空き箱がウチに たくさんあるんですが・・・果たしてこんなにゴチャゴチャ柄の入った 箱に入れて送っていいんでしょうか?箱の上からまた無地の紙かなんかで包んだほうがいいんでしょうか? 定形外は(送り状などなく)梱包したものに直接宛名を記入するんですよね?じゃぁ、ゴチャゴチャ柄の入った箱の場合どうしたらいいんですか? 皆さんどうしてらっしゃるんでしょうか・・・・

  • Accessのクエリの結果で。。。

    Access2000です。 「T_マスタ」 ・ID ・名前 ・会社名 「T_サブ」 ・ID ・年度 ・種類 「T_備考」 ・ID ・年度 ・種類 ・備考 というようなテーブルが3つあります。 これらを検索するために、すべてを入れた「Q_検索」というクエリを作成しました。 リレーションは T_マスタ:ID - T_サブ:ID T_サブ:ID - T_備考:ID T_サブ:年度 - T_備考:年度 T_サブ:種類 - T_備考:種類 となっています。 入力例として 「T_マスタ」 1  山田太朗  ●●株式会社 2  前田前   □□店 3  大坪拳   △△有限会社 「T_サブ」 1  2001  お中元 1  2002  お歳暮 1  2002  お中元 2  2001  お歳暮 2  2002  お中元 3  2001  お歳暮 「T_備考」 1  2001 お中元  お菓子 1  2002 お中元  水菓子 2  2002 お中元  果物 3  2001 お歳暮  ケーキ となっていたとすると、希望では、「Q_検索」クエリの結果が 6件となっていてほしいのに、実際は3件(T_マスタの件数分)しか出てこないのです。 これをすべて反映させるためにはどうしたらいいのでしょうか?

  • ヤフオク初出品したいのですが

    ヤフオク初出品したいのですが 商品はビックリマンチョコ1ケース30個入りでやろうと思います。 ・送料はいくらになるんでしょうか?(サイズ重さ) ・梱包に必要な段ボールや緩衝材の梱包の仕方など とにかくヤフオク初出品したいのですが やり方がよくわかりません梱包方法を是非とも教えて頂けると幸いです。

  • パソコンデスク 発送

    ネットショッピングで座卓用の組み立て不要のパソコンデスクを購入したのですが,腰が疲れるので,ほぼ新品の状態をオークションに出品しようと思っています。 購入時に梱包されていた段ボールはすぐに捨ててしまって手元にないんです。大きさも890*440*400となかなか大きく、適当な段ボールってなかなかないんです。 梱包時はジャストサイズの段ボールで送られてきたのですが・・・・。 何か良い梱包方法は発送方法を教えてもらえませんか? (直接引き取りは土地柄上田舎なので無理そうです)