User Tools

Site Tools


vba:excel:adodbsql

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vba:excel:adodbsql [28.01.2016 17:01:34]
yaslaw
vba:excel:adodbsql [06.05.2019 11:08:01] (current)
yaslaw
Line 1: Line 1:
 <​const>​ <​const>​
-    version=1.0.0 +    version=1.6.0 
-    vdate=27.01.2016+    vdate=22.01.2018
     fname=lib_adodb_for_xls.bas     fname=lib_adodb_for_xls.bas
     ns=%NAMESPACE%     ns=%NAMESPACE%
Line 22: Line 22:
  
 Den Code zu den Funktionen gibts am Schluss Den Code zu den Funktionen gibts am Schluss
 +
 +===== Definitionen =====
 +==== axConnParams ====
 +Sammlung von steuerparametern. Es werden, ev. in Zukunft noch mehr.
 +<code vb>​Public Enum axConnParams
 +    axcNone = 0
 +    axcReconnect = 2 ^ 0    'Ein Reconnect wird erzwungen
 +    axcNoHeader = 2 ^ 1     '​Die erste Zeile ist keine Kopfzeile. Die Felder werden mit f1, f2...fx angesprochen
 +End Enum</​code>​
 +
 +==== axWriteParams ====
 +Paramters zum Schreiben der Daten
 +<code vb>'/​**
 +Public Enum axWriteParams
 +    axwNone = 2 ^ 0             '​Keine umwandlung
 +    axwHeaderRedable = 2 ^ 1    'Titel mit Unterlinien werden aufgetrennt "​HAUS_NUMMER"​ -> "Haus Nummer"​
 +End Enum</​code>​
  
 ===== Initialisieren ===== ===== Initialisieren =====
Line 28: Line 45:
 <code vb>'/​** <code vb>'/​**
 ' * Handle dhe adodb-connection to the current workbook ' * Handle dhe adodb-connection to the current workbook
-' * @param  ​Boolean FLag,​ ob die Connectionneu aufgebaut werden soll+' * @param  ​axConnParams ​   Paramters für die Connection 
 +' * @param ​ String ​         Pfad zur QuellDatei. Standard ist der Pfad des ausführenden Workbooks
 ' * @return ADODB.Conection ' * @return ADODB.Conection
 ' */ ' */
-Private Property Get connection(Optional ByVal iReconnect ​As boolean ​False) As Object +Private Property Get connection(Optional ByVal iConnParams ​As axConnParams ​axcNone, Optional ByVal iFilePath As String = Empty) As Object</​code>​
-</​code>​+
  
 ==== Function openRs() ==== ==== Function openRs() ====
Line 38: Line 55:
 <code vb>'/​** <code vb>'/​**
 ' * Open a adodb recordset from the current workbook ' * Open a adodb recordset from the current workbook
-' * @param ​ String ​     SQL-String +' * @param ​ String ​         SQL-String 
-' * @param  ​Boolean FLag,​ ob die Connectionneu aufgebaut werden soll+' * @param  ​axConnParams ​   Paramters für die Connection
 ' * @return ADODB.Recordset ' * @return ADODB.Recordset
 ' */ ' */
-Public Function openRs(Optional ​ByVal iSql As String, ByVal iReconnect ​As boolean ​False) As Object +Public Function openRs(ByVal iSql As String, ​Optional ​ByVal iConnParams ​As axConnParams ​axcNone) As Object</​code>​ 
-</​code>​+
 ==== Function writeHeader() ==== ==== Function writeHeader() ====
-Schreibt ​din Header in eine Zeile+Schreibt ​den Header in eine Zeile
 <code vb>'/​** <code vb>'/​**
 ' * Write the Header of a adodb.recordset ' * Write the Header of a adodb.recordset
-' * @param ​ Range   First cell+' * @param  ​Worksheet/Range/Address
 ' * @param ​ Recordset ' * @param ​ Recordset
 +' * @param ​ axWriteParams
 ' */ ' */
-Public Sub writeHeader(ByRef ​ioStartCell ​As Range, ByRef ioRs As Object)+Public Sub writeHeader(ByRef ​iRange ​As Variant, ByRef ioRs As Object, Optional ByVal iWriteParams As axWriteParams = axwNone)
 </​code>​ </​code>​
  
-==== Function ​writeHeader() ==== +==== Function ​writeFullData() ==== 
-Mit dem einfachen Worksheet.XXXX() werden nur die Daten geschrieben. Die folgende Funktion schreibt mittels writeHeader() zuerst die Kopfzeile und dann die Daten+Mit dem einfachen Worksheet.CopyFromRecordset() werden nur die Daten geschrieben. Die folgende Funktion schreibt mittels writeHeader() zuerst die Kopfzeile und dann die Daten
  
 <code vb>'/​** <code vb>'/​**
 ' * Schreibt ins Excel inkl Header ' * Schreibt ins Excel inkl Header
-' * @param ​ Range   First cell+' * @param  ​Worksheet/Range/Address
 ' * @param ​ Recordset ' * @param ​ Recordset
 +' * @param ​ axWriteParams
 ' */ ' */
-Public Sub writeFullData(ByRef ​ioStartCell ​As Range, ByRef ioRs As Object)+Public Sub writeFullData(ByRef ​iRange ​As Variant, ByRef ioRs As Object, Optional ByVal iWriteParams As axWriteParams = axwNone)
 </​code>​ </​code>​
  
Line 133: Line 152:
 End Sub</​code>​ End Sub</​code>​
  
 +=== Handhabung der Header ===
 +Bei writeFullData() und beim writeHeader() kann man den Paramter iWriteParams auf axwHeaderRedable setzen. Ich zeige hier mal schnell noch den Unterschied.
 +Die Tabelle Hat die 2 Felder
 +<​code>​ID | SECURITY_TPE | SECURITY_ID
 +-------------------------------
 + 1 | T3           | AX3456Z
 + 2 | T3           | AX4564R</​code>​
 +
 +Mit dem Standard: iWriteParams = axwNone
 +Die Titelzeile belibt unverändert
 +<code vb>​writeFullData Sheets("​trg"​).Range("​A1"​),​ openRs("​select * from [src$]"​)</​code>​
 +<​code>​ID | SECURITY_TPE | SECURITY_ID
 +-------------------------------
 + 1 | T3           | AX3456Z
 + 2 | T3           | AX4564R</​code>​
  
 +Mit axwHeaderRedable wird die Titelzeile in eine lesbarere Form gebracht
 +<code vb>​writeFullData Sheets("​trg"​).Range("​A1"​),​ openRs("​select * from [src$]"​),​ axwHeaderRedable</​code>​
 +<​code>​Id | Security Tpe | Security Id
 +-------------------------------
 + 1 | T3           | AX3456Z
 + 2 | T3           | AX4564R</​code>​
 ===== Code ===== ===== Code =====
-Und hier noch der Code zu den oben bechreibenen ​Funktionen+Und hier noch der Code zu den oben bechriebenen ​Funktionen
  
 <source '​%%fpath%%/​%%fname%%'​ vb> <source '​%%fpath%%/​%%fname%%'​ vb>
vba/excel/adodbsql.1453996894.txt.gz · Last modified: 28.01.2016 17:01:34 by yaslaw