Hier is een fragment van VBA-code die ik heb gebruikt om een DB2 opgeslagen procedure aan te roepen. Dezelfde techniek zou moeten werken voor elke DDL-instructie. Om dit te doen, maakt u een pass-through-query en plaatst u uw CREATE TABLE #tblname...
statement als zijn SQL-tekst.
BELANGRIJK:open vervolgens het eigenschappenblad van de query en stel de eigenschap 'Retourrecords' in op 'Nee'.
Dim qdf As QueryDef
Set qdf = CurrentDb.QueryDefs("qry_SP_CHANGE_COLUMN")
qdf.Connect = CurrentDb.TableDefs("SCHEMA_tblName").Connect
qdf.SQL = "call SCHEMA.SP_CHANGE_COLUMN(...)"
qdf.Execute dbFailOnError
qdf.Close
Set qdf = Nothing
Let op, u hoeft uw SQL-tekst waarschijnlijk niet te wijzigen. Je kunt dat gewoon in de querydef laten staan als de tabelstructuur nooit verandert.
De uitdaging voor u is dat u dezelfde verbinding moet gebruiken voor alle bewerkingen tegen de tijdelijke tabel. Op het moment dat de verbinding wordt gesloten, verdwijnt je tijdelijke tabel omdat het een lokale tijdelijke tabel is en alleen zichtbaar is voor die ene verbinding. Je kunt dit voorkomen door '##', globale tijdelijke tabellen te gebruiken, als je daar rechten voor hebt.