none
Obtener mensaje desde sql server a VB RRS feed

  • Pregunta

  • Estimad@s como podría obtener un mensaje de validacion en VB al momento de insertar datos(por ejemplo)
    Los datos de insert son:

    If

    Begin

    Insert Into

    (tabla1)(dato1,dato2, dato3)

    Value

    (@dato1,@dato2,@dato3)

    Set @mensajefinal=(SELECT MAX(dato2) FROM tabla1 Where dato1 = @datos1)Select @mensajefinal as mensajefinal

    End


    lunes, 15 de enero de 2018 20:15

Respuestas

  • hola

    hay varias formas de hacer lo que planteas

    • puedes definir

       SELECT MAX(dato2) as mensajefinal FROM tabla1 Where dato1 = @datos1

    si lo realizas de esta forma cuando ejecutes el procesure obtendras la respuesta como parte el datatable o datareader, por lo que debes ejecutar usando Fill() del SqlDataAdapter o el ExecuteReader()

    • si usas

       SELECT @mensajefinal = MAX(dato2) FROM tabla1 Where dato1 = @datos1

    en ese caso debes obtener el parametro de salida del procedure, aqui si usas ele ExecuteNonQuery() pero debes recuperar el valor out

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 15 de enero de 2018 21:31
  • create procedure [dbo].[nombre]
    (@output int output)
    as
    declare @CodigoTmp varchar(18), @CorrelatiovoTmp bigint, @ErrorMessage varchar(250), @ErrorSeverity int, @ErrorState int, @UltimoCodigo int
    BEGIN TRY
    	BEGIN TRAN nombre
    	
    		set @output = 0
    
    		insert into tabla
    		values(campos)
    		
    		set @output = 1
    		
    	COMMIT TRAN nombre
    	return 
    END TRY
    BEGIN CATCH
    	ROLLBACK TRAN nombre
    	select @ErrorMessage = ERROR_MESSAGE(),
    		   @ErrorSeverity = ERROR_SEVERITY(),
    		   @ErrorState = ERROR_STATE();
    	RaisError(@ErrorMessage, @ErrorSeverity,@ErrorState)
    END CATCH


    Att. Franklin Andino

    lunes, 15 de enero de 2018 20:28

Todas las respuestas

  • create procedure [dbo].[nombre]
    (@output int output)
    as
    declare @CodigoTmp varchar(18), @CorrelatiovoTmp bigint, @ErrorMessage varchar(250), @ErrorSeverity int, @ErrorState int, @UltimoCodigo int
    BEGIN TRY
    	BEGIN TRAN nombre
    	
    		set @output = 0
    
    		insert into tabla
    		values(campos)
    		
    		set @output = 1
    		
    	COMMIT TRAN nombre
    	return 
    END TRY
    BEGIN CATCH
    	ROLLBACK TRAN nombre
    	select @ErrorMessage = ERROR_MESSAGE(),
    		   @ErrorSeverity = ERROR_SEVERITY(),
    		   @ErrorState = ERROR_STATE();
    	RaisError(@ErrorMessage, @ErrorSeverity,@ErrorState)
    END CATCH


    Att. Franklin Andino

    lunes, 15 de enero de 2018 20:28
  • Gracias Franklin por su respuesta, lo que ocurre es que necesito tomar ese mensaje en VB...al momento de insertar por ejemplo "insert ok"

    y ese "insert ok" enviarlo a VB...y esto ultimo es lo que no se como se hace...ojala me puedas ayudar

    Gracias

    lunes, 15 de enero de 2018 20:33
  • yo lo hago de la siguiente forma, solo que en c#

    DataTable dt = new DataTable();
    string OutputParameter  = String.Empry
    da = new SqlDataAdapter(SP, conn);
                    da.SelectCommand.CommandType = CommandType.StoredProcedure;
    
    da.SelectCommand.Parameters.Add("@" + PARAMETER_NAME, (SqlDbType)Enum.Parse(typeof(SqlDbType), "tipodato", true), "250").Direction = ParameterDirection.Output;
    
    
    da.Fill(dt);
    
    
    
    OutputParameter = da.SelectCommand.Parameters["@" + PARAMETER_NAME].Value.ToString();


    Att. Franklin Andino

    lunes, 15 de enero de 2018 20:41
  • hola

    hay varias formas de hacer lo que planteas

    • puedes definir

       SELECT MAX(dato2) as mensajefinal FROM tabla1 Where dato1 = @datos1

    si lo realizas de esta forma cuando ejecutes el procesure obtendras la respuesta como parte el datatable o datareader, por lo que debes ejecutar usando Fill() del SqlDataAdapter o el ExecuteReader()

    • si usas

       SELECT @mensajefinal = MAX(dato2) FROM tabla1 Where dato1 = @datos1

    en ese caso debes obtener el parametro de salida del procedure, aqui si usas ele ExecuteNonQuery() pero debes recuperar el valor out

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 15 de enero de 2018 21:31