PRB: CreateRecordset Method of Datafactory Fails w/ Text FieldID: Q192138
|
With a RDSServer.DataFactory component, build a disconnected recordset containing a text field greater then 32767 bytes, using the CreateRecordset method. This scenario creates the following error:
Invalid Procedure Call or Argument.
At present the column settings should adhere to the following constraints, which clearly show that the third parameter is an integer whose value should be less then or equal to 32767:
Column Name : String (BSTR)
Column Type : Integer (VT_I2)
Column Size : Integer (VT_I2)
Column IsNullable : Bool (VT_BOOL)
The workaround is to set the field size greater then 255 bytes. This automatically converts the field type to adLongVarChar and can hold more than a 2 MB string.
This behavior is by design.
Private Sub Command1_Click()
Dim blankrec As New DataFactory
Dim rst As ADOR.Recordset
Dim Record(0) As Variant
Dim Col1(3) As Variant
Dim str As String, i As Long
' Use the RDSServer.DataFactory to create an empty
' recordset. It takes an array of variants where
' every element is another array of
' variants, one for every column required in the
' recordset.
' The elements of the inner array are the column's
' name, type, size and nullability.
Col1(0) = "Text1"
Col1(1) = CInt(adLongVarChar)
' For our first pass this line remains uncommented to produce
' the error.
Col1(2) = 32768 'In order to pass a 32KB string.
' The following, when uncommented, creates the recordset without
' the error.
'Col1(2) = 256
Col1(3) = True
Record(0) = Col1
Set rst = blankrec.CreateRecordSet(Record) ' You get an error here
' when col2(2) > 32767.
For i = 1 To 1024 ' Build a 2MB string.
str = str & String(2000, "x")
Next i
rst.AddNew
rst(0) = str
rst.Update
Debug.Print rst(0).ActualSize 'To prove that the field holds
'the 2MB string.
End Sub
Invalid Procedure Call.
Col1(2) = 256 and comment Col1(2) = 32768
RDS Help; search on: "CreateRecordset"
Additional query words:
Keywords : kbRDS150 kbRDS150bug kbRDS200 kbRDS200bug
Version : WINDOWS:1.5,2.0,5.0,6.0
Platform : WINDOWS
Issue type : kbprb
Last Reviewed: July 13, 1999