SQL - SERA ALGUIEN CAPAZ DE RESOLVER ESTO? :DEMUESTRALO!

 
Vista:

SERA ALGUIEN CAPAZ DE RESOLVER ESTO? :DEMUESTRALO!

Publicado por LUIGI (16 intervenciones) el 30/12/2002 16:22:38
El Sgte Sp me falla al correrlo en Visual Basic 6,lo q hace el sp es guardar un Nuevo Registro con un Codigo Autogenerado a partir de la tabla TCORRELATIVOS (1ra Transaccion),y Luego Guarda este Registro en TRecord (2da Transaccion) con el Valor del Codigo recibido y un Parametro llamado RUC (q es indice unico) es decir ni el Codigo ni el Campo RUC deben repetirse, LO Q PASA ES Q CUANDO INGRESO UN REGISTRO CON RUC DUPLICADO EL SP EN EL vb6 ME DEVUELVE EMPTY, NO DEBERIA DEVOLVERVE (2627) EL NRO DE ERROR Q GENERO EL SQL SERVER POR LA VARIABLE @@ERROR EN EL RETURN DEL SP?......
De lo q me he dado cuenta es q si le quito la primera transaccion (UPDATE) y mando como parametro el Codigo ya generado anteriormente el SP funciona correctamente!! la PREGUNTA ES PORQ PASA ESO? FALTA ALGO EN EL SP PARA Q FALLE EL RETURN EN EL VB?
CREATE Procedure SP_New_Record @RUC char(11),@Codigo char(5) OUTPUT AS
Declare @Cont Integer Declare @SaveError Integer
Set @SaveError=0
Begin Transaction
Update TCORRELATIVO Set @Cont = CORRE, CORRE = CORRE + 1
SET @SaveError = @@Error
if @SaveError <> 0
Begin Rollback Transaction Return @SaveError End
Set @Codigo = Right('00000'+Convert(VarChar(5),@Cont+1),5)
Insert Into TRecord (Codigo,RUC) Values (@Codigo,@RUC)
SET @SaveError = @@Error
if @SaveError <> 0
Begin Rollback Transaction Return @SaveError End
Commit Transaction
Return 0
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:SERA ALGUIEN CAPAZ DE RESOLVER ESTO? :DEMUESTRA

Publicado por Isaías Islas (5072 intervenciones) el 30/12/2002 18:03:07
Hola Luigi

Su codigo lo veo bien, unicamente cambiar estas 2 lineas

SET @Cont = CORRE
UPDATE TCORRELATIVO CORRE = CORRE + 1

Cuidado !!!!, el la instrucion UPDATE no veo ninguna condición de WHERE.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

NO RESOLVI MI PROBLEMA!!!..AYUDENMEEEE!!

Publicado por LUIGI (16 intervenciones) el 31/12/2002 00:30:59
lo q hace el Sgte Update:
Update TCORRELATIVO Set @Cont = CORRE, CORRE = CORRE + 1
es tomar en la variable @Cont el VALOR actual de campo Corre y incrementar en en 1 este campo ... NO NECESITO NINGUN WHERE PARA ESTE CASO......No creo q deba cambiar el Codigo a la forma como me lo sugieres
por otra parte como expliq en mi Consulta previa SI QUITO ESTA LINEA
Update TCORRELATIVO Set @Cont = CORRE, CORRE = CORRE + 1 ....Y EL @Cont LO MANDO COMO PARAMETRO...MI CONSULTA FUNCIONA DESDE EL VB6...PERO PORQ FALLA AL PONER EL UPDATE..qUIZAS EL ERROR ESTE EN EL vb6..EL CODIGO Q TENGO ES EL SGTE:
Dim cmd As ADODB.Command
Dim prm As ADODB.Parameter
Dim CadenaConexion As String
CadenaConexion = "Provider=SQLOLEDB;User ID=sa;Initial Catalog=Warehouse;Data Source=(local)"
Set cmd = New ADODB.Command
cmd.ActiveConnection = CadenaConexioncmd.CommandType = adCmdStoredProc cmd.CommandText = "sp_New_Record"
Set prm = cmd.CreateParameter("Ret", adInteger, adParamReturnValue) cmd.Parameters.Append prm
Set prm = cmd.CreateParameter("RUC", adChar, adParamInput, 11)
cmd.Parameters.Append prm
Set prm = cmd.CreateParameter("Cod", adChar, adParamOutput, 5)
cmd.Parameters.Append prm
cmd.Parameters("RUC").Value = Text1.Text
On Error Resume Next cmd.Execute
Select Case cmd.Parameters("Ret").Value
Case 0
Label1.Caption = cmd.Parameters("Cod").Value
MsgBox "Registro Grabado"
Case 2627
MsgBox " Duplicidad en el Codigo o en el Ruc "
Case else
MsgBox
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:NO RESOLVI MI PROBLEMA!!!..AYUDENMEEEE!!

Publicado por LUIGI (16 intervenciones) el 31/12/2002 00:39:18
Me falto esto:
Select Case cmd.Parameters("Ret").Value
Case 0
Label1.Caption = cmd.Parameters("Cod").Value
MsgBox "Registro Grabado"
Case 2627
MsgBox " Duplicidad en el Codigo o en el Ruc "
Case else
MsgBox "Error en la Base de Batos "
End Select
End Sub
Me falta o sobra algo algo, ???...EN este codigo de VB6 si ingreso un RUC duplicado el Store Procedure me retorna EMPTY ...debiendo devolverme 2627....porque sucede esto?
Un DAto: Utilizo el VB6 SP4 y el SQL7 SP2.....necesitare algun parche!.porq en serio no veo mi error
la cadena de conexion esta bien?
CadenaConexion = "Provider=SQLOLEDB;User ID=sa;Initial Catalog=Warehouse;Data Source=(local)"
AYUDENME!!! GRACIAS...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:NO RESOLVI MI PROBLEMA!!!..AYUDENMEEEE!!

Publicado por Islas, Isaías (5072 intervenciones) el 31/12/2002 02:12:07
Pues Luigi, en mi corta vida de trabajar con SQL (Ya voy para 22 años) no he visto la combinacion de asignacion de Variable y la ejecución de un UPDATE.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar