此问题使用来自 C#/.NET 程序的Cisso.dll 互操作库的 Microsoft索引服务(方言 2)和IixssoQuery 接口。
在我们的索引中有定义为vt_i8
数据类型(8 字节)的列,但是CreateRecordSet
互操作库的方法总是返回一个 RecordSet,它具有 4 字节整数的数字列,截断超过 2,147,483,648 范围限制的任何内容。
理想情况下,我们需要从互操作库中提取 C# long
System.Int64(8 字节)而不是 C# System.Int32(4 字节)。int
以下代码示例(主要提供给 jog memory)使用 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 互操作库的限制,或者是否可以从中提取更大的整数值而我们只是不知道该怎么做?
我敢肯定,这里的某个人一定遇到过类似的问题。这次在互联网上搜索非常缺乏细节。
我们根据索引中的数据找到了一种解决方法:我们能够从另一个字符串字段中提取我们需要的内容并从中解析出数字。不理想,但一种解决方法。