This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
vba:excel:joinsql [20.09.2016 09:42:31] yaslaw created |
vba:excel:joinsql [20.09.2016 12:53:13] (current) yaslaw |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | <const> | ||
+ | version=1.0.0 | ||
+ | vdate=03.08.2016 | ||
+ | fname=udf_joinsql.bas | ||
+ | ns=%NAMESPACE% | ||
+ | fpath=/vba/excel | ||
+ | </const> | ||
====== [VBA][Excel] joinSql ====== | ====== [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. | 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. | 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 ===== | ||
+ | <code vb>'/** | ||
+ | ' * 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</code> | ||
+ | |||
+ | ==== 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 | ||
+ | <source '%%fpath%%/%%fname%%' vb> | ||