Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


515 / 9994 ←次へ | 前へ→

【12790】Re:複数抽出
回答  かるびの  - 15/3/31(火) 2:43 -

引用なし
パスワード
   >ただ、自分自身がいま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」を使わないコードは書けませんよ。

997 hits

【12753】複数抽出 ゆか 15/3/23(月) 15:21 質問[未読]
【12756】Re:複数抽出 かるびの 15/3/24(火) 4:22 回答[未読]
【12758】Re:複数抽出 ゆか 15/3/24(火) 14:14 質問[未読]
【12764】Re:複数抽出 かるびの 15/3/25(水) 2:08 回答[未読]
【12775】Re:複数抽出 ゆか 15/3/25(水) 18:56 質問[未読]
【12777】Re:複数抽出 かるびの 15/3/26(木) 2:26 回答[未読]
【12782】Re:複数抽出 ゆか 15/3/28(土) 17:08 質問[未読]
【12783】Re:複数抽出 かるびの 15/3/29(日) 2:09 回答[未読]
【12787】Re:複数抽出 ゆか 15/3/30(月) 20:51 質問[未読]
【12790】Re:複数抽出 かるびの 15/3/31(火) 2:43 回答[未読]
【12793】Re:複数抽出 ゆか 15/3/31(火) 22:23 お礼[未読]

515 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078190
(SS)C-BOARD v3.8 is Free