Foros del Web » Programando para Internet » ASP Clásico »

problema al insertar varias filas con store procedure

Estas en el tema de problema al insertar varias filas con store procedure en el foro de ASP Clásico en Foros del Web. hola tengo un lista de reportes q voy escoguiendo con un chekbox entonces al selecionarlos los guardo en una tabla historica, el asunto es q ...
  #1 (permalink)  
Antiguo 27/11/2007, 14:39
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
problema al insertar varias filas con store procedure

hola
tengo un lista de reportes q voy escoguiendo con un chekbox entonces al selecionarlos los guardo en una tabla historica, el asunto es q utilizo un store procedure para hacer el insert por q necesito q me retorne un valor
bueno el asunto es q si solo seleciono uno se quarda bien en la tabla y me retorna el valor pero si seleciono mas de uno solo se me guarda uno y no me retorna valor les muestro el codigo y el store procedure
<%
'*******Cambia Status de los Reportes a Procesados (5)
for i=0 to ubound(laReportes,2)

cmdSRG.CommandText = "{call SP_VTHistoryRep(?,?,?,?,?,?,?,?,?,?)}"
cmdSRG.parameters.append cmdSRG.createparameter("Num(i)",adInteger, adParamOutput,3)
cmdSRG.parameters.append cmdSRG.createparameter("PsNumReporte(i)",adVarChar ,adParamInput,13)
cmdSRG.parameters.append cmdSRG.createparameter("PsConsec(i)",adInteger,adP aramInput,4)
cmdSRG.parameters.append cmdSRG.createparameter("Psfecha(i)",adDBDate,adPar amInput,133)
cmdSRG.parameters.append cmdSRG.createparameter("PsTotalFavor(i)",adCurrenc y,adParamInput,10)
cmdSRG.parameters.append cmdSRG.createparameter("PsConcepto(i)",adVarChar,a dParamInput,250)
cmdSRG.parameters.append cmdSRG.createparameter("PsStatus(i)",adChar,adPara mInput,1)
cmdSRG.parameters.append cmdSRG.createparameter("PsTipoReporte(i)",adChar,a dParamInput,1)
cmdSRG.parameters.append cmdSRG.createparameter("PslsCompania(i)",adChar,ad ParamInput,7)
cmdSRG.parameters.append cmdSRG.createparameter("PsIdnumEmpleado(i)",adVarC har,adParamInput,10)

cmdSRG.parameters("PsNumReporte(i)") =laReportes(0,i)
cmdSRG.parameters("PsConsec(i)")=laReportes(1,i)
cmdSRG.parameters("Psfecha(i)")=FormateaFechaServe r(lsFechaCreacion)
cmdSRG.parameters("PsTotalFavor(i)")=Request.Form( "hdnTotalFavor")(i+1)
cmdSRG.parameters("PsConcepto(i)")=replace(Request .Form("hdnConcepto")(i+1) ,"'","´")
cmdSRG.parameters("PsStatus(i)")=5
cmdSRG.parameters("PsTipoReporte(i)")=Request.form ("hdnTipoReporte")(i+1)
cmdSRG.parameters("PslsCompania(i)")=laReportes(5, i)
cmdSRG.parameters("PsIdnumEmpleado(i)")=laReportes (3,i)
cmdSRG.Execute
'response.end

next

%>
el store pro
alter procedure SP_VTHistoryRep(@Num int=Null OUTPUT,@PsNumReporte Varchar(13)=Null, @PnNumRep Int=Null, @PfCreacionReporte DateTime =Null,
@PnTotalFavor Money=Null,@PSConcepto Varchar(250)=Null, @PsIdStatus Char(1)=Null,
@PsIdTipoReporte Char (1)=Null, @PsIdCompania Char (7)=Null, @PsIdnumEmpleado Varchar(10)=Null) as

--verifica

begin
declare @Encontrado int
Set @Encontrado= (Select count(*)from THISTORYREP where @PsNumReporte=sNumReporte)
if @Encontrado > 0
Select @Num =1
else
INSERT INTO THistoryRep
(sNumReporte,nNumRep,fCreacionReporte,nTotalFavor, sConcepto,sIdStatus,sIdTipoReporte,sIdCompania,sId NumEmpleado)
VALUES(@PsNumReporte,@PnNumRep,@PfCreacionReporte, @PnTotalFavor,@PSConcepto,@PsIdStatus,@PsIdTipoRep orte,@PsIdCompania,@PsIdnumEmpleado)
Select @Num=2

end

GO
  #2 (permalink)  
Antiguo 27/11/2007, 15:02
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: problema al insertar varias filas con store procedure

Te envia algun error?
Podria ser alguno de los datos que estes pasando tengan un valor que no acepte el stored procedure.

Tambien trata creando y destruyendo el command dentro del for
Código:
for i=0 to ubound(laReportes,2)
  Set cmdSRG = Server.CreateObject("ADODB.Command")
  cmdSRG.ActiveConnection = tuConexion
  .
  .
  .
  cmdSRG.Execute
  Set cmdSRG = Nothing
next
Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 27/11/2007, 15:50
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: problema al insertar varias filas con store procedure

bueno dentro del for yo tengo varias funciones que usasn el mismo objeto cmdSRG
me recomiendas que para cada una lo creo y lo borre
?
gracias
  #4 (permalink)  
Antiguo 27/11/2007, 15:55
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: problema al insertar varias filas con store procedure

Cita:
Iniciado por nancy8120 Ver Mensaje
bueno dentro del for yo tengo varias funciones que usasn el mismo objeto cmdSRG
me recomiendas que para cada una lo creo y lo borre
?
gracias
¿Qué funciones son esas, puedes poner el código?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 27/11/2007, 15:59
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: problema al insertar varias filas con store procedure

bueno no esactamente funciones
te doy un ejemplo

for i=0 to ubound(laReportes,2)
redim preserve laTotales(i)
redim preserve laConceptos(i)
cmdSRG.CommandType = adCmdText
cmdSRG.activeconnection=conSRG
lsSQl="update TReporte set sIdStatus=5 where sNumReporte='" & laReportes(0,i) & "' and nNumRep=" & laReportes(1,i)
cmdSRG.commandtext=lsSql
cmdSRG.execute()'****ojo

'*******Inserta movimiento en THistmovimientos
lsFechaCreacion=Request.Form("hdnFechaCreacion")(i + 1)
lsSql="exec SP_THistMovimientos 1,'" & laReportes(0,i) & "'," & laReportes(1,i) & ",null,'Procesado',"
lsSql=lsSql & "5,'" & FormateaFechaServer(lsFechaCreacion) & "','" & lsEmpleado & "','" & lsEmpleado & "'"

cmdSRG.CommandText=lsSql
cmdSRG.Execute '***ojo

y le sigue el codigo q mostre al principio

es correcto eso ? o debo crear un objeto command para cada uno y destruir
Me explique ?
gracias
  #6 (permalink)  
Antiguo 27/11/2007, 16:06
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: problema al insertar varias filas con store procedure

Pues en teoría son 3 diferentes llamadas a la base de datos, el update, una llamada a SP_THistMovimientos y finalmente otra llamada a SP_VTHistoryRep, con lo cuál la primera recomendación sería que sí...utilices una nueva instancia del objeto command por cada llamada.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 29/11/2007, 11:05
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: problema al insertar varias filas con store procedure

ok muy bien pero ahora no me retorna el valor
le muestro el nuevo codigo el store procedure sigue =

<%
j=0
for i=0 to ubound(laReportes,2)
redim preserve laTotales(i)
redim preserve laConceptos(i)
redim preserve PsHistory(9,j)
redim preserve PSHistoryNum(0,j)

PsNumReporte=laReportes(0,i)
PsnumRepC=laReportes(1,i)
lnTotalFavor=Request.Form("hdnTotalFavor")(i+1)
laTotales(i)=lnTotalFavor
lsConcepto=Request.Form("hdnConcepto")(i+1)
lsConcepto=replace(Request.Form("hdnConcepto")(i+1 ) ,"'","´")
laConceptos(i)=lsConcepto
lsTipoReporte=Request.form("hdnTipoReporte")(i+1)
lsCompania=Request.Form("hdnCompany")(i+1)
lsEmpleadoTH=laReportes(3,i)

Set cmdSRGP = Server.CreateObject("ADODB.Command")
set cmdSRGP.ActiveConnection=conSRG

cmdSRGP.CommandText = "{call SP_VTHistoryRep(?,?,?,?,?,?,?,?,?,?)}"
cmdSRGP.parameters.append cmdSRGP.createparameter("PSHistoryNum(0,j)",adInte ger, adParamOutput,1)
cmdSRGP.parameters.append cmdSRGP.createparameter("PsHistory(0,j)",adVarChar ,adParamInput,13)
cmdSRGP.parameters.append cmdSRGP.createparameter("PsHistory(1,j)",adInteger ,adParamInput,4)
cmdSRGP.parameters.append cmdSRGP.createparameter("PsHistory(2,j)",adDBDate, adParamInput,133)
cmdSRGP.parameters.append cmdSRGP.createparameter("PsHistory(3,j)",adCurrenc y,adParamInput,10)
cmdSRGP.parameters.append cmdSRGP.createparameter("PsHistory(4,j)",adVarChar ,adParamInput,250)
cmdSRGP.parameters.append cmdSRGP.createparameter("PsHistory(5,j)",adChar,ad ParamInput,1)
cmdSRGP.parameters.append cmdSRGP.createparameter("PsHistory(6,j)",adChar,ad ParamInput,1)
cmdSRGP.parameters.append cmdSRGP.createparameter("PsHistory(7,j)",adChar,ad ParamInput,7)
cmdSRGP.parameters.append cmdSRGP.createparameter("PsHistory(8,j)",adVarChar ,adParamInput,10)

cmdSRGP.parameters("PsHistory(0,j)") =PsNumReporte
cmdSRGP.parameters("PsHistory(1,j)")=PsnumRepC
cmdSRGP.parameters("PsHistory(2,j)")=FormateaFecha Server(lsFechaCreacion)
cmdSRGP.parameters("PsHistory(3,j)")=lnTotalFavor
cmdSRGP.parameters("PsHistory(4,j)")=lsConcepto
cmdSRGP.parameters("PsHistory(5,j)")=5
cmdSRGP.parameters("PsHistory(6,j)")=lsTipoReporte
cmdSRGP.parameters("PsHistory(7,j)")=lsCompania
cmdSRGP.parameters("PsHistory(8,j)")=lsEmpleadoTH

response.write cmdSRGP("PSHistoryNum(0,j)")
response.write "<br>"
response.write cmdSRGP("PsHistory(0,j)")
response.write "<br>"
response.write cmdSRGP("PsHistory(1,j)")
response.write "<br>"
response.write cmdSRGP("PsHistory(2,j)")
response.write "<br>"
response.write cmdSRGP("PsHistory(3,j)")
response.write "<br>"
response.write cmdSRGP("PsHistory(4,j)")
response.write "<br>"
response.write cmdSRGP("PsHistory(5,j)")
response.write "<br>"
response.write cmdSRGP("PsHistory(6,j)")
response.write "<br>"
response.write cmdSRGP("PsHistory(7,j)")
response.write "<br>"
response.write cmdSRGP("PsHistory(8,j)")
response.write "<br>"
response.write "Hi otro"

cmdSRGP.Execute
Set cmdSRGP = Nothing

j=j+1
next

%>
por algun motivo no me retorna el valor no veo error en el codigo ni en el procedimiento
gracias
  #8 (permalink)  
Antiguo 29/11/2007, 13:18
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: problema al insertar varias filas con store procedure

Bueno para empezar tu parametro se debe llamar "@Num"

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 29/11/2007, 14:01
 
Fecha de Ingreso: enero-2006
Mensajes: 233
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: problema al insertar varias filas con store procedure

ok, si me esta trayendo el parametro lo que pasa es q se debe imprimir des pues del cmdSRGP.Execute
esta funcionando bien inserta y tre el paramentro de salida
gracias
  #10 (permalink)  
Antiguo 29/11/2007, 14:07
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: problema al insertar varias filas con store procedure

Por nadas
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:55.