- 締切済み
Accessで文字列検索
Accessであるテキストボックスに入ってるデータから任意の文字列の位置を知りたくて、 関数を使ってみました。 使った関数はFINDとSEARCHですがどちらもダメでした。 Accessで使える文字列検索関数はないのでしょうか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- o23
- ベストアンサー率36% (64/175)
>テーブルの日付で >ge\年mm\月dd\日 >のように設定してあって、 >テーブルには >S59年11月18日 >のように入力されています。 日付/時刻型のフィールドに書式が設定されているわけですね? >このフィールド内の「年」の位置を取得したいのですが、 >「0」となってしまいます。 >9や11と設定すればきちんと位置が返ってくるので関数が間違えているのでは >ないと思うのですが。 書式に設定されている場合、そのような形式でデータが見えているだけで 内部の格納形式が変更されている訳ではないので”月”と言うデータは存在 しません。この場合9の位置も返っててこないはずですが・・・ >やはり一度西暦に直して/で検索っていうのをしないとだめでしょうか? InStr(Format([日付],"ge""年""mm月dd日"),"年")のようにすれば返って くると思いますが、そもそも"年"の位置を取得する目的は何でしょう? 例えば日付の一部分だけ取り出して表示したければ Format([日付],"ge")、Format([日付],"mm、Format([日付],"dd") Year([日付])=1984、Month([日付])、Day([日付]) のような形でどうでしょうか。
- redsky
- ベストアンサー率18% (66/360)
なるほど、全角の場合ですか・・・ Instrは、半角、全角、小文字、大文字の区別はしていないみたいです。 それなら、InstrB関数はどうでしょうか? 以下のURLを見つけたので、参考までに。
- muran
- ベストアンサー率31% (12/38)
KODAMARさん、こんにちわ Instr関数というのがありますよ? 詳細はヘルプで調べてみて下さい。 使用例) テキストボックスのコントロール名:txt1 任意の文字列 :"料" Dim i As Integer '料という文字の位置を格納する変数 i = InStr(txt1, "料") 結果・・・iに入ってくる内容はこうなります txt1 i 賃借料 → 3 町会費 → 0
- redsky
- ベストアンサー率18% (66/360)
Access97ですが、InStr関数を使ってできました。 以下はヘルプからの抜粋です。 Dim SearchString, SearchChar, MyPos SearchString ="XXpXXpXXPXXP" ' 検索対象の文字列を定義します。 SearchChar = "P" ' "P" を検索します。 ' 文字単位の比較を位置 4 から開始すると、6 が返されます。 MyPos = Instr(4, SearchString, SearchChar, 1) ' ビット単位の比較を位置 1 から開始すると、9 が返されます。 MyPos = Instr(1, SearchString, SearchChar, 0)
お礼
素早い回答ありがとうございます。 Instr関数、できました。 しかしまた問題が…。 テーブルの日付で ge\年mm\月dd\日 のように設定してあって、 テーブルには S59年11月18日 のように入力されています。 (実際の入力はs59/11/18) このフィールドをレポートへ持ってきても S59年11月18日 と表示されます。 このフィールド内の「年」の位置を取得したいのですが、 「0」となってしまいます。 9や11と設定すればきちんと位置が返ってくるので関数が間違えているのではないと思うのですが。 やはり一度西暦に直して/で検索っていうのをしないとだめでしょうか?