MS Access 2003 - VBA für eine Tabelle nach einer „SELECT * INTO tblTemp VON tblMain“ Anweisung zur Änderung
-
20-09-2019 - |
Frage
Ich benutze Funktionen wie die folgenden temporäre Tabellen aus Kreuztabellen-Abfragen zu machen.
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
Ich mache das so, dass ich dann mehr vba verwenden kann, die temporäre Tabelle in Excel zu nehmen, verwendet einige Excel-Funktionalität (Formeln und so) und dann die Werte in der ursprünglichen Tabelle zurückzukehren (tblMain). Einfache Stelle i gestolpert bin immer ist, dass nach dem Wählen INTO-Anweisung Ich brauche eine brandneue zusätzliche Spalte zu dieser temporären Tabelle hinzuzufügen, und ich weiß nicht, wie dies zu tun:
sql = "Create Table..."
ist wie der einzige Weg, ich weiß, wie dies zu tun und natürlich dies nicht funktioniert mit dem obigen Ansatz gut, weil ich nicht eine Tabelle erstellen, die bereits nach der Tat erstellt wurde, und ich kann es nicht schaffen vor, weil die Anweisung Ansatz SELECT INTO eine zurückkehren wird „Tabelle ist bereits vorhanden“ angezeigt.
Jede Hilfe? Danke Jungs!
Lösung
kann ich denke an die folgenden Möglichkeiten können Sie diese
erreichen1. Erstellen, dann einfügen
Sie können einen CREATE TABLE tblTemp
tun mit allen Spalten, die Sie benötigen. Natürlich, werden Sie mehr Spalten als TblMain enthält, so dass Ihre Einsatzspaltendefinitionen enthält.
INSERT INTO tblTemp (Col1, Col2, Col3) SELECT Col1, Col2, Col3 from TblMain
2. INSERT INTO, dann fügen Sie Spalte
Sie können tun, um Ihren Einsatz in, dann Spalten hinzufügen mehr Möglichkeiten mit
- In VBA verwenden, um das
TableDef
Objekt so zu tblTemp und fügen Sie dann eine Spalte es - Ausführen
DoCmd.RunSQL "ALTER TABLE tblTemp Add Column MyNewColumn
(OTTOMH)
Andere Tipps
Es gibt immer mehr als ein Weg, eine Katze der Haut. Sie könnten DAO verwenden? Dies hat den Vorteil, dass sie die verschiedenen Eigenschaften des neu geschaffenen Feld zu setzen, erhalten, wenn über die Benutzeroberfläche in Access neues Feld zu schaffen. Nur eine Idee: -)
Dies ist die Unter l erstellt und getestet, in Access 2007 sollte jedoch mit jeder Version kompatibel sein.
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