이 질문은 Visual C# .NET 프로그램의 Cisso.dll interop 라이브러리의 Indexing Services (Dialect 2) 및 IixssoQuery interface을 사용합니다.Microsoft 인덱싱 서비스 Cisso.dll interop 라이브러리 : 4 바이트 정수의 상한선?
는 vt_i8
데이터 유형 (8 바이트)로 정의 색인의 열 그러나 상호 운용성 라이브러리의 CreateRecordSet
방법은 항상 2,147,483,648 범위 한도 이상의 아무것도 절단, 4 개 바이트 정수의 숫자 열을 갖는 레코드 집합을 반환있다.
이상적으로 우리는 interop 라이브러리에서 C# int
System.Int32 (4 바이트) 대신 C# long
System.Int64 (8 바이트)를 가져와야합니다.
다음 코드 샘플 (주로 조그 메모리에 제공됨)은 Cisso.dll을 사용하여 레코드 세트를 가져와 DataTable을 채우고 잘린 정수로 데이터 테이블을 반환합니다.
CissoQueryClass cqc = new Cisso.CissoQueryClass();
RecordSet rs = new RecordSet();
cqc.Columns = "Rank, DocTitle, VPath, Filename, Characterization,Write";
// ... setup ...
var myDs = new DataSet();
oldDbAdapter.Fill(myDs, cqc.CreateRecordSet("nonsequential"), "IXResults");
return myDs;
우리는 cqc. DefineColumn(..)
메서드를 사용하여 데이터 유형 등을 재생하지만 아무런 효과가 없습니다. 잘린 정수의 동작에는 변화가 없습니다.
이 정수 자르기가 CISSO interop 라이브러리의 제한 사항인지 또는 더 큰 정수 값을 가져올 수 있는지 그리고 그 방법을 모르는지 알고 싶습니다.
나는 누군가 여기 비슷한 문제에 직면했을 것이라고 확신한다. 이번에 인터넷 검색을하는 것은 매우 짧습니다.
우리는 인덱스 내부의 데이터를 기반으로 해결책을 발견 : 우리는 우리가 다른 문자열 필드에서 필요한 풀과에서 번호를 구문 분석 할 수있어. 이상적이지는 않지만 해결 방법입니다.
당신은 Win2000 클라이언트 이전 버전을 위해 글을 쓰고 있습니까? 내가 묻는 이유는 그것이 XP에서 가치가 하락한 것으로 나타났습니다. –
우리가 사용하고있는 제품 (Ektron http://www.ektron.com/)은 비추천 기술을 기반으로하고 있기 때문에이 기술을 사용해야합니다. –
그건 짜증. 몇 가지 세부 사항이 있는데 대답을하고 있지만 XP VM을 만들어야했습니다. 그것의 자유 시간을 꽤 많이 잡았지만, 그 좋은 수수께끼. –