IBM Support

LCConnection の Execute メソッドでレコード件数が確認できない

技術情報(FAQs)


質問

LCConnection の Execute メソッドで、SELECT 文を使ってアクセスしていますが、Execute メソッドの戻り値が必ず "-1" で返ってきます。

ヘルプの戻り値の説明では、レコード数が返ってこない場合は、LCCOUNT_UNKNOWN が返されると記載されていますが、"-1" が LCCOUNT_UNKNOWN なのでしょうか。

以下、ヘルプ(Lotus Connector LotusScript Extensions ガイド)の「LCConnection の Execute メソッド」より抜粋:
---------------
Long。このステートメントで選択または影響を受けたレコード数。
Connector によってレコード数の判断がつかない場合は、定数 LCCOUNT_UNKNOWN が返されます。
---------------

Execute メソッドの戻り値で、レコード件数を取得する方法はありますか。


回答

レコード件数を取得するには、SELECT 文に count(*) 関数を使ってください。

以下のサンプルコードは、Oracle の EMP テーブルのレコード数を取得しています。

注意: 以下のサンプルスクリプトは、この問題への 1 つのアプローチ方法を説明するためにのみ提供されています。IBM テクニカル・サポートでは、お客様固有の構成に応じてこのスクリプトをカスタマイズすることはいたしません。このスクリプトは多くのお客様の環境で機能しますが、ご提案としてのみ提供します。IBM はこれ以上のサポートを行いませんので、あらかじめご了承ください。

Uselsx "*lsxlc"

Sub Initialize

    Dim src As New LCConnection ("oracle")
    Dim fldLst As New LCFieldList
    Dim fld As LCField
    Dim count As Integer
    src.Server = "Oracle ホスト名"
    src.Userid = "ユーザー名"
    src.Password = "パスワード"
    src.Connect
    count = src.Execute ("SELECT count(*) as CNT from scott.emp", fldLst)
    If (count = LCCOUNT_UNKNOWN) Then
      Set fld = fldLst.Lookup ("CNT")
      While (src.Fetch (fldLst) > 0)
        Print "record # = '" & fld.text(0) & "'"
      Wend
    Else
      Print "No records were fetched."
    End If
End Sub

Document information

More support for: IBM Domino

Software version: 8.5, 9.0

Operating system(s): Windows

Reference #: 1992331

Modified date: 04 January 2017


Translate this page: