MS Access 2003 - 「SELECT * INTO tblTemp FROM tblMain」ステートメントの後にテーブルを変更するための VBA

StackOverflow https://stackoverflow.com/questions/2455645

  •  20-09-2019
  •  | 
  •  

質問

次のような関数を使用して、クロス集計クエリから一時テーブルを作成します。

Function SQL_Tester()
Dim sql As String

If DCount("*", "MSysObjects", "[Name]='tblTemp'") Then
   DoCmd.DeleteObject acTable, "tblTemp"
End If

sql = "SELECT * INTO tblTemp from TblMain;"

 Debug.Print (sql)

  Set db = CurrentDb
  db.Execute (sql)

End Function

これを行うのは、さらに VBA を使用して一時テーブルを Excel に取り込み、Excel の機能の一部 (数式など) を使用して、値を元のテーブル (tblMain) に返すことができるようにするためです。私がつまずいている単純な点は、Select INTO ステートメントの後に、その一時テーブルにまったく新しい追加の列を追加する必要があるのですが、これを行う方法がわかりません。

sql = "Create Table..."

これは私がこれを行う方法を知っている唯一の方法のようなものですが、もちろん、これは上記のアプローチではうまく機能しません。なぜなら、すでに作成されているテーブルを事後に作成することはできず、事前に作成することもできないからです。 SELECT INTO ステートメントのアプローチでは、「テーブルはすでに存在します」というメッセージが返されます。

何か助けはありますか?みんなありがとう!

役に立ちましたか?

解決

これを達成するには次の方法が考えられます

1.作成して挿入する

できることは、 CREATE TABLE tblTemp 必要な列がすべて揃っています。もちろん、TblMain に含まれる列よりも多くの列があるため、挿入には列定義が含まれます。

INSERT INTO tblTemp (Col1, Col2, Col3) SELECT Col1, Col2, Col3 from TblMain

2.「挿入」してから列を追加します

複数の方法を使用して列を挿入し、列を追加できます。

  1. VBA では、 TableDef tblTemp を指すオブジェクトを作成し、それに列を追加します
  2. 実行する DoCmd.RunSQL "ALTER TABLE tblTemp Add Column MyNewColumn (オットーム)

他のヒント

そこは、ネコを肌にする、常に複数の方法。あなたは、DAOを使用することができますか?これは、Access内のユーザインタフェースを介して新しいフィールドを作成する際に取得し、新しく作成されたフィールドのさまざまなプロパティを設定することができるという利点があります。ジャストアイデア: - )

このサブAccess 2007で、作成され、テストリットルかかわらず任意のバージョンとcompatableする必要があります。

Public Sub AddField()

Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field

Dim strTable As String

Set dbs = CurrentDb

strTable = "tblTemp"

'create the TableDef object that
'wish to change
Set tdf = dbs.TableDefs(strTable)
'create new field
Set fld = tdf.CreateField("Name", dbText)
'set property of new created field
fld.AllowZeroLength = True
'append the new field to the tabledef
tdf.Fields.Append fld

End Sub
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top