0
我有以下功能返回二维数组
Function GetSearchField2dArray(tableName)
sql = "SELECT * FROM "&tableName&" WHERE TEST IS NULL"
set rstField = DataConn.execute(sql)
Dim rv : rv = ConvertSqlResponseTo2dArray (rstField, "")
set rstField = Nothing
GetTCLSSearchFields2dArray = rv
End Function
该函数接受一个SQL结果集和使用ConvertSqlResponseTo2dArray
转换它的2D阵列。我已经验证rv
确实是一个完美的阵列。
这里是ConvertSqlResponseTo2dArray供参考:
Function ConvertSqlResponseTo2dArray(rstField, strExclude)
iField_tmp = 0
ReDim arrField(2, 0)
For i = 0 To rstField.Fields.Count - 1
If InStr(strExclude, "," & rstField.Fields(i).Name & ",") = 0 Then
strFieldType = rstField.Fields(i).Type
ReDim Preserve arrField(2, iField_tmp)
arrField(0, iField_tmp) = rstField.Fields(i).Name
If strFieldType = adDate Or strFieldType = adDBDate Or strFieldType = adDBTime Or strFieldType = adDBTimeStamp Then
' Date
arrField(1, iField_tmp) = "date"
ElseIf strFieldType = adSmallInt Or strFieldType = adInteger Or strFieldType = adTinyInt Or strFieldType = adUnsignedTinyInt Or strFieldType = adUnsignedSmallInt Or strFieldType = adUnsignedInt Or strFieldType = adBigInt Or strFieldType = adUnsignedBigInt Then
' Integer
arrField(1, iField_tmp) = "num"
ElseIf strFieldType = adSingle Or strFieldType = adDouble Or strFieldType = adCurrency Or strFieldType = adDecimal Or strFieldType = adVarNumeric Then
' Decimal
arrField(1, iField_tmp) = "num"
ElseIf strFieldTYpe = adBoolean Then
' Boolean
arrField(1, iField_tmp) = "boolean"
Else
arrField(1, iField_tmp) = "string"
End If
iField_tmp = iField_tmp + 1
End If
Next
ConvertSqlResponseTo2dArray = arrField
End Function
然后,我有代码,其中我使用它
Session("SearchFields") = GetSearchField2dArray("Test1")
会议( “SearchFields”)是空的,而不是阵列。它返回前是2d数组,返回后不是2d数组。一直持续了近一个小时的努力。
我已经尝试将GetSearchField2dArray的结果设置为一个变量,它仍然有相同的问题。
你有没有听说过'ADODB.Recordset'对象的'GetRows()'方法? – Lankymart
@Lankymart:我也会建议'.GetRows',但看起来这个convert函数实际上是将列名和数据类型放入数组中,*不是*这些值。然后引发这个问题,为什么还要从查询中返回多行? (还有,OP听说过'sp_columns',或者更好,'SELECT name,system_type_id FROM sys.columns WHERE [object_id] = OBJECT_ID('dbo.tablename')'?) – Martha
@Martha所有的优点,但由于Kul-tigin,OP有他们半熟的答案,所以我怀疑他们会回来。叹 – Lankymart