我不能在代码的某些部分中使用redim保留

时间:2019-04-15 15:02:33

标签: vbscript asp-classic

我正在使用redim保留来存储对象,但是发生错误。 在我需要使用的代码部分中,程序中断了。

function get_info(ByRef a_array_of_objects )

'ReDim Preserve a_array_of_opbjects ( 5 )  if i put here the redim 
 'preserve it works but i don`t need here

Set conexion = Server.CreateObject("ADODB.Connection")
set comando =Server.CreateObject("ADODB.Command")
conexion.open "DSN=mydsn;server=myserver;uid=myUser;pwd=mypass"
comando.ActiveConnection=conexion       

comando.CommandText="MY_STORE_PROCEDURE"
comando.CommandType=4

comando.Parameters.Append objComm1.CreateParameter("p_parameter",3,1,100,10)

set v_local=comando.Execute

v_local_array=v_local.GetRows

 ReDim Preserve a_array_of_objects ( ubound(v_local_array,2) ) '  i need 
   'here the redim preserve code but it breaks      
   ' the index is out of range is the error
 for i=0  to  UBound(v_local_array,2)
   set o_object=new c_object

   o_object.let_property=v_local_array(0,i)
   o_object.let_property1=v_local_array(1,i)

   a_array_of_objects(i)=o_object 
next




function_that_clean_parameters(comando)
conexion.close  

    'ReDim Preserve a_array_of_objects ( 10) here the code don`t works also

 end function

我希望得到对象的修复,但会收到错误消息 如果有人可以帮助我。 对不起,我的英语。

1 个答案:

答案 0 :(得分:0)

您正在尝试通过引用传递数组。如果阵列已锁定,则将无法使用ReDim。您将需要按值传递它:

function get_info(ByVal a_array_of_objects)

之所以能够在函数开始时ReDim放置数组,是因为您拼错了它:

  

a_array_of_o p 对象

您正在创建一个新数组,而不是对传递的数组进行重新调暗。

此外,您的函数实际上没有返回任何内容,请在函数末尾确保包括:

get_info = a_array_of_objects