MS Access 2003 - VBA für eine Tabelle nach einer „SELECT * INTO tblTemp VON tblMain“ Anweisung zur Änderung

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

  •  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!

War es hilfreich?

Lösung

kann ich denke an die folgenden Möglichkeiten können Sie diese

erreichen

1. 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

  1. In VBA verwenden, um das TableDef Objekt so zu tblTemp und fügen Sie dann eine Spalte es
  2. 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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top