Visual Basic - Store Procedure q devuelve nulo

Life is soft - evento anual de software empresarial
 
Vista:

Store Procedure q devuelve nulo

Publicado por Luigi (79 intervenciones) el 27/12/2002 16:47:58
Tengo una tabla en SQL7 llamada TRecord con 2 campos: Codigo char(5) como Primary Key este campo es generado automaticamente a partir del valor numerico de otra tabla (se que este campo podria hacerlo identity y entero pero ese no es fin de mi tabla), (observa el store procedure q hice para generar este campo apartir de la tABLA TCORRELATIVOS)
El otro campo se llama RUC char(11) campo UNIQUE, es decir sin duplicados
*******************'***********************
El store procedure para insertar un Registro es el Sgte:
en donde si no hay error me devuelve 0 y si lo hay me devuelve 1 o 2
*******************'***********************
CREATE Procedure SP_New_Record @RUC char(11), @Codigo char(5) OUTPUT AS
Declare @Cont Integer
Begin Transaction
Update TCORRELATIVOS
Set @Cont = CORRE_AUX, CORRE_AUX = CORRE_AUX + 1
if @@Error <> 0
Begin
Rollback Transaction Return 1
End
Commit Transaction
Set @Codigo = Right('00000'+Convert(Char(5),@Cont+1),5)
Begin Transaction
Insert Into TRecord (Codigo,RUC) Values (@Codigo,@RUC)
If @@Error <> 0
Begin
Rollback Transaction Return 2
End
Commit Transaction
Return 0
..Contunuo xq
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

Continuo Store Procedure q devuelve nulo

Publicado por Luigi (79 intervenciones) el 27/12/2002 16:51:40
Este es el codigo de vb6 q llama al Sp:
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 = CadenaConexion
cmd.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 1,2
MsgBox "Error en la Base de Batos "
End Select
End Sub
*******************'***********************
El problema q tengo es q cuando ingreso un Ruc repetido el programa de Vb retorna en cmd.Parameters("Ret").Value (el valor de Retorno del sp), el valor nulo y en el Case entra al 0 como si el registro fuese grabado y no fue asi, debiendo este devolver el valor 2 por ser duplicado el RUC. porq pasa eso?...en q me equivoque?..me faltara algo en el sp? o escribi algo demas?...EL SP LO PROBE Por analizador de Consultas del SQLServer7 y devuelve los valores correctos para cada situacion
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