プロが教えるわが家の防犯対策術!

Accessのクエリで、Left関数を使用して、7桁の数値を抜き出す方法。
IDが8桁で入力されているのですが、左から7桁だけを抜き出して、全てのレコードを表示させたかったのですが、誤って入力されている7桁のIDしか表示されませんでした。
いつもExcelを使用している感覚だったので、文字の左から7桁の数値や文字列を抽出して表示してくれるものと思っていました。
元のテーブルに入力されているIDを変更することなく、
クエリで、7桁だけにして、その取り出した7桁で区別し、グループとして認識し合計を出したいと考えているのですが、どうすればよいのでしょうか。
宜しくお願い致します。

A 回答 (5件)

>Left関数をする前は、5000行程なのですが、関数を加えたとたん4300程度に減ってしまいます。



関数を加えるのでは無く、関数だけ(演算フィールドのみ)のクエリを作成をして実行させます
単にleft関数で左から何文字取れという演算フィールドしか持たないクエリを実効させれば、指定した桁数に満たない場合には実際にある桁数まで、一文字も入っていない場合には0を返して、全データ分のクエリ結果を返します

全件分のデータが帰って来ないという事は作成しているクエリに問題ありの可能性高いです

先の書き込みに書きましたが、手順は演算フィールドのみのクエリを作成し実行させ全データが取得出来る事を確認してから、この演算フィールドのみのクエリに必用なフィールドを追加してゆくって事してください
「Accessのクエリで、Left関数を使」の回答画像5
    • good
    • 1

8桁から左7桁抜き取りはLEFT使うことで問題無いですが、後ろ7桁となってるなら1桁目が実データ上は無くて7桁しか格納されてない?。



数値8桁の項目に01234567と入れたら実際は1234567値で関数結果もそれに従う。

こんなことは確認していると思うので、どこか見間違いがあるか、です。

可能なら関数式と実行値を提示して下さい。

この回答への補足

>>8桁から左7桁抜き取りはLEFT使うことで問題無いですが、後ろ7桁となってるなら1桁目が実データ上は無くて7桁しか格納されてない?。

確かに、8桁や7桁だったりばらばらです。
7桁しか入力されていないのにLeftで7桁取り出すのは不可能なのですか?
その場合は、どのような式になるのでしょうか?
Excelみたいに、IF(Len[ID]=7,"",left(7))みたいな感じにすればよいのでしょうか。

宜しくお願いいたします。

補足日時:2010/07/07 23:25
    • good
    • 0

ANo.3で図が間違っていました。


すみません 差し替えます。
「Accessのクエリで、Left関数を使」の回答画像3
    • good
    • 2

クエリーデザインで表示項目を設定すると、他の項目は表示されません。


図のように必要な項目をドラッグします。
全ての項目の場合は * をドラッグします。
「Accessのクエリで、Left関数を使」の回答画像2
    • good
    • 0

クエリの中に演算フィールド作ってやれば抽出できますよ



関数はExcelと同じ left関数使えばいい

クエリのフィールド部分に 抽出:left([ID],7) 
ID部分は自分のテーブルの該当するフィールド名に置き換えて

その他の部分には何も入力せず、表示の部分だけチェックが入っている事確認してクエリを実行してください

抽出というフィールド名に、IDから左から7文字取った全レコードが表示されるはずです

このクエリにそれ以外に抽出したいフィールドを加えてクエリを修正していけば、どこで自分が作成したクエリに問題が有るのかわかるでしょう

作成してるクエリに問題があるので思っている動作をしてくれないんだと思いますよ

この回答への補足

データーは7桁だったり、8桁だったり、ばらばらなのですが、Left関数をする前は、5000行程なのですが、関数を加えたとたん4300程度に減ってしまいます。
何か原因があるのでしょうか。関数のウィザードを使用して、式を入力しているので、私自身の式自体が誤っているのかもしれません。(ウィザードだと余計なものまで入ってくるので、取り合えず削除して見ます。)

補足日時:2010/07/07 23:18
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A