IDをループで呼び出しながら、追加クエリでテーブルに追加したいのですが、
値が入りません。
エラーなく動くのですが、テーブルに値が入っていないのです。
何がたりないのでしょうか?
―――――――――――――
Public Sub CYUSYUTU_SEIKYUID2()
Dim CYUSYUTU_SEIKYUID As String
Dim recCount As Long
recCount = DCount("*", "作業用請求先ID")
Dim ID As String
Dim DB As DAO.Database
Dim RS As DAO.Recordset
Dim i As Integer
Dim strSQL As String
Set DB = CurrentDb
Set RS = DB.OpenRecordset("作業用請求先ID")
RS.MoveFirst
Do Until RS.EOF
RS.Edit
For i = 1 To recCount
CYUSYUTU_SEIKYUID = RS.Fields("請求先ID(13)").Value
DoCmd.RunSQL _
"INSERT INTO [作業用_▲入金DB] SELECT * FROM ▲入金 WHERE ▲入金.請求先ID='& CYUSYUTU_SEIKYUID &';"
Next i
RS.Update
RS.MoveNext
Loop
RS.Close: Set RS = Nothing
DB.Close: Set DB = Nothing
End Sub
直接の原因はここかと↓
"INSERT INTO [作業用_▲入金DB] SELECT * FROM ▲入金 WHERE ▲入金.請求先ID='& CYUSYUTU_SEIKYUID &';"
↓↓↓
"INSERT INTO [作業用_▲入金DB] SELECT * FROM ▲入金 WHERE ▲入金.請求先ID='" & CYUSYUTU_SEIKYUID & "';"
変数は""の外に出してやらないと変数として機能しません。(""内の文字列と「&」で連結します)
後は余計なお世話かもですが・・・
・Do~Loop(rs.MoveNext)で全レコード分ループさせるのでFor~Nextは不要です
・DAOで開いたレコードセット自体を更新しないのであれば、RS.EditとRS.Updateも不要です
あとは、使用していない変数がいくつか宣言されているようですが・・・
(もしコードの提示を省略しているだけで実際は使用しているとかでしたらすみません)
もし質問文内のコードが全てなのであれば、これだけで大丈夫かと思います。
Public Sub CYUSYUTU_SEIKYUID2()
Dim CYUSYUTU_SEIKYUID As String
Dim DB As DAO.Database
Dim RS As DAO.Recordset
Set DB = CurrentDb
Set RS = DB.OpenRecordset("作業用請求先ID")
RS.MoveFirst
Do Until RS.EOF
CYUSYUTU_SEIKYUID = RS.Fields("請求先ID(13)").Value
DoCmd.RunSQL "INSERT INTO [作業用_▲入金DB] SELECT * FROM ▲入金 WHERE ▲入金.請求先ID='" & CYUSYUTU_SEIKYUID & "';"
RS.MoveNext
Loop
RS.Close: Set RS = Nothing
DB.Close: Set DB = Nothing
End Sub
ループするのは必須でしょうか
追加クエリ1つでできそうですけど
Dim sSql As String
sSql = "INSERT INTO [作業用_▲入金DB] " _
& "SELECT * FROM ▲入金 WHERE ▲入金.請求先ID IN " _
& "(SELECT [請求先ID(13)] FROM 作業用請求先ID);"
CurrentDb.Execute sSql
※ メモ帳に書いただけなので、綴りとか動作未検証
お礼
まだまだ勉強中の為、ウェブからコピーしたものを使って作っていたので、余分なものが入ってました。いらないことが分かって勉強になりました。ありがとうございます。これでやりたい作業ができました!また宜しくお願いします。