|    | 
     初めまして。 
現在作っているデータベースで分からなくなってしまったので教えていただきたいのですが・・・。 
 
記述したコードは事業者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に追加して履歴として残すつもりです。 
 
 | 
     
    
   |