アクセス/VBA:dcountを正しく動作させることはできません
-
15-10-2019 - |
質問
結果に応じて、ボタンを有効/無効にするために使用しているコードの一部(新しい改訂を作成できる)を使用しています。
dcountが0を返す場合、次のリビジョンがまだ存在しない(したがって作成できる)を意味します(したがって、dcountが1を返す場合、次の改訂が既に存在します(したがってボタンは無効になります)
DCount("index_rit", "t_données_rit", "[RITn°]=" & Me.RITn°.Value & " AND [Revision]=" & Me.Revision.Value + 1)
私の問題は、何らかの理由で、レコードがDCountに入力された値に対応していても、まだ0を返すことです。
私はフィールドの[]なしでアリで両方を試しました。
また、index_ritの代わりに *を使用してみました...
何が間違っていましたか?
解決
とった。これはフォーマットの問題でした。Ritn°はフォームxx-xxなので、次のようにしなければなりませんでした。
"[RITn°]='" & Me.RITn°.Value & "' AND [Revision]=" & Me.Revision.Value + 1)
(単一の引用符を追加)
他のヒント
1つ目は、DCount(および他の「D」関数)が一般的にパフォーマンスのドラッグであると考えられていることです。このクイック機能に置き換えてみてください。あなたはそれにクエリを渡すだけで、それはレコードカウントを返します
Private Function GetRecordCount(strSearch as String) as Long
Dim rst As ADODB.Recordset
Dim RecCount As Long
Set rst = New ADODB.Recordset
With rst
.ActiveConnection = CodeProject.Connection
.CursorType = adOpenForwardOnly
.LockType = adLockReadOnly
.Source = strSearch
.Open Options:=adCmdText
if .EOF = true then
RecCount=0
else
RecCount=.Collect(0)
End If
.Close
End With
GetRecordCount = RecCount
Set rst = Nothing
End Function
これはADOを使用しますが、アクセステーブルを使用している場合はDAOを使用できますが、別の質問です。
所属していません StackOverflow