|
初めまして。
現在作っているデータベースで分からなくなってしまったので教えていただきたいのですが・・・。
記述したコードは事業者NOごとに入校許可証の番号を連番で振るというものです。単純に1番から振る場合には本で見て分かったのですが、今回教えていただきたいのは連番を更新するという手順です。
具体的に言いますと、
T1・・・現在有効な許可番号を収納したテーブル
T2・・・これまでに発行した許可番号を収納したテーブル
の2つがあり、事業者NOごとにT2から発行済み番号の最大値+1(stSQL2)を取得し
それをT1に順番に入れていく・・・これをDAOを使ってやろうと思っています。
コードは以下のとおりです。
Private Sub コマンド1_Click()
Dim ds As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim fld As DAO.Field
Dim fldid1 As String
Dim stSQL1 As String
Dim stSQL2 As String
Dim i As String
Dim j As String
'T1(現在データテーブル)の事業者NOと許可証番号を昇順に並び替え
stSQL1 = "SELECT T1.事業者NO, T1.許可証番号 FROM T1 WHERE (((T1.事業者NO) > 0)) ORDER BY T1.事業者NO, T1.許可証番号"
'交付済許可証番号マスター(履歴データテーブル)の次付与番号を事業者NOの昇順に並び替え
stSQL2 = "SELECT T2.事業者NO, Max(T2.許可証番号) AS 許可証番号の最大, Max(([許可証番号])+1) AS 次付与番号 FROM T2 GROUP BY T2.事業者NO HAVING (((T2.事業者NO) > 0)) ORDER BY T2.事業者NO"
Set db = CurrentDb()
Set rs1 = db.OpenRecordset(stSQL1, dbOpenDynaset)
Set rs2 = db.OpenRecordset(stSQL2, dbOpenDynaset)
Set fld = rs1.Fields("許可証番号")
If rs1.BOF = False Then
rs1.MoveFirst
i = 1
fldid1 = ""
Do Until rs1.EOF
rs1.Edit
If fldid1 <> rs1!事業者NO Then
'事業者NOが変わったら交付済許可証番号マスターから次付与番号を取得
☆ rs2.FindFirst "事業者NO" = rs1!事業者NO
j = rs2!次付与番号
i = j
fldid1 = rs1!事業者NO
End If
fld = i
rs1.Update
i = i + 1
rs1.MoveNext
Loop
End If
rs1.Close
rs2.Close
Set rs1 = Nothing
Set rs2 = Nothing
db.Close
Set db = Nothing
End Sub
もし改行などの関係でみにくくなってしまっていたらごめんなさい。
ループに入ったときに最初にT1の事業者NOを参照して同じ事業者NOをT2から検索し、stSQL2で出している次付与番号を取ってきてT1に入れていく。
そういった処理を『☆』のあたりに記述したつもりでした。いらない変数もありますが・・・。
実行してみても特にエラーが出ないためどのように記述したらよいのかよく分かりません。『☆』部分がおかしいのは間違いないとは思うのですが・・・
どなたか教えていただけないでしょうか。よろしくお願いします。
ちなみにまだ記述はしていませんが、最後にT1のレコードをすべてT2に追加して履歴として残すつもりです。
|
|