User Tools

Site Tools


vba:access:classes:temptabledef

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
vba:access:classes:temptabledef [15.05.2017 10:17:44]
yaslaw created
vba:access:classes:temptabledef [01.12.2017 10:32:12] (current)
yaslaw
Line 1: Line 1:
 <​const>​ <​const>​
-    version=1.0.0 +    version=1.2.2 
-    vdate= ​02.03.2017+    vdate= ​15.08.2017
     fname=temptabledef.cls     fname=temptabledef.cls
     ns=%NAMESPACE%     ns=%NAMESPACE%
Line 7: Line 7:
 </​const>​ </​const>​
 ====== [VBA][Access] TempTableDef ====== ====== [VBA][Access] TempTableDef ======
-//EineKlasse ​um mit TempTables ​zuarbeiten//+//Eine Klasse ​um mit TempTables ​zu arbeiten//
 ==Version %%version%% %%vdate%%== ==Version %%version%% %%vdate%%==
  
Line 16: Line 16:
 {{%%fname%%|Download %%fname%% (V-%%version%%)}}</​WRAP>​ {{%%fname%%|Download %%fname%% (V-%%version%%)}}</​WRAP>​
  
-===== Definitionen ===== +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ümmernDieKlasse kann SQLs parsen um den Namen zu ersetzen.
-> Für die Ausgabe der Resultate verwendete ich die Funktion [[:​vba:​functions:​print_r:​|print_r() bzwd()]].+
  
-==== Compile-Settings ==== +Wichtig! Bevor man diese oder eine ähnliche ​Klasse/Methode einsetzt sollte man sich Gedanken machenob man das wirklich brauchtWenn nicht wirklich ein Sonderspezialfall vorliegt, dann hat man in seinem Datenbankmodel einen Fehler wenn man Temporäre Tabellen braucht....
-Am Anfang der Klasse ​hat es Compile-Settings. Falls die entsprechenden Module von mir im Projekt vorhanden sindkönnen die entsprechenden Settings auf True gestellt werdenDie Ausgaben ​in die Konsole oder in das LogFile können damit verbessert werdenSie sind abernicht zwingend!+
  
-=== SQLScript === +Hier mal schnell ein kleines Beispiel 
-Die Klasse kann für [[vba:​access:​classes:sqlscript|]] erweitert werden +<code vb>​Public Sub temp() 
-<code vb>#​Const SQLScript_exists ​False</​code>​+    Dim tmp As TempTableDef 
 +    'Die TempTable anlegen, der name ist t_1 
 +    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</​code>​ 
 +<​code>#​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</​code>​ 
 + 
 +===== Definitionen ===== 
 +> Für die Ausgabe der Resultate verwendete ich die Funktion [[:​vba:​functions:​print_r:​|print_r() bzw. d()]] und [[vba:​access:​functions:printrs|printRs()]]
 + 
 +==== Enums ==== 
 +^ Enum ^ Beschreibung ^ 
 +| [[#​TempTableDefEnum]] | Settings zur TempTableDef |
  
 ==== Creatoren ==== ==== Creatoren ====
Line 35: Line 64:
 Die folgenden Funktion werden verwendet um eine Tabelle anzulegen Die folgenden Funktion werden verwendet um eine Tabelle anzulegen
 ^ Methode ^ Rückgabetyp ^ Beschreibung ^ ^ Methode ^ Rückgabetyp ^ Beschreibung ^
-| [[#createBySqlSelect]] | %%TempTableDef%% | Erstellt eine Tabelle aus dem Resultat eines SQLs | +| [[#create]] | %%TempTableDef%% | Erstellt eine Tabelle aus dem Resultat eines SQLs | 
-| [[#createBySqlCreate]] | %%TempTableDef%% | Erstellt eine Tabelle ​anhand eines Create-Table Statement ​|+ 
 +==== Public Methodes ==== 
 +^ Methode ^ Rückgabetyp ^ Beschreibung ^ 
 +| [[#execute]] |Long | Führt ein execute() durch und parst dabei den Tabellenname | 
 +| [[#​openRecordset]] | %%DAO.Recordset%% | öffnet ein Recordset auf die TempTable | 
 +| [[#​queryDef]] | QueryDef | Gibt ein QueryDef zurück | 
 +| [[#​showQuery]] | | öffnet und zeigt ein SQL als Abfrage | 
 +| [[#​convertSql]] | | Konvertiert in einem SQL den Name durch den tatsächlichen Tabellennamen | 
 +| [[#drop]] | | Löscht die physiche ​Tabelle ​
 +| [[#​dropAllTempTables]] | | Löscht alle physiche Temp-Tabellen ​| 
 + 
 +==== Public Properties ==== 
 +^ Property ^ Rückgabetyp ^ Getter/​Setter ^ Beschreibung ^ 
 +| [[#exists]] | Boolean | Get | Prüft ob die physische Tabelle exisitiert | 
 +| [[#​tempName]] | String | Get | Der physiche Name der Tabelle, wie sie in der DB angelegt wird | 
 +| [[#​tempNameSql]] | String | Get | Dito zu %%tempName%% aber mit [] umgeben um in einem SQL zu verwenden | 
 +| [[#​tableDef]] | TableDef | Get | TableDef Objekt auf die temporäre Tabelle 
 +| [[#name]] | String | Get & Let | Name der TempTable | 
 +| [[#user]] | String | Get & Let | Name des Anwenders für Userabhängige TempTables | 
 +| [[#db]] | DAO.Database | Get & Set | Datenbank, auf der sich die TempTable befindet | 
 +| [[#​paramter]] | Variant | Get & Let | Setzt eine SQL-Paramter | 
 +| [[#​paramters]] | Dictionary | Get & Set | Setzt eine SQL-Paramters | 
 +| [[#​settings]] | TempTableDefEnum | Get & Let | Alle Settings auf einmal setzen | 
 +| [[#​forceDrop]] | Boolean | Get & Let | Setting: Beim löschen nicht nachfragen | 
 +| [[#​scopeUser]] | Boolean | Get & Let | Setting: Dem physischen Tabellenname wird der User angehängt. Somit ist die TempTable Userabhängig | 
 +| [[#​scopeClass]] | Boolean | Get & Let | Setting: Die TempTable wird nur solange gehalten, solange die Klasse exisitiert | 
 + 
 +===== Beispiele ===== 
 +Für die Beispiele verwende ich die folgenden 3 Tabellen 
 +<​code>​TBL_DEMO_TMPTBL_USER 
 +UID | VORNAME | NACHNAME | CODE 
 +----|---------|----------|----- 
 +  1 | Hans    | Müller ​  | BQ   
 +  2 | Doris   | Andres ​  | HG   
 +  3 | Fränzi ​ | Muster ​  | BQ   
 + 
 +TBL_DEMO_TMPTBL_EVENT 
 +EID | ENAME               
 +----|-------------------- 
 +  1 | Bierfestival Zürich 
 +  2 | brasserie publique  
 +  3 | Wortspiele ​         
 + 
 +TBL_DEMO_TMPTBL_LINK 
 +UID | EID 
 +----|---- 
 +  1 |   2 
 +  1 |   3 
 +  2 |   1 
 +  3 |   1 
 +  3 |   2 
 +  3 |   ​3</​code>​ 
 +Fortsetzung folgt....
vba/access/classes/temptabledef.1494836264.txt.gz · Last modified: 15.05.2017 10:17:44 by yaslaw