This is an old revision of the document!
EineKlasse um mit TempTables zuarbeiten
Das Modul hat versteckte Attribute. Damit diese aktiv übernommen werden reicht es nicht aus, den Code in ein neues Modul zu kopieren. Man muss das Modul aus der Datei nach VBA importieren.
Bild zum Import
Die Klasse erstellt eine Tabelle und verwaltet sie selbständig. Die Tabellen können Userabhängig sein, sich nur halten während die Klasseninstanz existiert. Müssen aber nicht. Zudem muss man sich nicht um den Namen kümmern. DieKlasse kann SQLs parsen um den Namen zu ersetzen.
Hier mal schnell ein kleines Beispiel
Public Sub temp() Dim tmp As TempTableDef Set tmp = TempTableDef("t_1").createBySqlSelect("select * from ADDON_SEQUENZ where start_nr = 1") 'Den wirklichen Namen anzeigen '-> #TMP_Yaslaw_t_1 Debug.Print tmp.tempName 'Einen Update auf die TempTable absetzen tmp.execute "update t_1 set seq_name = 'N/A' where seq_name = ''" 'Ein Select absetzen und anzeigen 'http://wiki.yaslaw.info/doku.php/vba/access/functions/printrs printRs tmp.openRecordset("select t.* from [t_1] t inner join [dual] d on t.start_nr = d.id") 'Die Tabelle #TMP_Yaslaw_t_1 wird automatisch gelöscht, weil hier die Instanz abgebaut wird und ttdScopeClass gesetzt ist 'Es wird nicht nachgefragt End Sub
#TMP_Yaslaw_t_1 SEQ_NAME | START_NR | LAST_NR | LAST_TIMESTAMP ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|---------|-------------------- N/A | 1 | 4 | 15.03.2017 14:13:48 e | 1 | 3 | 15.01.2016 08:50:45 test | 1 | 4 | 01.07.2016 09:55:38 Test 1 | 1 | 3 | 01.03.2016 10:11:00 Test 12
Für die Ausgabe der Resultate verwendete ich die Funktion print_r() bzw. d().
Am Anfang der Klasse hat es Compile-Settings. Falls die entsprechenden Module von mir im Projekt vorhanden sind, können die entsprechenden Settings auf True gestellt werden. Die Ausgaben in die Konsole oder in das LogFile können damit verbessert werden. Sie sind abernicht zwingend!
Die Klasse kann für [VBA][Access] Klasse SQLScript erweitert werden
#Const SQLScript_exists = False
Es gibt verschiedene Möglichkeiten eine TempTableDef zu initialisieren
Die folgenden Funktion werden verwendet um eine Tabelle anzulegen
Methode | Rückgabetyp | Beschreibung |
---|---|---|
createBySqlSelect | TempTableDef | Erstellt eine Tabelle aus dem Resultat eines SQLs |
createBySqlCreate | TempTableDef | Erstellt eine Tabelle anhand eines Create-Table Statement |