コミュニティでの活動の履歴として、自身(Orator/魔界の仮面弁士)が掲示板・Mailing List・Newsgroup等へ発言した内容の中で、再利用できそうな物を拾い出して、掲載しています。

« 2007年05月 | Main | 2007年11月 »
[ACE 12.0] メモ型フィールドの動作について / 2007年06月05日(火)

以前、[Jet 4.0] メモ型フィールドの最大長について という記事の中で、メモ型フィールドの最大値について書きましたので、あらためて Access 2007 バージョンで再実験してみました。


最初に実験結果から書くと、『最大で、536,870,911 文字を登録できる』ようです。

これは VB6 から ADO 2.8 + Microsoft.ACE.OLEDB.12.0 を用いて、AppendChunk を繰り返し呼び出して実験した結果です。

あれ。Jet 4.0 の時は、536,870,910 文字という結果だったような…?


最大長までデータを追加した後、ADO 2.8 の「ADODB.Field オブジェクトの ActualSize プロパティ」や、DAO 12.0 の「DAO.Field2 オブジェクトの FieldSize プロパティ」で再測定してみると、 1,073,741,822 バイトという値を返してきました。

1文字を2バイトとして換算すると、確かに一致していますね。


ただし、この FieldSize で得た値を、GetChunk メソッドに対して使う際には注意が必要です。

ヘルプでは、引数に指定する値は「バイト数」と書かれていますが、実際には、メモ型フィールドに対しては「文字数」として働くようですので…。


Dim RS As DAO.Recordset2
Set RS = DB.OpenRecordset(TableName)
If Not RS.EOF Then
    Dim F As DAO.Field2
    Set F = RS.Fields(FieldName)

    '「1073741822」と返された
    Debug.Print F.FieldSize

    Dim v As Variant
    v = F.GetChunk(600000000, 100)
    '「0」と返された
    Debug.Print LenB(v)

    v = F.GetChunk(500000000, 100)
    '「200」と返された
    Debug.Print LenB(v)
End If
RS.Close

 
Posted at 19:46 / Jet/Access / この記事のURL
コメント(0)
P R

Microsoft Most Valuable Professional, Visual Developer - Visual BasicMSMVP for Visual Basic


Global Media Online INC.