この質問は、C#/ .NETプログラムののCisso.dll interopライブラリのIndexing Services(Dialect 2)とIixssoQuery interfaceを使用しています。MicrosoftインデックスサービスCisso.dll interop library:4バイト整数の上限?
vt_i8
データ型(8バイト)として定義され、Googleのインデックス内のカラムがあります。しかし、相互運用ライブラリのCreateRecordSet
方法は常に2147483648範囲限界を超えるものを切り捨て、4つのバイトの整数の数値列を持つレコードセットを返します。
理想的には、interopライブラリからC#int
System.Int32(4バイト)の代わりにC#long
System.Int64(8バイト)を引き出す必要があります。
(主記憶を呼び起こすために提供される)以下のサンプルコードは、切り捨てられた整数とのデータテーブルを返す、レコードセットを取得し、データテーブルを埋めるためにCisso.dllを使用します。
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を作成する必要がありました。それは自由時間のかなりのビットを取ったが、その良い困惑。 –