最新閲覧日:

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

A 回答 (5件)

こんにちは。



>で、せっかくなので実際やってみてからお返事したい!と思ってぺたぺた張ってみたりしたのですが、
>どうもうまくできなくて・・・
>何しろ初めてなので、何もわからなくって。

ごめんなさい。よく質問を読んでいませんでしたのでとんちんかんなレスをしたかもしれません。
どんなエラーが出るかによりますが、

「パラメータが少なすぎます。? を指定してください。」
と出た場合は「ID」と書いている全ての文字を「整理番号」に変更してみてください。
>StSQL = "select 整理番号 from テーブル1 order by 整理番号"
>If RS!整理番号 = i Then
上記3カ所

「入力テーブルまたはクエリ '???' が見つかりませんでした。そのテーブルやクエリが存在していること、
または名前が正しいことを確認してください。」
と出た場合は、テーブル名が違っていますので以下の「テーブル1」の部分を修正してください。
>StSQL = "select 整理番号 from テーブル1 order by 整理番号"

それ以外のエラーが出る場合は補足に書いてください。

あと、この方法では、大量に抜けているデータが存在する場合は、取得したデータをテーブルに書き込むなどの工夫が必要です。

#3のstorkさんが回答した方法等で解決しているのであれば、こんなやり方もあるんだ、くらいに思ってください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/22 09:21

こんにちは。


以下のコードで実現できます。
テーブル名が「テーブル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
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/16 00:37

VBAで照合するよりクエリで照合する方が楽ですよ~。



そこで連番の作成が問題になってきますが、件数によって
1.エクセルのオートフィルを使って連番を作成してアクセスでインポートする。
2.オートナンバー型を持つテーブルを作成して行挿入の処理をループをまわす。(これだけなら簡単でしょう?)

初心者だったら、1の方法がわかりやすいですね。
数万件以上であれば2の法が簡単です。

あとは、不照合クエリを作成してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/12 17:05

クエリーでもできるでしょうか?


面倒ですけど出来ますよ。
現実的ではないですが・・・
伝票番号のフィールドだけを持つテーブルを作成して、検査したい開始番号から終了番号までのレコードを作成する。

クエリーで伝票TBとチェックTBを伝番でリンクしてプロパティをチェックTBの全てを表示する様に設定。
伝票TBの伝番以外の必須フィールドの条件をNullにする。
チェックTBの伝番を表示すれば、伝票TBに存在しない伝番だけ出てきます。

こんな面倒な事をするならVBAでチェックプログラムを書いたほうがスマートかと思いますが・・・・
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/11 13:29

データベースは入力されているデータを検索するのは簡単ですが、無いものを検索することは出来ません。


仮に連番で整理番号が振られているのなら、マクロなりVBAなりで番号を+1しながら順番にレコードが存在するかどうかを確認するしかないと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/11 13:17

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

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ