version=1.0.0
vdate=03.08.2016
fname=udf_joinsql.bas
ns=%NAMESPACE%
fpath=/vba/excel
====== [VBA][Excel] joinSql ======
==Version %%version%% - %%vdate%%==
{{%%fname%%|Download %%fname%% (V-%%version%%)}}
Ich komme immer wieder zu dem Punkt, wo ich einmalig aus einer Excel-Tabelle SQL-Insert-Scripts erstellen muss.
Bisher habe ich das von Hand mit Formeln zusammengeschustert. Jetzt habe ich aber eine VBA-Funktion geschrieben, die mir das mehr oder weniger abnimmt.
===== Definition =====
'/**
' * Setz ein einfaches Insert zusammen
' * @example =joinSql("MY_TABLE"; A$9:Q$9; A11:Q11; A$10:Q$10)
' *
' * @param Cell/String Name der Zieltabelle
' * @param Range Range mit den Spaltennamen
' * @param Range Range mit den Daten (eine Zeile)
' * @param Range Range mit den Datentypzuweisung. Die Typenzuweisung ist typ & attribut.
' * @param String Name der Sqeunez
' * @return String
' */
Public Function joinSql( _
ByVal iTableName As String, _
ByRef iHeaderRange As Range, _
ByRef iDataRange As Range, _
Optional ByRef iTypeRange As Range, _
Optional ByVal iSequenceName As String _
) As String
==== Typen ====
***s** String text -> 'text'
***d** Datum 1.2.2016 -> TO_DATE('02/01/2016', 'MM/DD/YYYY')
***i** SEQUENZ.NEXTVAL
***x** Spalte unterdrücken
* Wert unverändert zurückgeben
***n** Standard: NULL
***e** Empty: ""
***0** Null: 0
***t** SYSDATE
* Wenn die Spalte keinen Eintrag im HeaderRange hat, wird sie unterdrück
* Unordered List ItemSpalten, welche im TypeRange 'x' drin haben, werden ebenfalls unterdrückt
* Die Attribute zur Nullregelung können dem Type angehängt werden
=== Beispiele zu den Typeneinträgen ===
*sn -> Feld ist ein String, wenn kein Wert vorhanden ist wird der Text NULL ausgegeben
*se -> Wieder ein String. Aber der Leerwert wird als "" ausgegeben
*s -> Wie sn
*0 -> ohne formatierung. Ein Leerwert wird als 0 ausgegeben
*etc.
===== Code =====
Und hier noch der Code zu den oben bechreibenen Funktionen
>Dieser Coder ist für Oracle geschrieben. Für andere DBMS müssend ie Konstanten C_DATE_FORMAT und C_DATE_TIMESTAMP ersetzt werden