1

ESEデータベースのテーブルの1つに、その人の電話番号を保持する複数値の短いASCIIテキスト列があります。

新しい値のセットがあります。古い値を完全に消去して、新しい値のみを使用したいと思います。

JET_bitSetRevertToDefaultValueビットが機能していないようです。MSDNのドキュメントには、「後続の列の取得操作で列がデフォルトの列値を返すようになります。既存の列値はすべて削除されます」と記載されていますが、何も実行されないことがわかりました(戻り値は返されません)。

または、列に含まれている値の数を簡単に確認する方法はありますか(たとえば、更新ではなく挿入を行っている場合など、これはゼロになる可能性があります)。もしそうなら、私は'nValues'から1までのループを実行するだけで、itagSequence値を提供しながら、nullに設定して値を消去し、目的を達成することができます。

私はC#をプログラミングしており、ManagedEsentライブラリの最新バージョンを使用しています。

前もって感謝します!

4

1 に答える 1

1

JetRetrieveColumnsを使用して、ESENTから複数値のインスタンス数を取得できます。この機能の説明は、MSDNドキュメントの備考セクションに埋め込まれています。

JetRetrieveColumnsを使用して、JET_RETRIEVECOLUMNのitagSequenceが0になる列を取得します(pvDataおよびcbDataメンバーはnull / 0のままにします)。呼び出し後、itagSequenceメンバーには、複数値列のインスタンスの数が含まれます。

JET_RETRIEVECOLUMN retrievecolumn = new JET_RETRIEVECOLUMN();
retrievecolumn.columnid = multivalueColumn;
retrievecolumn.itagSequence = 0;
Api.JetRetrieveColumns(sesid, tableid, new[] { retrievecolumn }, 1); 
Console.WriteLine("{0}", retrievecolumn.itagSequence);

これを機能させるには、最新のManagedEsentソースコードが必要です。これのテストを書いたとき、ManagedEsentコードにバグが見つかりました-呼び出し後にitagSequenceが設定されていませんでした。修正をチェックインしました。

于 2010-05-29T07:07:53.577 に答える