none
Pasar parámetro con valor nulo RRS feed

  • Pregunta

  • Hola a todos:

    Preciso comprobar si en el campo ValorReal el valor de alguna celda está en blanco, para ello compruebo si el valor es nulo, pero con la sentencia que tengo, no falla, pero tengo algún error en el parámetro @valorreal ya que el IsDbNull value no es correcto, ya que cada vez aunque el campo lo rellene con un 0, vuelve a ejecutar el upodate.

    La pregunta es como tengo que declarar el parámetro para que si el valor es nulo pase por todo el método, pero si ya tiene valor a 0, salga del mismo.

     Using cnn As DbConnection = da.CreateConnection()
    
                        ' Creamos el Commando
                        Dim cmd As DbCommand = cnn.CreateCommand()
                        Dim cmd1 As DbCommand = cnn.CreateCommand()
    
                        cnn.Open()
    
                        cmd1.CommandText = "SELECT COUNT(*) FROM BalSitExpl WHERE Orden = '009a' AND  Cod_Empresa = @empresa And ValorReal = @valorreal "
                        cmd1.Parameters.Add(Configuracion.CreateParameter(cmd1, "@empresa", VarGlobal.StrCodEmpresa))
                        cmd1.Parameters.Add(Configuracion.CreateParameter(cmd, "@valorreal", DBNull.Value))  'Esta declaración es incorrecta.
    
                        Dim numReg As Integer = CInt(MetodosDatos.ExecuteScalar(cmd1))
    
                        If (numReg = 0) Then
    
                            With cmd.Parameters
                                .Add(Configuracion.CreateParameter(cmd, "@empresa", VarGlobal.StrCodEmpresa))
                            End With
    
                            cmd.CommandText = "UPDATE BalSitExpl Set AumCirc =  0, DismCirc =  0, Origen = 0, " &
                                              "Aplic = 0, ValorContable = 0, Amortizacion = 0, Deterioro = 0, " &
                                              "ValorNeto = 0, Plusvalia = 0, " &
                                              "Minusvalia = 0, ValorReal = 0 " &
                                              "WHERE Orden IN ('009a','009b','079a','079b','082a','082b','083a','083b','087a','087b','139b','208a','208b'," &
                                              "'243b') and Cod_Empresa = @empresa" : MetodosDatos.ExecuteAction(cmd)
                        End If
                    End Using

    Muchas gracias a todos.

    Un saludo.

    Gemma


    sábado, 14 de julio de 2018 9:31

Respuestas

  • Hola gemma:

    En base de datos la columna por tu update parece int, por tanto declarala como tal.

    Luego la select.... And (valorreal=@valorreal or @valorreal is null) si lo que quieres es que traiga en funcion de que tenga valores o nulos.

    Un saludo

    • Marcado como respuesta gemma_campillo sábado, 14 de julio de 2018 12:36
    sábado, 14 de julio de 2018 11:27

Todas las respuestas

  • Hola gemma:

    En base de datos la columna por tu update parece int, por tanto declarala como tal.

    Luego la select.... And (valorreal=@valorreal or @valorreal is null) si lo que quieres es que traiga en funcion de que tenga valores o nulos.

    Un saludo

    • Marcado como respuesta gemma_campillo sábado, 14 de julio de 2018 12:36
    sábado, 14 de julio de 2018 11:27
  • Hola Javi:

    Voy a probar pero ya veo por donde van los tiros. La columna es decimal.

    Muchas gracias por tu ayuda.

    Un cordial saludo.

    Gemma

    sábado, 14 de julio de 2018 12:36