- ベストアンサー
Accessのクエリで、Left関数を使用して、7桁の数値を抜き出す方
Accessのクエリで、Left関数を使用して、7桁の数値を抜き出す方法。 IDが8桁で入力されているのですが、左から7桁だけを抜き出して、全てのレコードを表示させたかったのですが、誤って入力されている7桁のIDしか表示されませんでした。 いつもExcelを使用している感覚だったので、文字の左から7桁の数値や文字列を抽出して表示してくれるものと思っていました。 元のテーブルに入力されているIDを変更することなく、 クエリで、7桁だけにして、その取り出した7桁で区別し、グループとして認識し合計を出したいと考えているのですが、どうすればよいのでしょうか。 宜しくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>Left関数をする前は、5000行程なのですが、関数を加えたとたん4300程度に減ってしまいます。 関数を加えるのでは無く、関数だけ(演算フィールドのみ)のクエリを作成をして実行させます 単にleft関数で左から何文字取れという演算フィールドしか持たないクエリを実効させれば、指定した桁数に満たない場合には実際にある桁数まで、一文字も入っていない場合には0を返して、全データ分のクエリ結果を返します 全件分のデータが帰って来ないという事は作成しているクエリに問題ありの可能性高いです 先の書き込みに書きましたが、手順は演算フィールドのみのクエリを作成し実行させ全データが取得出来る事を確認してから、この演算フィールドのみのクエリに必用なフィールドを追加してゆくって事してください
その他の回答 (4)
- layy
- ベストアンサー率23% (292/1222)
8桁から左7桁抜き取りはLEFT使うことで問題無いですが、後ろ7桁となってるなら1桁目が実データ上は無くて7桁しか格納されてない?。 数値8桁の項目に01234567と入れたら実際は1234567値で関数結果もそれに従う。 こんなことは確認していると思うので、どこか見間違いがあるか、です。 可能なら関数式と実行値を提示して下さい。
- shinkami
- ベストアンサー率43% (179/411)
- shinkami
- ベストアンサー率43% (179/411)
- tamu1129
- ベストアンサー率58% (1294/2222)
クエリの中に演算フィールド作ってやれば抽出できますよ 関数はExcelと同じ left関数使えばいい クエリのフィールド部分に 抽出:left([ID],7) ID部分は自分のテーブルの該当するフィールド名に置き換えて その他の部分には何も入力せず、表示の部分だけチェックが入っている事確認してクエリを実行してください 抽出というフィールド名に、IDから左から7文字取った全レコードが表示されるはずです このクエリにそれ以外に抽出したいフィールドを加えてクエリを修正していけば、どこで自分が作成したクエリに問題が有るのかわかるでしょう 作成してるクエリに問題があるので思っている動作をしてくれないんだと思いますよ
補足
データーは7桁だったり、8桁だったり、ばらばらなのですが、Left関数をする前は、5000行程なのですが、関数を加えたとたん4300程度に減ってしまいます。 何か原因があるのでしょうか。関数のウィザードを使用して、式を入力しているので、私自身の式自体が誤っているのかもしれません。(ウィザードだと余計なものまで入ってくるので、取り合えず削除して見ます。)
補足
>>8桁から左7桁抜き取りはLEFT使うことで問題無いですが、後ろ7桁となってるなら1桁目が実データ上は無くて7桁しか格納されてない?。 確かに、8桁や7桁だったりばらばらです。 7桁しか入力されていないのにLeftで7桁取り出すのは不可能なのですか? その場合は、どのような式になるのでしょうか? Excelみたいに、IF(Len[ID]=7,"",left(7))みたいな感じにすればよいのでしょうか。 宜しくお願いいたします。