このメソッドは 2 つのフィールドリストをマージします。1 つのフィールドリストから名前をコピーし、もう 1 つのフィールドリストのフィールドオブジェクトを使用して 3 つ目のマッピングフィールドリストに挿入します。このメソッドは、フィールドマッピングオペレーション時に名前フィールドリストが作成済みの場合、またはフィールドリストのフラグを使用する場合に使用します。
LCFieldlist
Call destList.Merge (nameFieldList, dataFieldList, mergeFlags)
パラメータ |
説明 |
---|---|
nameFieldlist |
LCFieldlist。新しいフィールドリストに使用するフィールド名が含まれているソースフィールドリストです。リストに含まれるフィールドのデータ型と値は無視されます。 |
dataFieldlist |
LCFieldlist。新しいフィールドリストに使用する参照データが含まれているソースフィールドリストです。 |
mergeFlags |
Long。デフォルトでは、2 つのフィールドリストのフィールド数が同じでなければならず、フィールドは位置によってマップされます (1 番目と 1 番目、2 番目と 2 番目など)。mergeFlags を使用してこのデフォルトの動作を変更できます。以下の 0 個以上の値の論理和がとられます。 |
LCMERGEF_MAP_NAME -- ソースとターゲットのフィールドを位置ではなくフィールド名で一致させます。 |
|
LCMERGEF_DATA_LOSS -- nameFieldlist に対応するフィールドがない dataFieldlist のフィールドは無視します。 |
|
LCMERGEF_NAME_LOSS -- dataFieldlist に対応するフィールドがない nameFieldlist のフィールドは無視します。 |
|
LCMERGEF_FETCH -- LCFIELDF_NO_FETCH フラグが設定されているフィールドは無視します。 |
|
LCMERGEF_INSERT -- LCFIELDF_NO_INSERT フラグが設定されているフィールドは無視します。 |
|
LCMERGEF_UPDATE -- LCFIELDF_NO_UPDATE フラグが設定されているフィールドは無視します。 |
|
LCMERGEF_REMOVE -- LCFIELDF_NO_REMOVE フラグが設定されているフィールドは無視します。 |
|
LCMERGEF_CREATE -- LCFIELDF_NO_CREATE フラグが設定されているフィールドは無視します。 |
|
LCMERGEF_DROP -- LCFIELDF_NO_DROP フラグが設定されているフィールドは無視します。 |
|
LCMERGEF_KEY -- LCFIELDF_KEY フラグが設定されているフィールドは無視します。 |
dataFieldList から取得したデータを構成するものは、このリストに含まれる LCField オブジェクトへの参照です。フィールド名は LCField には保存されていないため、同じ LCField オブジェクトをフィールドリストごとに異なる名前で参照することもできます。このメソッドでは、新しい LCField オブジェクトは作成されません。
このメソッドの処理は、基本的に Map メソッドと同じです。ただし、フィールド名は、カンマ区切り文字列からでなく、LCFieldlist オブジェクトから取得されます。nameFieldList に含まれるフィールドのデータ型と値は無視されます。
destList に既にフィールドが含まれている場合は、Merge メソッドにより破棄されます。
Option Public
Uselsx "*lsxlc"
Sub Initialize
Dim session As New LCSession
Dim srcCon As New LCConnection ("db2
Dim destCon As New LCConnection ("notes")
Dim fldLst As New LCFieldlist
Dim fetchLst As New LCFieldlist
Dim insertLst As New LCFieldlist
Dim dataLst As New LCFieldlist
Dim nameLst As New LCFieldlist
Dim count As Long
REM set the appropriate properties to connect to the data sources
srcCon.Database = "Gold"
srcCon.Userid = "JDoe"
srcCon.Password = "xyzzy"
srcCon.Metadata = "customer"
destCon.Server = "Rainbow"
destCon.Database = "Gold"
destCon.Metadata = "customer"
REM connect to the two data sources
srcCon.Connect
destCon.Connect
REM we can perform a select and get the records with the fields we want
REM in our fldLstRecord object
If (srcCon.Select (Nothing, 1, fldLst) <> 0) Then
REM first we identify the data fields to fetch and order them
Call dataLst.Append ("CONTACTNAME", LCTYPE_TEXT)
Call dataLst.Append ("COMPANYCITY", LCTYPE_TEXT)
Call dataLst.Append ("COMPANYSTATE", LCTYPE_TEXT)
Call fetchLst.Merge (dataLst, fldLst, LCMERGEF_MAP_NAME Or LCMERGEF_DATA_LOSS)
REM now we need to do a merge of the fields being fetched with the
REM names of the fields being stored
Call nameLst.Append ("Name", LCTYPE_TEXT)
Call nameLst.Append ("City", LCTYPE_TEXT)
Call nameLst.Append ("State", LCTYPE_TEXT)
Call insertLst.Merge (nameLst, fetchLst, 0)
REM set the property Map by Name on both data sources
srcCon.MapByName = True
destCon.MapByName = True
REM fetch a record from the result set
While (srcCon.Fetch (fetchLst, 1, 1) > 0)
REM now insert the record into the target and fetch the next,
REM looping until all records have been inserted
count = count + destCon.Insert (insertLst, 1, 1)
Wend
Print "Transferred " & count & " records from DB2, to Notes"
Print "Field mapping from (DB2 column name to Notes Field name):"
Print " ContactName --> Name"
Print " CompanyCity --> City"
Print " CompanyState --> State"
End If
End Sub
Transferred 3 records from DB2, to Notes
Field mapping from (DB2 column name to Notes Field name):
ContactName --> Name
CompanyCity --> City
CompanyState --> State