|
>ただ、自分自身がいまVBAを使っているのかSQLを使っているのかも
>混乱してきたので、
今自分が書いているのが、VBAなのかSQLなのかは、あまり神経質になる必要はない
と思います。
ただ、Filterプロパティに設定する文字列中に書いていけないVBA用語があるということを
頭の片隅に置いておけば十分だと思います。
>ただ、利用者IDや口座番号は
>抽出条件でデータ型が一致しません。
とのことですが、
>strFilter = " AND " & BuildCriteria("利用者ID", _
> dbLong, Me.txt利用者ID)
のコードを見る限り、利用者IDは、「dbLong」つまり長整数型ですね。
他方、テーブル構成を見てみると、利用者IDはテキスト型だと書いてありました。
だから、データ型が一致しないというエラーになります。
>利用終了者にチェックを入れると実行時エラー3075
>不要な')'があると指摘されます。
strFilter変数に何が格納されているか確認してみましょう。
「strFilter = "(" & strFilter & ") or 利用終了者"」のコードで付与した
「(」は、Mid関数を通すことで消されてしまっているはずです。
だから、このコードで付与した「)」が余計な括弧になってしまっています。
これへの対策は、ちょっと面倒ですね。
strFilterへ格納する順番を変えるというのが1つの方法です。
もっとも、ただ順番を変えるだけではだめです。
strFilter変数の冒頭5文字は、Mid関数により消してしまうわけですから、
「(」が冒頭の「 AND 」よりも後になるようにして、strFilter変数へ格納しなければいけません。
他の方法として、先頭の「 AND 」の前に「(」を付加するのではなく、
Replace関数を使って、先頭の「 AND 」が「 AND (」となるように文字列を変える
という方法もありですね。
>開始日、終了日においては検索機能を果たさず、
>Mid関数前: AND 開始日 >= ##
>となります。
これについては、何度も指摘しているんですが。
「If Not IsDate(Me.txt開始日) Then」を日本語で言えば、どんな意味になるのか、
そして、そういう条件でいいのかを考え直してみてください。
余談になりますが、「If Not IsDate(Me.txt開始日) Then」というコードの書き方は、
私は良くないと思っています。
1つは、「= True」を省略している点です。
ネット上でコード例を見てみると、
「= True」を省略しているコード例の方がはるかに多いのですが、
数か月後にコードを読み直したときに、
「= True」が省略されていると、意味が取りにくいんですよね。
慣れの問題だとは思うのですが、私は、「= True」は省略しないようにしています。
もう1つは、「Not」です。
「Not」があるために意味が取りにくくなっています。
ここは、「Not」と使わずにコードを書いた方が、
後でコードを見たときに意味を取りやすいと思います。
なお、「Not」と使わずにコードを書くためには、
「If Not IsDate(Me.txt開始日) Then」というコードの日本語訳がしっかりできていないと、
「Not」を使わないコードは書けませんよ。
|
|