• 締切済み

アクセスでやる一番いい方法。。

よろしくお願いします。 以前に似た質問で教えてもらったのですが、、、、、 下記のようなデータで、下三けたは連番で、前は識別番号です この場合最後の連番の値を知りたいのですが簡単に出来る 方法を教えてください。 databaseの経験あります(10年以上前)しかし、今 書いてある(式)ものを見ても解読できません、help、ネットで 調べましたがよく解りません、一つでも出来ると少しずつ 解ると思います、どうぞよろしくお願いします。 A1-01-001 A1-01-002 A1-01-003・・・・ A2-01-001 A2-01-002 A2-01-003・・・・ B1-01-001 B1-01-002 B1-01-003・・・ C1-02-003

みんなの回答

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.7

このテーブルならあのクエリでできます 循環参照になどなるはずがありません 原因はアップされていないところにありますね 実物を見ないとバグつぶしは難しそうです 周りに誰かAccessがわかる人はいないのですか

lotsqq
質問者

お礼

ありがとうございました。 周りに誰もいなかったので。 同じ種類のものをいくつか作って試したのと 家、会社のコンピュータでも同じerrが出るので 何か足りないのでしょうね。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.6

クエリにおかしいところはないようですね となると原因はテーブルのほうでしょう 元になっているテーブルはどういうものですか? 最初にアップしたもののように省略せずに テーブルの情報を出してください テーブル2となっていますが1もあるならそれもね

lotsqq
質問者

お礼

テーブル1をつけようとしましたが お礼内容のところには貼り付けっ出来ない様です。

lotsqq
質問者

補足

ありがとうございます。 いっぱいつくり過ぎました。試すつもりで、 tableは ID オートナンバー 装置番号 テキスト型で、 ID 装置番号 1 31-02-001 2 31-02-004 3 31-02-005 4 11-02-003 5 11-02-003 6 11-02-003 7 21-02-001 8 21-02-002 9 21-02-003 です。 よろしくお願いします、 本当に助かります。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.5

そんな難しいクエリじゃありません たぶんつまらないミスをしているのでしょう そのうまくいかないクエリをSQLビューで表示し そこに書かれているものをここにアップしてください

lotsqq
質問者

補足

何度もすみません 下記です。 これだと最後はselectで指定してる別名 装置番号が循環参照を発生していますというerrでとまっています。 (SELECT Left([装置番号],5) AS グループ ,Max([装置番号]) AS 番号 FROM テーブル2 GROUP BY Left([装置番号],5);)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

なぜクロス集計? 普通の集計クエリじゃだめなの 前にアップした方法で出来るクエリのSQLは SELECT Max(テーブル名.フィールド名) AS フィールド名の最大 FROM テーブル名 GROUP BY Left([フィールド名],5); 結果 IDの最大 A1-01-003 A2-01-003 B1-01-003 C1-02-003

lotsqq
質問者

お礼

ありがとうございました。 同じデータを同じようにクエリを作り 試しましたが結果は出ませんでした。 クエリでerrが出続けあきらめました。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

フィールドの左5桁をグループに指定し最大値を求めるだけです クエリデザインビューなら Left(フィールド名,5) という式フィールドを作り 集計クエリに変えて 式フィールドをグループにし、元のフィールドの最大を求めます

lotsqq
質問者

お礼

ありがとうございました。 これも試しましたがうまくいきませんでした。

lotsqq
質問者

補足

たびたびすみません。 クロス集計クエリを作りました。 朝から取り組んでいます。 識別番号が多いため横広がりです、これを最大値だけ 出すように 最大値: Max(Right([機器番号],3)) と入れていますが 括弧が多いとか(|)の縦棒がないとかでデータになりません。 何がおかしいでしょうか?

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

テーブルの最後のレコードでよいというなら http://www.feedsoft.net/access/sql/sql54.html ーー SQLで SELECT LAST(氏名) FROM 社員2 クエリ; のように氏名を連番にかえて実行する手もあるとおもう。 >、レコードがテーブルに入力されたときの順序 に基づいて、削除されていない先頭または最後のレコードを返します。 では使えないかな。

lotsqq
質問者

お礼

ありがとうございます。 最後のレコードではなく識別番号の最後の連番なので 無理みたいです。

lotsqq
質問者

補足

ありがとうございます。 詳細をよく見てみます。やれるかどうか試します。 解らないところまたよろしくお願い致します。

  • keirika
  • ベストアンサー率42% (279/658)
回答No.1

テーブルを元にクエリを作るのが一番だと思います。 フィールドに最大値: Max(Right([データ],3))と入れて保存し実行。 意味はデータの右(Right)から3桁を取り出してその中で最大(Max)を抽出する。

lotsqq
質問者

補足

ありがとうございます。 下記はどういう意味でしょうか? >テーブルを元にクエリを作るのが一番だと思います。 たとえばどんなクエリですか? 下の2段は理解できました。 よろしくお願いします

関連するQ&A

専門家に質問してみよう