VB6 で書かれたアプリケーション。DB はパーベイシブ v9.5 です。
現在動作しています:
Public Sub Save()
if rs.State = adStateOpen Then
rs.AddNew
SetFields rs
rs.Update
End If
end sub
Public Sub SetFields(rs as ADODB.Recordset)
rs!Name = strName
StrToField strReport rs!Report
StrToField strResponse rs!Response
end sub
Public Sub StrToField(ByVal str As String, fld As ADODB.Field)
Dim Data As String
Dim StrSize As Long, CharsRead As Long
' for field of LONVARCHAR type only
If fld.Type = adLongVarChar Then
StrSize = Len(str)
Do While StrSize <> CharsRead
If StrSize - CharsRead < BLOCK_SIZE_LONGVARCHAR Then
Data = Mid(str, CharsRead + 1, StrSize - CharsRead)
CharsRead = StrSize
Else
Data = Mid(str, CharsRead + 1, BLOCK_SIZE_LONGVARCHAR)
CharsRead = CharsRead + BLOCK_SIZE_LONGVARCHAR
End If
fld.AppendChunk Data
Loop
Else
' do something
End If
End Sub
Const BLOCK_SIZE_LONGVARCHAR = 4096
レポートまたは応答変数が 32000 文字を超えるまで、これは正常に機能します。rs.update が呼び出されると、次のエラー メッセージが表示されます。
「[Pervasive][ODBC Client Interface] 文字列の長さが列の長さパラメータ #15 を超えています。データが切り捨てられました。」
誰かが私を正しい方向に向けたり、何かが欠けているかどうかを教えてもらえますか. Pervasive Longvarchar の最大サイズは 2GB にする必要があります。
ありがとう、グラハム