This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
vba:excel:adodbsql [28.01.2016 17:33:39] 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 27: | Line 44: | ||
Als erstes habe ich mir ein Property geschrieben, das eine ADODB-Connection auf das aktuelle Workbook zurückgibt. Da ich mich später nicht darum kümmern will, ob ich die Connection schon geöffnet habe, ist es nach dem Tutorial [[vba:tutorials:cachedobjectforfunction#Funktion mit Cache als Property]] umgesetzt. | Als erstes habe ich mir ein Property geschrieben, das eine ADODB-Connection auf das aktuelle Workbook zurückgibt. Da ich mich später nicht darum kümmern will, ob ich die Connection schon geöffnet habe, ist es nach dem Tutorial [[vba:tutorials:cachedobjectforfunction#Funktion mit Cache als Property]] umgesetzt. | ||
<code vb>'/** | <code vb>'/** | ||
- | ' * Handle the 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 den 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.CopyFromRecordset() 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> |