- 締切済み
access一部のフィールドを他のテーブルへVBA
先日 https://okwave.jp/qa/q10245651.html において > table2の新しいデータとして > table1のデータをコピーしたい、 単に追加で ということであれば、という 御回答: Sub Test() Dim StrSQL As String StrSQL = "INSERT INTO table2 SELECT table1.* FROM table1;" DoCmd.SetWarnings False DoCmd.RunSQL StrSQL DoCmd.SetWarnings True End Sub ---------------------- 上記の 回答をいただき うまく稼働しました 部分的にフィールドを別テーブルに 移動するとき ここでは table1のフィールド名 IDに table2のフィールド名 bに 入っている数値 にい 1を加えた数値を 移動したいのですが Public Function Test() Dim tb1 As Table Dim tb2 As Table tb1 = table1 tb2 = table2 Dim strSQL As String strSQL = "INSERT INTO table2![ID]SELECT"("[b]"FROM tablel)+1" (table1のフィールド[b]の数値に1を加えた数値を table2のフィールド[ID]に移行する、というつもりです) DoCmd.SetWarnings False DoCmd.RunSQL strSQL DoCmd.SetWarnings True End Function 稼働しません すみません 宜しくお願い致します (ついでながら ここで でてくるb というのは テーブル table3 の IDの総和 すなわち SELECT Count(table3.ID) AS b FROM table3; 要は table3の最後のレコードの次のレコードの 番号の数値を table2のIDに移動したい というわけであります) (いずれのIDや bについても 数値型 長整数型 重複あり です)
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kkkkkm
- ベストアンサー率66% (1719/2589)
変数は"で囲むと変数としてではなく文字列として扱われますので Debug.Print "ここまでの登録者総数fの値は" & f & "です。" のようにそのままで記載しないと正しく機能しません。 strSQL = "INSERT INTO maina1 ( ID ) SELECT " & f このようにして試してみてください。 クエリを作成し実行して動作確認してからそのSQLビューでSQL文を取り出すと楽だと思います。 (変数の部分はクエリでは実数にしてテスト) 今回の場合は strSQL = "INSERT INTO maina1 ( ID ) SELECT DCount('ID','登録名簿')" もしくは strSQL = "INSERT INTO maina1 ( ID ) SELECT DCount(""ID"",""登録名簿"")" としてもいけると思いますので興味があれば試してみください。
- kkkkkm
- ベストアンサー率66% (1719/2589)
説明がいまいちわかりませんが > strSQL = "INSERT INTO table2![ID]SELECT"("[b]"FROM tablel)+1" これからイメージすると StrSQL = "INSERT INTO table2 ( ID ) " & _ "SELECT [table1].[b]+1 AS [b+1] " & _ "FROM table1;" 氏名もいるのでしたら StrSQL = "INSERT INTO table2 ( ID, 氏名 ) " & _ "SELECT [table1].[b]+1 AS [b+1], table1.氏名 " & _ "FROM table1;"
補足
質問文が曖昧で失礼しました 同様の内容を書き換えてみました --------------------------------------- Private Function 登録名簿総数1() Dim strSQL As String Dim f As Long f = DCount("ID", "登録名簿") (質問文の table3に相当するのが "登録名簿"となります) Debug.Print "ここまでの登録者総数fの値は" & f & "です。" Dim str As String str = "ここまでの登録者総数fの値は" & f & "です。" MsgBox str strSQL = "UPDATE table2 SET tabale2.ID ="f"" DoCmd.SetWarnings False DoCmd.RunSQL strSQL DoCmd.SetWarnings True End Function --------------------------------- Private Function 登録名簿総数2() Dim strSQL As String Dim f As Long f = DCount("ID", "登録名簿") Debug.Print "ここまでの登録者総数fの値は" & f & "です。" Dim str As String str = "ここまでの登録者総数fの値は" & f & "です。" MsgBox str strSQL = "INSERT INTO maina1 ( ID ) " & _ "f" " DoCmd.SetWarnings False DoCmd.RunSQL strSQL DoCmd.SetWarnings True End Function ---------------------- "INSERT INTO maina1 ( ID ) " & _ "f" " ここの式での fという数値が 計算された数値のfを 反映してないのかとは思います すみません 宜しくお願い致します
お礼