1

Java Jacob ライブラリを使用して Windows Search を利用しようとしています。maxRecordsしかし、返される行数を制限するオプションを指定するのに苦労しています。

私はこの行を使用してそれをやろうとしています:

Dispatch.put(connection, "MaxRecords", new Variant(10));

接続の設定後:

connection = new Dispatch("ADODB.Connection");
Dispatch.call(connection, "Open", "Provider=Search.CollatorDSO;Extended Properties='Application=Windows';");

//-------> error in the following line  <-------
Dispatch.put(connection, "MaxRecords", new Variant(10));

results = Dispatch.call(connection, "Execute",
        "SELECT System.ItemName, System.DateModified " +
        "FROM SystemIndex " +
        "WHERE Directory='file:C:/my/folder/path' AND Contains('a')").toDispatch();

while (!Dispatch.get(results, "EOF").getBoolean()) {
        Dispatch fields = Dispatch.get(results, "Fields").toDispatch();
        String filename = Dispatch.get(Dispatch.call(fields, "Item", new Integer(0)).toDispatch(), "Value").toString();
        String filedate = Dispatch.get(Dispatch.call(fields, "Item", new Integer(1)).toDispatch(), "Value").toString();
        list.put(filename, filedate);
        Dispatch.call(results, "MoveNext");
}

私は何を間違っていますか?コンパイル時にエラーはありませんが、実行すると次のメッセージが表示されます。

com.jacob.com.ComFailException: COM 例外が発生しました:
呼び出し時
: MaxRecords 説明: 80020007 / 名前付き引数がありません。
...
内部サーバー エラー (500) - サーバーで予期しない状況が発生したため、要求を実行できませんでした

そして、これは私の安らかなURLからアクセスするときのものです:

内部サーバーエラー

サーバーで予期しない状況が発生したため、リクエストを実行できませんでした。技術的な詳細については、こちらを参照してください。引き続きホームページをご覧ください。

その行がなくてもすべて正常に動作します。

4

1 に答える 1

1

ドキュメントによると、ConnectionMaxRecordsオブジェクトにはプロパティがありません。RecordSetオブジェクトに MaxRecords を設定したいと思うでしょう。

編集:

私はこれらを試していませんが、次の行に沿って試してみます:

connection = new Dispatch("ADODB.Connection");
Dispatch.call(connection, "Open", "Provider=Search.CollatorDSO;Extended Properties='Application=Windows';");

String sql = "SELECT System.ItemName, System.DateModified " +
    "FROM SystemIndex " +
    "WHERE Directory='file:C:/my/folder/path' AND Contains('a')"

recordSet = new Dispatch("ADODB.Recordset");
Dispatch.put(recordSet, "MaxRecords", new Variant(10));

Dispatch.call(recordSet, "Open", sql, connection);

while (!Dispatch.get(recordSet, "EOF").getBoolean()) {
    ...
}
于 2014-02-21T12:28:12.450 に答える