次の方法で共有

Access2007について質問です

Anonymous
2017-04-13T02:04:00+00:00

お世話になります。

現在Access2007を使用しています。

商品の寸法サイズのフィールド(フィールド名:寸法明細)があり、

10×150×100

10×200×250

3×200×250

3×250×500

のような数値が入っています。

クエリでこのフィールドから抽出する際に

左の10や3のみを抜き出したいです。

エクセルでのleft関数のようなものを用いるにしても、1ケタと2ケタの場合があり、

条件にどのような数式を入れたらいいのかわかりません。

教えていただけると助かります。

よろしくお願いします。

** モデレーター注 **

この質問は [Office | Access |Windows 8 | Office 365 for business] のカテゴリーに投稿されましたが、内容から判断し、こちらのカテゴリに移動いたしました。適切なカテゴリーに投稿すると、返信や回答が得られやすくなり、同じ質問を持つ他のユーザーの参考にもなります。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

9 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2017-04-14T00:38:49+00:00

    試させていただきました。しかし、「式が正しく入力されていないか、複雑すぎるために評価できません。たとえば数式に複雑な要素が多すぎます。変数に式の一部を割り当て、式を簡単にしてください。」と表示されてしまいます。

    現状のクエリをSQLビューにして表示されるSQL文をコピーして貼り付けてもらえますか。

    また、クエリに含まれるテーブルは、ローカルのテーブルですか、それともリンクテーブルですか。

    リンクテーブルの場合、リンク先はAccessファイルですか、それても別のデータベースですか。

    また、新規にクエリを作成して、寸法明細 を含むテーブルを追加して、

    フィールドには、

    式1: Val([寸法明細])とだけ設定して表示させた場合もエラーがでますか。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2017-04-14T00:23:42+00:00

    単純に

    Val([寸法明細])

    でもいいですね。

    Val関数は、文字列の先頭から数値として認識できる文字まで読み取って数値に変換します。

    Val 関数

    hatena19様

    ご回答ありがとうございます。

    試させていただきました。しかし、「式が正しく入力されていないか、複雑すぎるために評価できません。たとえば数式に複雑な要素が多すぎます。変数に式の一部を割り当て、式を簡単にしてください。」と表示されてしまいます。

    他に抽出条件として、計上日フィールドにBetween [開始日付] And [終了日付]を入力しています。

    こちらの数式と組み合わせているのが問題なのでしょうか?

    解決方法をご存じでしたら、教えていただきたいです。

    よろしくお願いします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2017-04-14T00:07:55+00:00

    こんにちは。

    left([寸法明細],instr([寸法明細],"×")-1)

    こんな感じでいかがでしょう?

    InStr 関数は今回の式だと、

    「第一引数で指定した文字列の中で、第二引数で指定した文字が何文字目にあるか」

    を返す関数になります。

    https://msdn.microsoft.com/ja-jp/library/cc410239.aspx

    「10×150×100」の場合、InStrの結果は3になります。

    このままLeft関数と組み合わせるとLeft関数は「10×」と×を含めて返してしまうので、

    InStr関数の戻り値に-1をしています。

    ちなみに検索文字が見つからなかったとき、InStrは0を返し、Left関数がエラーになってしまうので、

    ×が存在しない可能性があるのであれば、もう一工夫必要になります。

    ずっち様

    ご回答ありがとうございます。返信が遅くなり申し訳ありません。

    さっそく、試してみましたが、「ODBC 呼び出し失敗しました」というエラーが表示されてしまいます。

    Access初心者のため、何が問題とされているのかよくわかりませんでした。

    数式自体の入力ミスではないようなのですが、他の抽出条件との問題なのでしょうか?

    他に抽出条件として、期間を定めるためにBetween [開始日付] And [終了日付] を入力しています。

    解決方法をご存じでしたら、教えてください。

    よろしくお願いします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2017-04-13T04:43:36+00:00

    単純に

    Val([寸法明細])

    でもいいですね。

    Val関数は、文字列の先頭から数値として認識できる文字まで読み取って数値に変換します。

    Val 関数

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  5. Anonymous
    2017-04-13T04:04:40+00:00

    こんにちは。

    left([寸法明細],instr([寸法明細],"×")-1)

    こんな感じでいかがでしょう?

    InStr 関数は今回の式だと、

    「第一引数で指定した文字列の中で、第二引数で指定した文字が何文字目にあるか」

    を返す関数になります。

    https://msdn.microsoft.com/ja-jp/library/cc410239.aspx

    「10×150×100」の場合、InStrの結果は3になります。

    このままLeft関数と組み合わせるとLeft関数は「10×」と×を含めて返してしまうので、

    InStr関数の戻り値に-1をしています。

    ちなみに検索文字が見つからなかったとき、InStrは0を返し、Left関数がエラーになってしまうので、

    ×が存在しない可能性があるのであれば、もう一工夫必要になります。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません