Visual Basic para Aplicaciones - Store Procedure q devuleve valor nulo

Life is soft - evento anual de software empresarial
 
Vista:

Store Procedure q devuleve valor nulo

Publicado por Luigi (17 intervenciones) el 27/12/2002 16:36:52
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
Continuo.....
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:Continuo : Respondan por favor a mi problema

Publicado por Luigi (17 intervenciones) el 27/12/2002 16:39:11
*******************\'***********************
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 m
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