入力に外部テキストファイルを使用するMSAccessデータベースがあります。
このテキストファイルを信頼していないので、データベースの汚染を避けるために、データをインポートする前に内容を検証したいと思います。
データは、それ自体で完全に正常に機能しているマクロを介してテキストファイルからインポートされます。マクロの「If」プログラムフローブロック内に挿入を行うクエリをラップしようとしています。If
ステートメント の条件を機能させるのに問題があります。
外部テキストファイルのソースはテーブルと呼ばれますUserStatistics
UserStatistics-CheckTxtFileIsCorrect
次のコードを含むクエリ()を作成しました。
SELECT *
FROM UserStatistics
WHERE (((UserStatistics.[Column1])="KNOWNGOODVALUE"));
マクロのIf
条件は現在、次のように設定されています。
count (*) from [UserStatistics-CheckTxtFileIsCorrect] >1
しかし、これはエラーになります。
私が試したものはすべて、「解析できません...」または「入力した名前が見つかりません...」というエラーで失敗します。
どんな助けでも大歓迎です!!
私が試したバリエーションのリストで更新:
Count([UserStatistics-CheckTxtFileIsCorrect])>1
-- "Access cannot find the name 'UserStatistics'
-- you entered in the expression"
Count[UserStatistics-CheckTxtFileIsCorrect] > 1 -- cannot parse
count (*) [UserStatistics] >1 -- "cannot parse..."
Count *
where [UserStatistics-CheckTxtFileIsCorrect]![User ID] = 'ABC' -- cannot parse
Count(select * from [UserStatistics]
where [UserStatistics]![Column1] = 'ABC') > 1 -- cannot parse
メジャーアップデート2
HansUpが提案しDCount
ました。式の基準部分を省略すると、If
条件が評価されます。しかし、私の目標を達成するには、基準の部分が絶対に必要です。
DCount("*","UserStatistics","[UserStatistics]![Column1] = 'ABC' ")>1
DCount("*","UserStatistics","Column1 = 'ABC' ")>1
DCount("*","UserStatistics",Column1 = 'ABC' )>1
上記のすべてでエラー2001が発生します
解決!
外部テキストファイルの列名にスペースが含まれていることがわかりました。したがって、DCountステートメントの基準の列は、次のように角かっこで囲む必要があります。
If DCount("*","UserStatistics","[User ID]='KNOWNGOODVALUE'")>1
Then
Do my Actions here....
Else
MsgBox Error here...
End If
私をに向けてくれたHansUpに感謝しますDCount
。