Hola ,
estoy desarrollando una aplicacion cliente servidor de 3 capas.
tengo un procedimiento almacenado el cual realiza un insert en una tabla
determinada, el sp recibe como parametros todos los campos de la tabla.
para enviarle los parametros al sp realizo lo siguiente, ejecuto una
consulta que me devuelve un recorset vacio el cual contiene todos los campos
de la tabla donde voy a actualizar, este recordset luego lo lleno con la
informacion que he capturado en unos texbox, y se lo paso como parametro a
el metodo descrito abajo
este metodo crea un objeto command, luego recorre cada campo del recordset y
e inserta en la coleccion parameter del command todos los campos del
recorset con sus respectivas propiedades(nombreprm, tipo, direccion..etc) ,
pero al momento de hacer el execute se presenta un error que dice error
1429 codigo de exepcion OLE.. valor de escala no valido.
Alguna idea de que puede ser
ah! estoy trabajando con sql server
-
Abraham
PARAMETERS tcNombreSp, toRs
LOCAL loComando, lnVrRetorno
lnVrRetorno = 0
*129 && adChar
*130 && adWChar
*200 && adVarChar
*201 && adLongVarChar
*202 && adVarWChar
TRY
IF THIS.Conectar() > 0
loComando = CREATEOBJECT("ADODB.COMMAND")
loComando.ActiveConnection = THIS.oConexion
loComando.CommandText = tcNombreSp
loComando.CommandType = "&H0004" && PROC ALMACENADO
FOR I = 0 TO toRs.FIELDS.COUNT -1
loParametro = 'prm' + toRs.FIELDS(I).NAME
lcNombrePrm = '@' + toRs.FIELDS(I).NAME
lcTipoPrm = toRs.FIELDS(I).TYPE
lcDireccionPrm = '&H0001' && ENTRADA
IF toRs.FIELDS(I).TYPE = 129 OR toRs.FIELDS(I).TYPE= 130 OR ;
toRs.FIELDS(I).TYPE= 200 OR toRs.FIELDS(I).TYPE= 201 OR;
toRs.FIELDS(I).TYPE= 202 OR toRs.FIELDS(I).TYPE= 203
lcTamanoPrm = toRs.FIELDS(I).DefinedSize
ELSE
lcTamanoPrm = 0
ENDIF
lcValorPrm = toRs.FIELDS(I).VALUE
IF lcTamanoPrm <> 0
&loParametro = loComando.CreateParameter(lcNombrePrm, lcTipoPrm,
lcDireccionPrm, lcTamanoPrm, lcValorPrm)
ELSE
&loParametro = loComando.CreateParameter(lcNombrePrm, lcTipoPrm,
lcDireccionPrm,, lcValorPrm)
ENDIF
loComando.PARAMETERS.APPEND(&loParametro)
ENDFOR
loComando.Execute()
ENDIF
THIS.inicializarerror
CATCH TO loError
lnVrRetorno = -1
THIS.Establecererror(loError)
FINALLY
ENDTRY
RETURN lnVrRetorno
Leer las respuestas