Access用VBAには、2つ以上の値の数学的最大値を見つける簡単な関数がありません。私はperl/php/ruby/pythonなどの他の言語から来たベースAPIにこのような機能を既に持っていることに慣れています。IIf(x > y, x,y)
私はそれができることを知っています:IIf(x > y, x,y)
。他の解決策がありますか?Accessでmax(x、y)関数がありません
答えて
私が読んで質問を解釈します:
どのようにして数字の配列の最大/最小を返すAccessで機能を実装していますか?ここで私が使用したコードは、(式IIf、すなわち、「即時もし」/「即時マックス」から類推して、「IMAX」という名前)です:アクセスはそれを実装しないだろう理由として
Public Function iMax(ParamArray p()) As Variant
' Idea from Trevor Best in Usenet MessageID [email protected]
Dim i As Long
Dim v As Variant
v = p(LBound(p))
For i = LBound(p) + 1 To UBound(p)
If v < p(i) Then
v = p(i)
End If
Next
iMax = v
End Function
Public Function iMin(ParamArray p()) As Variant
' Idea from Trevor Best in Usenet MessageID [email protected]
Dim i As Long
Dim v As Variant
v = p(LBound(p))
For i = LBound(p) + 1 To UBound(p)
If v > p(i) Then
v = p(i)
End If
Next
iMin = v
End Function
、それは非常に一般的ではありません必要なことは私のように思える。あまり「databasy」ではありません。あなたはすでに、ドメインと行のセットでMax/Minを見つけるのに必要なすべての機能を持っています。また、実装が非常に難しいことでもなく、必要なときにワンタイム比較としてコーディングするだけでもあります。
多分上記は誰かを助けるでしょう。
おそらく、あなたはDMAXとDMINまたはSQL MAXを使用し、アクセスでデータベースを操作するだけだと思っていたでしょうか?
私はまた、理由について興味があります。それは一時テーブルを作成してテーブルにフォーム値を追加し、結果を得るためにテーブル上でDMAXまたはMAX-クエリを実行する必要があります。
はい、私が使用している値はデータベースにありますが、同じ行の2つの列にあります。これは単に集計Maxではなく、単純な数学Maxです。 – DGM
私は小さなprojMax()関数を作成してこれに対処することが知られていました。 VBAはおそらく強化されているわけではありませんが、適切なMax(およびMin)関数を追加するだけの場合は、自分の関数と競合しません。ところで、元のポスターはIIFを行うことを示唆しています...それはうまくいきますが、私の機能では、ヌルが関数を破壊するのを防ぐためにNz()を2回投げます。
DGMのIIFステートメントの使用とDavidのFor/Nextループの使用が好きだったので、それらを組み合わせています。
アクセスのVBAに厳密な型チェックがないので、変数を使用してすべての数値、整数、および小数点を保持し、戻り値を再入力します。
私のパラメータ検証をキャッチするためのHansUPへの功績:)
コメントを追加してコードをより快適にしました。
Option Compare Database
Option Base 0
Option Explicit
Function f_var_Min(ParamArray NumericItems()) As Variant
If UBound(NumericItems) = -1 Then Exit Function ' No parameters
Dim vVal As Variant, vNumeric As Variant
vVal = NumericItems(0)
For Each vNumeric In NumericItems
vVal = IIf(vNumeric < vVal, vNumeric, vVal) ' Keep smaller of 2 values
Next
f_var_Min = vVal ' Return final value
End Function
Function f_var_Max(ParamArray NumericItems()) As Variant
If UBound(NumericItems) = -1 Then Exit Function ' No parameters
Dim vVal As Variant, vNumeric As Variant
vVal = NumericItems(0)
For Each vNumeric In NumericItems
vVal = IIf(vNumeric < vVal, vVal, vNumeric) ' Keep larger of 2 values
Next
f_var_Max = vVal ' Return final value
End Function
2つの関数の唯一の違いは、IIFステートメントのvValとvNumericの順番です。
各句のforループは内部VBAロジックを使用してループと配列の境界チェックを処理し、 "Base 0"は配列インデックスを0で開始します。
どちらの関数もNullに問題があります。私はこれがより良いと思う。
Public Function iMin(ParamArray p()) As Variant
Dim vVal As Variant, vMinVal As Variant
vMinVal = Null
For Each vVal In p
If Not IsNull(vVal) And (IsNull(vMinVal) Or (vVal < vMinVal)) Then _
vMinVal = vVal
Next
iMin = vMinVal
End Function
あなたはアクセスVBA内Worksheetfunction.max()
またはworksheetfunction.min()
を行うことができます。お役に立てれば。
- 1. JS $( 'x')。myfunctionは関数ではありません
- 2. タイプXは「コンストラクタ関数タイプ」(TS2507)ではありません
- 3. ControlParameter 'y'でコントロール 'x'が見つかりませんでした
- 4. generate_series()関数がありません。PostgreSQL
- 5. C++:クラスXにはYという名前のメンバーがありません
- 6. C:struct XにはYという名前のメンバーがありません。
- 7. なぜatan2 Y、XではなくX、Yに引数がありますか? Cでは
- 8. hoverIntent()関数ではありません
- 9. dojo.tooltipdialogキャンセル(X)ボタンがありません
- 10. Datediffの返却日数年数はありません。Access 2007
- 11. C++関数ポインタ。一致する関数がありません
- 12. オブジェクト関数は関数ではありません
- 13. サイファークエリで「関係がありません」
- 14. iTunes Connect Accessでアカウントがありません
- 15. Delphi:VarIsBoolean()関数はありません?
- 16. y(x)関数の算術演算R
- 17. Django 1.3のテストエラー:ValueError:list.remove(x):xがリストにありません
- 18. 'numeric_limits'がこのスコープ内で宣言されていませんでした。 'max()'の呼び出しで一致する関数がありません
- 19. Jaroery caroufredselスクリプトエラー 'が関数ではありません'
- 20. メソッド名が関数ではありません
- 21. boost_unorderedのハッシュ関数ですが、デフォルトはありませんか?
- 22. TypeError:$(...)。ツールヒントが関数ではありません
- 23. Node.js async parallel TypeError:タスクが関数ではありません
- 24. Uncaught TypeError:kendo.data.TreeListDataSourceが関数ではありません
- 25. DbSet <entity> EF 6.0で.Load()関数がありません
- 26. TypeError:Dbschema(マングーススキーマ)が関数ではありません
- 27. Firebase TypeError:childSnapshot.child(...)。セットが関数ではありません
- 28. mongooseオブジェクトメソッドが関数ではありません
- 29. NodeJs:TypeError:require(...)が関数ではありません
- 30. Uncaught TypeError:store.getStateが関数ではありません
それは、質問の1年後に投票を下回るよりも便利です。 :) – DGM
私はそれが問題がどれほど些細なことかを考えれば、早く答えを得られなかったことに驚いています。おそらく、質問が対立していた(アクセスが悪かったため)回答を知っていた人々が、チップの何かを肩に持っているような人を助けようとするのをやめさせてしまったからです。 –
データベース開発ツールにこのような関数が組み込まれていないのはなぜですか?このような関数よりもデータベース関連の漏れがはるかに多くあります。 –