• ベストアンサー

テキスト形式だけど「between a and b」を使うには?

Gin_Fの回答

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.8

> 何かおかしなところはありますでしょうか? > 一番右の「.」ではなく、右から2番目の「.」の位置を抽出するにはどのようにしたらいいのでしょうか? 仕様が変更になっていますので、どのみち今の記述では思ったような結果は 得られませんね (^^ゞ > CLngやMid関数は「新しい関数」には含まれないと思うので、 CLng ・ Mid 関数などは、そうなんですが、その関数だけではお望みの抽出は できないです。 > *.*.*.1 > *.*.*.2 > *.*.*.4 > *.*.*.10 この * の部分の桁数が固定なら大丈夫ですけど、そこは固定じゃないんですよね? また、ドット(.) の数は、固定でいいのでしょうか? > ほかの人も使うので、私だけがアップデートしてもダメなので、 アップデートをしなくても、ユーザー定義関数として登録してやれば、使うことは できます。 複数台で使うのであれば、その方法を使った方が無難ですね。 とりあえず、「仕様」を固めないことには解決策の提示もできないので、そちらを じっくり検討し、再度お知らせください。 (でないと、無駄なやりとりが続くことになってしまいます。)

w-inty
質問者

お礼

回答ありがとうございます。 *.*.*.の部分の桁数は固定です。 ですので、「9文字目より右側」という固定条件で大丈夫です。 ドットの数も固定です。 上記の条件でしたので、9文字目より右のデータと入力したデータの突き合わせで検索、ということでできそうだな、と思ったのですが。

関連するQ&A

  • Accessの検索で「~以外」

    VBAで検索フォームを作成しています。 普通は「○○にあてはまるもの」という検索ですが、 「○○以外のものを検索」というようにしたい場合はどのようにすればいいのでしょうか? 通常の検索はこんな感じです。 If Me!検索値.Value <> "" Then condKey = "(T_マスタ.フィールド like '*" & Me!検索値.Value & "*')" WhereCond = WhereCond & tempOper & condKey End If WhereCond = Mid(WhereCond, strCount + 1) DoCmd.OpenForm "F_検索結果", acNormal, , WhereCond access2000です。

  • Accessの検索フォーム

    以前にも似たような質問をして、その時は解決したのですが、また同じようなことでつまづいて、以前の回答をみて、 そのとおりにやってるつもりなのに、できなくて…。 テーブル1とフォーム1・フォーム2があります。 フォーム1に入力された情報をもとに、テーブル1の内容を検索して、フォーム2に表示するものを作成しています。 テーブル1には「***.***.**.☆」(情報)という形の情報が入っています。 *の部分の桁数は固定で☆は不定形です。(テキスト形式) フォーム1に入力された情報は「(***.***.)**.*」(検索1)や「(***.***.)**.**」(検索2)などです。 ※()内は入力せず テーブル1の情報の9文字目以降と、フォーム1に入力された情報を比べたくて、以下のようなものを作成しました。 (多少省略等があります) condKensaku = "(Mid(Val(テーブル1.情報),9) between " & Val(Me!検索1.Value) & " and " & Val(Me!検索2.Value) & ")" wherecond = condKensaku DoCmd.OpenForm "フォーム2", acNormal, WhereCond これを実行すると 実行時エラー '2501': OpenForm アクションの実行はキャンセルされました。 と出て、デバッグを押すと、 DoCmd.OpenForm "フォーム2", acNormal, WhereCond の行が黄色になります。

  • Accessの検索フォーム(CLng)で。

    検索フォームの項目は以下の通りです。 ○ AND  ○ OR 名前  [    ] 項目  [    ]▼  [    ]▼  [    ]▼ もとになってるテーブルは ・名前 ・項目1 ・項目2 ・項目3 ・項目4 ・項目5 というようなっています。 (項目1-5は数値データなのであいまい検索はしたくありません。) 検索ボタンのコードは Select Case Me!検索方法.Value Case 1 'or tempOper = " AND " strCount = 5 Case 2 'and tempOper = " OR " strCount = 4 End Select '名前 If Me!SyainName.Value <> "" Then condName = "(T_マスタ.氏名 like '*" & Me!SyainName.Value & "*')" WhereCond = WhereCond & tempOper & condName End If If Me!項目1.Value <> "" Then condKoumoku1 = "(T_マスタ.項目1 = " & CLng(Me!項目1.Value) & ")" condKoumoku2 = "(T_マスタ.項目2 = " & CLng(Me!項目1.Value) & ")" condKoumoku3 = "(T_マスタ.項目3 = " & CLng(Me!項目1.Value) & ")" tempCond = tempCond & " OR (" & condKoumoku1 & " OR " & condKoumoku2 & " OR " & condKoumoku3 & ")" End If If tempCond <> "" Then tempCond = Mid(tempCond, 5) WhereCond = WhereCond & tempOper & "(" & tempCond & ")" End If WhereCond = Mid(WhereCond, strCount + 1) DoCmd.OpenForm "F_検索結果_一覧", acNormal, , WhereCond これを実行すると クエリ式 '((OR OR))' の構文エラー:演算子がありません。 と出ます。 どこを訂正すべきでしょうか? Access2000です。

  • アクセスVBAの検索で。

    アクセスでカレンダーというかスケジュールを管理できるようなものをつくろうとしています。 非連結フォーム1に ・入力年 ・入力月 ・[1]-[45]まで(それぞれ年月が変わると日付がかわる) という感じで入っています。 T_用件というテーブルには ・年(数値型 ・月(数値型 ・日(数値型 ・用件(テキスト型) とあり、これをもとに「F_用件」フォームを作成してあります。 フォーム1のボタンの1つを例にとるとこんな感じです。 If Me![7].Value <> "" Then Year = "(T_用件.年=" & (Me!入力年.Value) & ")" Month = "(T_用件.月=" & (Me!入力月.Value) & ")" Day = "(T_用件.年=" & (Me![7].Value) & ")" WhereCond = WhereCond & " AND (" & Year & " AND " & Month & " AND " & Day & ")" End If WhereCond = Mid(WhereCond, 6) DoCmd.OpenForm "F_用件", acNormal, , WhereCond こうするとF_用件フォームは開くのですが、きちんと検索されてきません。 どこが悪いのでしょうか? よろしくお願いします。

  • BETWEEN A and B, and BETWEEN A and C

    BETWEEN A and B, and BETWEEN A and C このような英文を書きたいのですが何か簡潔に書く方法はないか教えていただけないでしょうか? よろしくお願いいたします。

  • Access検索フォームで範囲を指定しての検索

    クエリーで計算して出した結果をもとにフォームを使って検索をしたいのですが、うまくできません。 クエリーの計算式は誕生日から年齢を出すものが入っています。 フォームのボタンにVBAで '年齢 If Me!年齢開始.Value <> "" Then Age1 = "(Q_メイン.年齢 >= " & "0" & " and =< " & Me!年齢終了.Value & ")" WhereCond = WhereCond & tempOper & Age1 End If WhereCond = Mid(WhereCond, strCount + 1) DoCmd.OpenForm "F_検索結果", acNormal, , WhereCond となっています。 tempOperは、検索方法がORとANDが選べるようになっていて、それの結果が入っています。

  • 以下のアクセスの検索フォームで。。。

    検索フォームの項目は以下の通りです。 ○ AND  ○ OR 名前  [    ] 項目  [    ]▼  [    ]▼  [    ]▼ もとになってるテーブルは ・名前 ・項目1 ・項目2 ・項目3 ・項目4 ・項目5 というようなっています。 検索ボタンのコードは Select Case Me!検索方法.Value Case 1 'or tempOper = " AND " strCount = 5 Case 2 'and tempOper = " OR " strCount = 4 End Select '名前 If Me!SyainName.Value <> "" Then condName = "(T_マスタ.氏名 like '*" & Me!SyainName.Value & "*')" WhereCond = WhereCond & tempOper & condName End If '項目 If Me!Koumoku1.Value <> "" Then condKoumoku1 = "(T_マスタ.項目1 like '*" & Me!Koumoku1.Value & "*')" condKoumoku2 = "(T_マスタ.項目2 like '*" & Me!Koumoku1.Value & "*')" condSKoumoku3 = "(T_マスタ.項目3 like '*" & Me!Koumoku1.Value & "*')" tempCond = tempCond & " OR (" & condKoumoku1 & " OR " & condKoumoku2 & " OR " & condKoumoku3 & ")" End If If tempCond <> "" Then tempComd = Mid(tempCond, 5) WhereCond = WhereCond & tempOper & "(" & tempCond & ")" End If WhereCond = Mid(WhereCond, strCount + 1) DoCmd.OpenForm "F_検索結果_一覧", acNormal, , WhereCond これを実行すると クエリ式 '(OR((T_マスタ.項目1 like …')の構文エラー:演算子がありません。 と出ます。 どこを訂正すべきでしょうか? (項目を含まない状態ではうまく検索できてました。) Access2000です。

  • BETWEEN A AND B

    検索条件でBETWEEN A AND Bを使いたいのですが、 例えば、データが10件登録されています。 社員NO が 0番~9番まで登録されています。 BETWEEN文で 3番以降のデータを取り出したのですが どうしたらいいでしょうか

  • between A and Bについて

    between A and Bの使い方についての質問です。 「4時から6時の間に」と言いたいとき between four and sixと言うと思うのですが, between at four and at sixという言い方も可能でしょうか? 前置詞句が前置詞の目的語になる場合があると聞いたことがあるので, 上記の言い方が可能かどうか よろしくお願いいたします。

  • VBAを使用した検索フォーム

    複数項目あるフィールドの年齢から検索をしたくて以下のようにしました。 tempCond = "" '年齢 If Me!年齢開始.Value <> "" Then Nenrei1 = "(Q_メイン.年齢1 between " & Me!年齢開始.Value & " and " & Me!年齢終了.Value & ")" Nenrei2 = "(Q_メイン.年齢2 between " & Me!年齢開始.Value & " and " & Me!年齢終了.Value & ")" tempCond = tempCond & " OR (" & Nenrei1 & " OR " & Nenrei2 & ")" End If If tempCond <> "" Then tempCond = Mid(tempCond, 5) WhereCond = WhereCond & tempOper & "(" & tempCond & ")" End If これで実行をすると、 実行時エラー'2501'; OpenForm アクションの実行はキャンセルされました。 と出てしまいます。 上記の部分を記入するまでは検索ボタンは正常に動いていたのですが。 どこを直せばいいのでしょうか?