[英]MS Access 2003 - VBA for altering a table after a “SELECT * INTO tblTemp FROM tblMain” statement
我使用如下函數從交叉表查詢中創建臨時表。
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.插入,然后添加列
您可以插入,然后使用多種方式添加列
TableDef
對象指向tblTemp,然后向其中添加一列 DoCmd.RunSQL "ALTER TABLE tblTemp Add Column MyNewColumn
(OTTOMH) 總是有不止一種方式來貼皮貓科動物。 您可以使用DAO嗎? 這樣做的好處是,可以設置通過Access中的用戶界面創建新字段時獲得的新創建字段的各種屬性。 只是一個想法:-)
但是,在Access 2007中創建和測試的該子程序應與任何版本兼容。
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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.