初めまして、
VBAのクエリで最大数値と エクセルのセルの数値を比較してエクセル側の数値がDBと比較して多いときのみ
最大数です。と表示させたいのですが、現在は
数値を比較して、多くても少なくても同じ結果になり、最大数です。 のメッセージがでます。
降順にはしてるのですが、何かsetできていないので ただ並べ替えただけの状態なのではと考えていますが
具体的にどうすればいいかわからず、、申し訳ありませんが
アドバイスをどうかお願いいたします。
※追加箇所:ここから
DBはACCESSになります。データベースの定義は
販売合計 テーブルは
伝票番号 整数
枝番 整数
受注番号 可変長
コード 文字列
数量 倍精度
単価 金額
調整額 金額
販売データ テーブルは
伝票番号 整数
得意先コード 文字列
発行日 日付
納品日 日付
請求月度 整数
売上額 金額
消費税 金額
調整額 金額
となります。
※ここまで
VBAコード
1Public Const 最大数注意行 As Long = 1 2Public Const 受管_最大発注警告列 As Integer = 14 3Public Const 数量列 As Integer = 14 4 5 6 If Cells(最大数注意行, 最大数注意列).Value <> 1 Then 7 QryString = "SELECT TOP 1 販売データ.数量" _ 8 & " FROM 販売データ" _ 9 & " LEFT JOIN 販売合計 ON(販売データ.伝票番号 = 販売合計.伝票番号)" _ 10 & " WHERE ((販売データ.コード)" _ 11 & " OR (販売データ.コード NOT LIKE '1%' AND 販売データ.得意先コード = '" & Trim$(Cells(対象行I, 得意先コード列).Value) & "'))" _ 12 & " AND 販売データ.数量 > " & 数量i _ 13 & " ORDER BY 販売データ.数量 DESC" 14 rstData.Open Source:=QryString, ActiveConnection:=ConI, CursorType:=adOpenStatic 15 16 17 If QryString > Trim$(Cells(対象行I, 数量列).Value) Then 18 19 rstData.Open Source:=QryString, ActiveConnection:=ConI, CursorType:=adOpenStatic 20 21 22 If QryString > Trim$(Cells(対象行I, 数量列).Value) Then 23 If MsgBox("最大数です" & vbCrLf & "中断しますか?", vbYesNo) = vbYes Then 24 Set rstData = Nothing 25 26 Exit Sub 27 Else 28 MsgBox ("進みます") 29 30 End If 31 End If 32 rstData.Close 33 End If
回答1件
あなたの回答
tips
プレビュー