2014-02-13 2 views
1

java Jacob library.을 사용하여 Windows Search를 사용하려고하지만 행 수가 제한되는 maxRecords 옵션을 지정하는 데 문제가 있습니다.자바로 MaxRecords를 설정하십시오. Jacob 라이브러리

나는이 줄을 사용하여 그것을 할 노력하고있어 :

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"); 
} 

내가 잘못 뭐하는 거지 :

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

연결을 설정 한 후? 이 컴파일에 오류가 없다하지만 실행에 나는이 메시지를 얻을 :의 호출에
:

com.jacob.com.ComFailException :의 COM 예외가 발생했습니다를을 MaxRecords
는 설명 : 80,020,007는 없음 이름/인수. -
...
내부 서버 오류 (500) URL에 의해 내 편안한를 통해 액세스 할 때 서버는 요청

를 처리하지 못하도록하는 예상치 못한 상황 그리고이 하나가 발생했습니다

내부 서버 오류

서버에서 예기치 않은 조건이 발생하여 요청을 수행하지 못했습니다. here의 기술 정보를 얻을 수 있습니다. 저희 홈페이지에서 계속 방문하십시오.

모든 것이 그 줄없이 잘 작동합니다.

답변

1

문서에 따르면 Connection 개체에는 MaxRecords 속성이 없습니다. MaxRecords를 RecordSet 개체로 설정하려고한다고 생각합니다.

편집 :

나는이 시도하지 않은,하지만 다음과 같은 라인을 따라하려고 할 것입니다 :

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()) { 
    ... 
} 
+0

그래, 그래서 그것을 어떻게 할 수 있을까? – Alvaro

+0

더 많은 코드로 업데이트 된 질문 – Alvaro

+0

'Dispatch recordSet;'을 작성한 다음 제안한 두 줄 ([this like] (http://pastebin.com/kUh1ith5))을 추가했지만 작동하지 않는 것 같습니다 . 'java.lang.IllegalArgumentException : null null Dispatch object를 전달할 수 없습니다. '오류를 얻습니다. – Alvaro

관련 문제