0
用VB6編寫的應用程序。 DB是Pervasive v9.5。如何將字符串寫入普遍大於32k的longvarchar?
現任職:
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。
感謝, 格雷厄姆
你是一個天才Mirtheil。謝謝! – GJones