none
Error con la inserción de datos. RRS feed

  • Pregunta

  • chicos tengo un problema con la inserción de datos cuando ejecuto esta parametrización. en ASP classico

    Set objCon = Server.CreateObject("OBConnect.GetConnect")
    Set objADC = objCon.GetDatabaseConnect(connect_OB)
    		
    Set strSQL = server.CreateObject ("ADODB.command")
    		    
    strSQL.ActiveConnection = objADC
    strSQL.CommandText = "sp_ofb_insrt_cntto_empsa_2"
    strSQL.CommandType = 4	
    strSQL.Prepared = true 
    		        strSQL.Parameters.Append srtSQL.CreateParameter("cod_sub_prdto", adChar, adParamInput, 4, Cstr(cod_sub_prdto))   
    		        strSQL.Parameters.Append srtSQL.CreateParameter("cod_cntto",adChar, adParamInput,15, Cstr(objDLL.Canonicalize(cod_cntto)) )
    		        strSQL.Parameters.Append srtSQL.CreateParameter("cod_prdto",adChar, adParamInput,2, 	 cstr(objDLL.Canonicalize(cod_cntto) ))
    		        strSQL.Parameters.Append srtSQL.CreateParameter("nro_prsna_empsa", adChar,adParamInput,10,Empresa("RutCliente").Value )
    			strSQL.Parameters.Append srtSQL.CreateParameter("nom_prsna_etcdo", adVarchar,adParamInput,120,Cstr(objEncoder.Canonicalize(mid(session("cod_srv")),1,len(session("cod_srv"))-1 )+"C" ) )
    		        strSQL.Parameters.Append srtSQL.CreateParameter("fch_crecn", adDBTimeStamp,adParamInput,,FormatDateTimeDB(fch_hoy) )
    		        strSQL.Parameters.Append srtSQL.CreateParameter("fch_atvcn", adDBTimeStamp,adParamInput,,fch_atvcn )
    		        strSQL.Parameters.Append srtSQL.CreateParameter("fch_vncto", adDBTimeStamp,adParamInput,,fch_vncto )
    		        strSQL.Parameters.Append srtSQL.CreateParameter("fch_est", adDBTimeStamp,adParamInput,,FormatDateTimeDB(fch_hoy) )
    		        strSQL.Parameters.Append srtSQL.CreateParameter("cod_est", adNumeric,adParamInput,,cod_est )
    		        strSQL.Parameters.Append srtSQL.CreateParameter("flg_atz_nmn", adDBTimeStamp,adParamInput,,Request.Form("flg_atz_nmn")  )
    		        strSQL.Parameters.Append srtSQL.CreateParameter("flg_pco", adNumeric,adParamInputadParamInput,,Request("flg_pco"))
    		        strSQL.Parameters.Append srtSQL.CreateParameter("fch_cpa", adDBTimeStamp,,,aux_fch_cpa )
    		        strSQL.Parameters.Append srtSQL.CreateParameter("flg_cnpto_pag", adNumeric,adParamInput,, flg_cbr )
    		        strSQL.Parameters.Append srtSQL.CreateParameter("flg_tpo_cob", adNumeric,adParamInput,,flg_tranf )
    		       	strSQL.Parameters.Append srtSQL.CreateParameter("flg_tpo_sup", adNumeric,adParamInput,,0)
    		       	strSQL.Parameters.Append srtSQL.CreateParameter("flg_pym", adNumeric,adParamInput,,0)
    		       	strSQL.Parameters.Append srtSQL.CreateParameter("cod_tpo_pol", adChar,adParamInput,2, cstr(objDLL.Canonicalize(cstr(cod_tpo_pol))))
    			strSQL.Execute 

    imagen del error

    no entiendo que puede ser ya he probado varias cosas pero sigue saliendo el mismo error. el error que se muestra en la imagen es  la primera linea:

    strSQL.Parameters.Append srtSQL.CreateParameter("cod_sub_prdto", adChar, adParamInput, 4, Cstr(cod_sub_prdto))

     

    Saludos.

     

    jueves, 19 de mayo de 2016 15:15

Respuestas

  • Entonces lo que me parece que falla aquí es que la variable cod_sub_prdto debe tener un valor nulo.  En .Net uno debe cambiar nulls por DbNull.Value.  No recuerdo qué se hace en OleDB. :-(

    Jose R. MCP
    Code Samples

    • Marcado como respuesta MichelleRebeca jueves, 19 de mayo de 2016 19:54
    jueves, 19 de mayo de 2016 15:43

Todas las respuestas

  • Hace muchos años que no toco VB o ASP clásico.  ¿Está seguro que los nombres de parámetros no necesitan el @?  Yo sé que en .Net pueden omitirse, pero ¿será cierto también en OleDB?

    También sería útil que nos mostrara la definición del procedimiento almacenado.  No tiene que ser el código completo, solamente el encabezado.  Desde CREATE PROCEDURE hasta el AS.


    Jose R. MCP
    Code Samples

    jueves, 19 de mayo de 2016 15:30
  • siii, asi e como esta en la base de datos
    ALTER PROCEDURE [usr_ofb].[sp_ofb_insrt_cntto_empsa_2]
    @cod_sub_prdto char(4),
        @cod_cntto char(15),
        @cod_prdto char(2),
        @nro_prsna_empsa char (10),
        @nom_prsna_etcdo varchar (120) = null,
        @fch_crecn smalldatetime,
        @fch_atvcn smalldatetime = null,
        @fch_vncto smalldatetime = null,
        @fch_est smalldatetime,
        @cod_est smallint,
        @flg_atz_nmn smallint,
        @flg_pco smallint,
        @fch_cpa smalldatetime = null,
        @flg_cnpto_pag smallint = null,
        @flg_tpo_cob smallint = null,
        @flg_tpo_sup smallint = null,
        @flg_pym smallint = null,
    	
        @cod_tpo_pol char(2)
    AS
    la cosa es que si probé con el @ el donde están los nombres de los campos pero aun así no funciona... realmente he probado de todo pero se y siento que debe ser una tontera...
    jueves, 19 de mayo de 2016 15:40
  • Entonces lo que me parece que falla aquí es que la variable cod_sub_prdto debe tener un valor nulo.  En .Net uno debe cambiar nulls por DbNull.Value.  No recuerdo qué se hace en OleDB. :-(

    Jose R. MCP
    Code Samples

    • Marcado como respuesta MichelleRebeca jueves, 19 de mayo de 2016 19:54
    jueves, 19 de mayo de 2016 15:43