LCConnection の Fetch メソッド

このメソッドは、結果セットから次のレコードのグループを取得します。コネクションにアクティブな結果セットがないと、このメソッドは実行できません。

定義位置

LCConnection

構文

count = lcConnection.Fetch(destFieldlist, recordIndex, recordCount)

パラメータ

パラメータ

説明

destFieldlist

LCFieldlist。データを受け取るフィールドリスト。フィールドリスト内の LCFIELDF_NO_FETCH フラグが設定されていない各フィールドに、結果セット内の該当するフィールドのデータがコピーされます。結果セットとフィールドリストのフィールドは、MapByName プロパティが TRUE の場合は名前で、それ以外の場合は位置でマッチングされます。また、データの取得前にデータ型がチェックされます。

recordIndex

Long。オプション、1 以上。レコードを格納するフィールドリスト内の開始レコードの索引。デフォルトは 1 です。

recordCount

Long。オプション、1 以上。フェッチするレコード数。結果セットの最後に到達した場合、実際に取り出されるレコード数はこの値より少ない場合があります。すべての Connector で複数レコードの取り出しが可能です。ただし本当の複数レコードの取り出しが実行されるのは Array Fetch のサポートが指定された Connector のみです。その場合、ネットワークトラフィックが削減され、パフォーマンスが向上します。デフォルトは 1 です。

戻り値

説明

count

Long。取り出しに成功したレコード数

使用法

LCConnection の Fetch メソッドを使用するときには、次のことを考慮してください。

Option Public
Uselsx "*lsxlc" 

Sub Initialize
  Dim src As New LCConnection ("db2") 
 Dim fldLst As New LCFieldList
  Dim keyLst As New LCFieldList
  Dim fld As LCField
  Dim count As Integer

  ' set the appropriate properties to connect to the data source
  src.Database = "Gold"
  src.Userid = "JDoe"
  src.Password = "xyzzy"
  src.Metadata = "customer"

  src.Connect

  ' the FIELDNAMES property of a connection is used to
  ' specify which fields should be used in the result set
  ' if no names are listed, then all fields will be fetched

  src.FieldNames = "ContactName, AccountManager"

  ' the select statement may be called with 'Nothing' as
  ' the keylist parameter. this causes all records to be
  ' selected for the result set.
  ' by creating a keylist with one or more keys, conditions,
  ' and values, tighter control of the result set is possible
  ' here we want to indicate all account managers except
  ' number 200

  ' NOTE: to indicate that a field is a key, the LCFIELDF_KEY flag
  ' must always be included in the value of the connection's flags

  Set fld = keyLst.Append ("ACCOUNTMANAGER", LCTYPE_INT)
  fld.Flags = LCFIELDF_KEY_NE Or LCFIELDF_KEY
  fld.Value = 200

  ' the selection statement builds an international result set which
  ' is later accessed with successive fetches
  If (src.Select (keyLst, 1, fldLst) = 0) Then
    Print "No data were located."
    End
  End If
  Set fld = fldLst.Lookup ("CONTACTNAME")
  Print "the 'contact names' stored in the table are:"
  ' fetch a record from the result set
  While (src.Fetch (fldLst) > 0)
    count = count + 1
    Print "     record #" & Cstr(count) & " = '" & fld.text(0) & "'"
  Wend
  If (count = 0) Then Print "The table contains no records."
End Sub

出力例

the 'contact names' stored in the table are:
     record #1 = 'Peter Soames
     record #2 = 'Trent Kent'
     record #3 = 'Joan Lawrens'

Lotus® Connector for DB2® で使用する LCConnection の Fetch メソッド

このメソッドは現在の結果セットから 1 つ以上のレコードを取り出します。

LCConnection の Execute、Select、Call、Catalog のいずれかのメソッドであらかじめ結果セットを作成しておく必要があります。結果セットのデータは、指定した DestFieldlist とデータ型がチェックされた後でこのフィールドリストに移されます。LCFIELDF_NO_FETCH フラグが設定されているフィールドは取り出されません。

MAP_NAME プロパティで、DestFieldlist のフィールドと結果セットのフィールドを名前と位置のどちらでマッピングするかを指定します。マッピングとフィールドフラグの処理は、LCFieldlistMerge を呼び出すことで暗示的に実行されます。その際、結果セットのフィールド名を NameFieldlist、DestFieldlist を DataFieldlist、MergeFlags を LCMERGEF_NAME_LOSS、LCMERGEF_FETCH およびオプションで (MAP_NAME プロパティに応じて) LCMERGEF_MAP_NAME に設定します。

スクロール不可の結果セットの場合、各レコードが一度だけ順方向に取り出されます。LCXFetch への最後の呼び出しで結果セットの最後のレコードが取得された場合は、LCFAIL_END_OF_DATA が返されます。レコードが少なくとも 1 つ取り出され、RecordCount に指定したレコード数が取り出される前に結果セットの最後のレコードに到達した場合、LCSUCCESS が返されます。

スクロール可能な結果セットは LCTOKEN_SCROLLABLE プロパティを設定して LCXExecute または LCXSelect を実行すると作成されます。この結果セットの場合、最後に取り出されたレコードの前のレコードから逆方向にレコードが取り出されます。