• ベストアンサー

初心者なのですが・・・accessで抜けている番号を探すには?

すみません。検索してみたのですが見つからなくて・・・ぜひ教えてください。 使っているのは、ACCESS97です。 ある伝票の整理番号が連番になっています。データは入力されています。 抜けている整理番号を調べたいのですが、どういった方法があるでしょうか? クエリーでもできるでしょうか? 困ってしまってますので、なにとぞよろしくお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
  • sgh
  • ベストアンサー率61% (75/121)
回答No.5

こんにちは。 >で、せっかくなので実際やってみてからお返事したい!と思ってぺたぺた張ってみたりしたのですが、 >どうもうまくできなくて・・・ >何しろ初めてなので、何もわからなくって。 ごめんなさい。よく質問を読んでいませんでしたのでとんちんかんなレスをしたかもしれません。 どんなエラーが出るかによりますが、 「パラメータが少なすぎます。? を指定してください。」 と出た場合は「ID」と書いている全ての文字を「整理番号」に変更してみてください。 >StSQL = "select 整理番号 from テーブル1 order by 整理番号" >If RS!整理番号 = i Then 上記3カ所 「入力テーブルまたはクエリ '???' が見つかりませんでした。そのテーブルやクエリが存在していること、 または名前が正しいことを確認してください。」 と出た場合は、テーブル名が違っていますので以下の「テーブル1」の部分を修正してください。 >StSQL = "select 整理番号 from テーブル1 order by 整理番号" それ以外のエラーが出る場合は補足に書いてください。 あと、この方法では、大量に抜けているデータが存在する場合は、取得したデータをテーブルに書き込むなどの工夫が必要です。 #3のstorkさんが回答した方法等で解決しているのであれば、こんなやり方もあるんだ、くらいに思ってください。

nontaro
質問者

お礼

度々ありがとうございます!おかげさまで、なんとかできました!! 丁寧な回答、本当に感謝感謝です! これをきっかけにVBAにチャレンジしてみようと思います。

その他の回答 (4)

  • sgh
  • ベストアンサー率61% (75/121)
回答No.4

こんにちは。 以下のコードで実現できます。 テーブル名が「テーブル1」、ID列が「ID」で1から始まっているという前提です。 下記コードを貼り付けて、テーブル名を編集し実行するとイミディエイトウインドウに抜けたIDが表示されます。 一応実験済み。 Sub test1() Dim DB As DAO.Database Dim RS As DAO.Recordset Dim StSQL As String Dim i As Long Dim Flag As Boolean Set DB = CurrentDb StSQL = "select ID from テーブル1 order by ID" Set RS = DB.OpenRecordset(StSQL) i = 1 Do Until RS.EOF Flag = False Do Until Flag If RS!ID = i Then Flag = True Else Flag = False Debug.Print i i = i + 1 End If Loop RS.MoveNext i = i + 1 Loop Set RS = Nothing Set DB = Nothing End Sub

nontaro
質問者

お礼

お返事送れてすみません。 ありがとうございます~実際にコードを書いていただいて、しかもテストまで。 感激です! で、せっかくなので実際やってみてからお返事したい!と思ってぺたぺた張ってみたりしたのですが、どうもうまくできなくて・・・ 何しろ初めてなので、何もわからなくって。 でももう少しがんばってみます。回答本当にありがとうございました。

  • stork
  • ベストアンサー率34% (97/285)
回答No.3

VBAで照合するよりクエリで照合する方が楽ですよ~。 そこで連番の作成が問題になってきますが、件数によって 1.エクセルのオートフィルを使って連番を作成してアクセスでインポートする。 2.オートナンバー型を持つテーブルを作成して行挿入の処理をループをまわす。(これだけなら簡単でしょう?) 初心者だったら、1の方法がわかりやすいですね。 数万件以上であれば2の法が簡単です。 あとは、不照合クエリを作成してください。

nontaro
質問者

お礼

回答ありがとうございます! いろいろなやり方があるのですね~。1の方法なら私にもできそうです! 2の方は・・・すみません、初心者すぎてそれさえもわからず・・・とほほ。 がんばってみます!!

  • DrSumire
  • ベストアンサー率39% (264/666)
回答No.2

クエリーでもできるでしょうか? 面倒ですけど出来ますよ。 現実的ではないですが・・・ 伝票番号のフィールドだけを持つテーブルを作成して、検査したい開始番号から終了番号までのレコードを作成する。 クエリーで伝票TBとチェックTBを伝番でリンクしてプロパティをチェックTBの全てを表示する様に設定。 伝票TBの伝番以外の必須フィールドの条件をNullにする。 チェックTBの伝番を表示すれば、伝票TBに存在しない伝番だけ出てきます。 こんな面倒な事をするならVBAでチェックプログラムを書いたほうがスマートかと思いますが・・・・

nontaro
質問者

お礼

具体的に書いていただいてありがとうございます~。ほんとにスミマセン。 ふー、実は私もそれを思いついてみましたが、おっしゃるとおり現実的ではないですよね・・・ VBAについに踏み入れるべきかしら・・・。 チェックプログラムは難しいでしょうか? 参考になりそうなURLなどあったら教えていただけないでしょうか・・・ 前に本屋さんでVBAの本も見てみましたが、初心者向けなのにいきなりハイレベルでチンプンカンプン でした。田舎に住んでいるもので、本も少ないのです(涙)。

  • MarrowG
  • ベストアンサー率53% (41/76)
回答No.1

データベースは入力されているデータを検索するのは簡単ですが、無いものを検索することは出来ません。 仮に連番で整理番号が振られているのなら、マクロなりVBAなりで番号を+1しながら順番にレコードが存在するかどうかを確認するしかないと思います。

nontaro
質問者

お礼

早速の回答ありがとうございます。 やっぱりそうですか・・・ >マクロなりVBAなりで番号を+1しながら順番にレコードが存在するかどうかを確認するしかない すみません・・・マクロではどのように書くのでしょうか。 良かったら教えていただけませんか?難しいのでしょうか?

関連するQ&A

  • Access2000 連番の振り方

    次のようなテーブルに対して連番を振りたいのです。 伝票番号  日付   行番号   金額 00001   2007/01/01  1    1000 00001   2007/01/01  2    1000 00001   2007/01/01  3    1000 00002   2007/01/02  1    1000 00002   2007/01/02  2    1000 00002   2007/01/02  3    1000 以下はこのような状態で続く。 ここで知りたいのは、同日のデータに対しては伝票番号は同じ番号で 行番号のみ連番を振る。 日が変われば伝票番号は次の番号になり、行番号は新たに1から 振りなおすというものです。 クエリーでこのようなことは可能でしょうか。 やはりVBAで組まないと出来ないのでしょうか。 この方法を教えていただきたくお願いいたします。

  • アクセスVBA超初級

    依頼伝票を、アクセスのデータベースで、1枚ごとに入力しています。 伝票には、一意の伝票Noが振ってあります。 上段には、おおまかな、請求先や日付や、金額の総合計が入力してあり、 その下に、サブフォームとして、細かい項目分類ごとの、品目や数量、単価、小計などを 入力するようにしています。(分析用クエリ、というタイトルで) その項目分類ごとに、1行、項目が増えるごとに、項目番号として、行の始めに、 1、2、3、4、5、と、順次増えるように、自動的に、連番を振りたいのです。 Private Sub Form_BeforeInsert(Cancel As Integer) If DCount("*", "Q_分析用 クエリ") = 0 Then 項目番号 = 1 Else 項目番号 = DMax("項目番号", "Q_分析用 クエリ") + 1 End If End Sub それで、上記のようなVBEを考えたのですが、これですと、各1枚ごとの伝票に 連番が振ることができずに、全ての伝票を通しての、連番になってしまいます。 1枚ごとに、また、1から連番を振るようにするには、どうすればいいでしょうか。 わかりにくい質問で申し訳ありませんが、よろしくお願いします。

  • ACCESS レポートで常に1から番号を振る方法

    もしかしたら簡単なことなのかもしれませんが、まったく見当すらつかないので教えてください。 レポートで1行目から番号をふりたいのですがどうすればいいのでしょうか? ACCESS2000で、あるデータを読み込んでそれをレポートで表示させるDBを作っています。 表示・印刷するためだけのDBなので、別のデータを表示・印刷する場合は削除クエリを使っていったんテーブルを削除して、表示させたいデータをインポートさせています。 オートナンバーで番号を振ると、削除クエリを実行させると削除する前のデータの続きの連番をふってしまいますよね?そうではなくて、常に1行目に1、2行目に2を振りたいのです。 テーブルかクエリに振るのかな?と思ったのですが、レポートに直接番号を振る方法もあるのでしょうか? どちらに番号を振ってもいいのですが、レポートに番号を表示するよい方法がありましたらお教えください。

  • アクセスで電話番号を使って

    アクセス2002です。 名簿を作っています。電話番号を使って、整理番号を作り、整理番号を元に検索したいと思っています。 電話番号を入力したら、その下4桁が自動的に整理番号にするのには、どうしたらいいでしょうか。 関数rightを使って、テーブルに式を入れたのですが、うまくいきません。 教えて下さい。

  • アクセスで内容を変更していきたい。

    初心者です。あるリストで、テーブルを作成してみました。その整理番号を入力したら、内容が変更できるようにしたいのですが、どうすればいいのですか?。フォームを作成する?クエリを作成する?今まではクエリを使って集計、検索しかしたことなくて。フォームを作ってみたのですが、主キーに指定した整理番号を入力しても、データが一番始めのデータから動きません。勉強不足ですみません。よろしくお願いします。

  • ACCESS2000でグループごとに連番を振りたい

    ACCESSで登録フォームを作成し、 そこで、下記のようなテーブルを作ろうとしてます。 伝票番号 明細番号 商品   1   1   りんご   1   2   みかん   2   1   すいか   2   2   かき   1   3   なし   3   1   くり 伝票番号ごとに連番を振って行きたいのですが、 オートナンバー型にしてしまうと、伝票番号に 関係なく、連番を振ってしまいます。 この場合の解決方法を教えていただけないでしょうか。

  • ACCESS2000 VBAを使用して最適化したい

    ACCESS2000を使用しています。 VBAでデータベースの最適化/修復を行いたいと思っています。 連番をリセットしたいのですが、可能でしょうか? ツールからオプションでチェック入れることはわかりますが・・・ たとえば、データを入力しクエリで他テーブルに追加し 新規でまたこのテーブルにデータを入力していく作業があります。 クエリで他テーブルに追加した時点で、テーブルのデータを作成し、最適化して全くの新しいデータを1番からの連番で入力したいです。 出来ますか?

  • ACCESSクエリーについて

    ACCESSクエリーについてですが、複数列、行が ある顧客テーブルがあり、そのデータテーブルには、 伝票番号がレコード毎にふられています。 このレコードはお客様によっては、 複数行となることもあります。 その場合は、お客様に同じ伝票番号が 複数行にわたってふられるケースも あります。 目的はクエリーで伝票番号の先頭の 行だけを引っ張りたい、です。 単に伝票番号だけを引っ張るだけであれば、 簡単にプロパティの固定値をはいに変えるだけ でできますが、伝票番号が複数存在することが ありえるなかで、伝票番号の先頭のみの 行のみ抽出させることは可能でしょうか。

  • アクセスで同一番号は1件と数える

    アクセスを使って、入金データを作ってます。 フィールド → 入金日(半年分)、金額、伝票番号 月別の 金額と件数を纏めたいのですが、伝票番号フィールドに 同じ番号があった場合、それを一件と数えたいのです どのような式を組めばいいのか、教えていただきたく アクセス初心者です よろしくお願いします。

  • Access 番号をつける方法

    お世話になっております。 access2010でクエリに番号を割り振ろうと思っています。 「ID」は昇順に並んでおり、同一の「ID」に対しての連番をつけたいです。 クエリ フィールド名:ID、名前 001 田中 001 佐藤 002 山田 003 鈴木 ☆完成図 フィールド名:番号、ID、名前 1 001 田中 2 001 佐藤 1 002 山田 1 003 鈴木 Accessでもexcelのcount関数を使うことはできるのでしょうか? それとも、DCountを使うのでしょうか? 2つ関数の使い方や、用途の違いがよくわかりません。 ご存知の方教えて下さい。よろしくお願いします。

専門家に質問してみよう