Publish date: 2003-01-05

Arrays writing (VB)

'WRITE ARRAY SAMPLES
'
'CREATE TABLE VARCHAR_ARRAY
'(
'  A1_2 VARCHAR(16) [-1:2]
');

Sub sample6()
 Dim cn As New ADODB.Connection

 'Connect to test database (auto_commit=false)
 cn.Open "file name=h:\database\test_db5.ibp"

 cn.BeginTrans

 'The command with named parameters
 Dim cmd1 As New ADODB.Command
 cmd1.ActiveConnection = cn

 ' The command with unnamed parameters
 Dim cmd2 As New ADODB.Command
 cmd2.ActiveConnection = cn

 ' 1. Explicit definition of table and column names
 cmd1.CommandText = "insert into varchar_array (a1_2)" & Chr(13) & _
                   "values(:a1_2.varchar_array.a1_2)"

 ' Information of parameters retrive from provider
 Dim array1(-1 To 2) As String
 Dim x As Long

 For x = LBound(array1) To UBound(array1)
  array1(x) = CStr(x) & ":" & CStr(Time)
 Next x

 cmd1("a1_2") = array1

 cmd1.Execute

 '2. work with unnamed parameters
 cmd2.CommandText = "insert into varchar_array (a1_2)" & Chr(13) & _
                   "values(?.varchar_array.a1_2)"

 ' Use explicit parameter definition
 cmd2.Parameters.Append cmd2.CreateParameter(, adArray + adBSTR, adParamInput)

 cmd2(0) = array1

 cmd2.Execute

 '3. write of array subset
 Dim sub_array(0 To 1) As String

 sub_array(0) = "sub array [0]"
 sub_array(1) = "sub array [1]"

 cmd2(0) = sub_array

 cmd2.Execute

 '4. message of incorrect dimension
 Dim bad_array(1 To 2, 1 To 2) As String

 bad_array(1, 1) = "1:1"
 bad_array(1, 2) = "1:2"
 bad_array(2, 1) = "2:1"
 bad_array(2, 2) = "2:2"

 cmd1("a1_2") = bad_array

 'ERROR TEXT: IB-Dim:1 SA-Dim:2
 cmd1.Execute

 '5. incorrect range
 Dim bad_array2(-5 To 5) As String

 For x = LBound(bad_array2) To UBound(bad_array2)
  bad_array2(x) = CStr(x) & ":" & CStr(Time)
 Next x

 cmd2(0) = bad_array2

 'ERROR TEXT: DIM:1 IB:[-1..2] SA:[-5..5]
 cmd2.Execute

 'commit all changes
 cn.CommitTrans
End Sub 'samples6