Visual Basic.NET - INSERT IMAGEN VALOR NULL

 
Vista:
Imágen de perfil de melqui
Val: 643
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

INSERT IMAGEN VALOR NULL

Publicado por melqui (242 intervenciones) el 19/08/2020 00:08:58
hola amigos,
necesito una ayuda estoy con dificultad de tratar la validacion de un campo.
estoy intentando registrar un campo un picturebox vacio, y no estoy conseguiendo
solamente el insert me acepta cuando el picturebox esta con imagen

cuando disparo el insert con el picturebox vazio me retorna esta mensaje.
Screenshot_2
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

INSERT IMAGEN VALOR NULL

Publicado por Phil Rob (1546 intervenciones) el 19/08/2020 07:32:20
Hola Melqui,

Intenta de cambiar la frase IIF( ...) como esta :

1
IIF(.ImgLogo IsNot Nothing, .ImgLogo, DBNull.Value)

Que tenga un buen día.

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
Imágen de perfil de melqui
Val: 643
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

INSERT IMAGEN VALOR NULL

Publicado por melqui (242 intervenciones) el 19/08/2020 09:37:09
hola phil,

un gusto en saludarte

mira te comento, el problema viene al momento de hacer el save en el picturebox
yo sospecho que el MemoryStream (ms) tengo que validar un valor vazio asi el imglogo recibe ese valor convertido.
solo que no se como validar, vea el error donde esta disparando
Screenshot_1

ya tente validaro de muchas formas al picturebox tambien não consegui
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

INSERT IMAGEN VALOR NULL

Publicado por Phil Rob (1546 intervenciones) el 19/08/2020 10:43:15
No comprendo ...

Si Imagen.Image es Not Nothing entonces lo pones Nothing y si Imagen.Image es Nothing, quieres lo registrar.
Como registrar un imagen que es Nothing ?

...
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
Imágen de perfil de melqui
Val: 643
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

INSERT IMAGEN VALOR NULL

Publicado por melqui (242 intervenciones) el 19/08/2020 18:46:14
phil

el erro está disparando porque no existe imagen en el picturebox, mas no se como tratarlos
en mira hice una nueva alteracion
estoy diciendo a picturebobox se esta nothing
el imglog tiene que esntrar en null sino entre con valor
mas cuando voy a registrar no me está obedeciendo
si tienes algun otro ejemplo que pueda ayudar te agradezco.

Screenshot_2
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

INSERT IMAGEN VALOR NULL

Publicado por Phil Rob (1546 intervenciones) el 19/08/2020 19:23:45
Si comprendo bien ...

Quieres registrar ImgLogo y si su valor es Nothing, tienes un error.

Si este es le caso, entonces tienes escribir los codigos para registrar en un If :

1
2
3
If Not ImgLogo Is Nothing Then
' ..........  codigos para tratar ImgLogo ... este codigo no ejecutado si ImgLogo = Nothing
End If

Si debes escribir un registro con algunos valores pero sin la valor Imagen, pienso que tienes escribir 2 frases INSERT como este :

1
2
3
4
5
If ImgLogo Is Nothing Then
'        INSERT ... sin el campo Imagen
ELSE
'        INSERT ... con el campo Imagen
End If


Quiza, puedo testar si envias el codigo para tratar ImgLogo.
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
Imágen de perfil de melqui
Val: 643
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

INSERT IMAGEN VALOR NULL

Publicado por melqui (242 intervenciones) el 19/08/2020 22:40:48
phil

ya hice esa forma mas no ayudo, interesante es que cuando coloque asi
1
2
3
4
5
If .ImgLogo Is Nothing Then
    Exit Function
Else
    cmd.Parameters.Add("@LOGEMP", SqlDbType.VarBinary).Value = .ImgLogo
End If

el registra mas con color y no como imagen. jejee



aqui te envio mi insert, no consigo te mandar el proyecto porque está en otra camada.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Public Function INSERT_REGISTRO(ByVal OBJ_EMPRESA As Parametros_EntidadesPessoais.ClsEntidadesPessoais) As Boolean
 
    Dim i As Integer
    Dim cmd As SqlCommand
    Using cn As SqlConnection = LOGICA_CONEXAO.BANCO_DADOS_SQL
 
        Try
            cn.Open()
            With OBJ_EMPRESA
 
 
                Dim StrCNPJ As String = "SELECT COUNT(*) FROM TAB_EMP WITH (NOLOCK) WHERE CNP = '" & .Num_cpf_cnpj & "'"
                cmd = New SqlCommand(StrCNPJ, cn)
                cmd.CommandTimeout = 1000 * 60 * 10
                i = CInt(cmd.ExecuteScalar())
 
                If i = 0 Then
 
                    Dim Script As String = " INSERT INTO TAB_EMP "
                    Script += " ( RAZSOC, CNP, LOGEMP, FON, EMA, CEP, LOGR, NUM, BAI, CID, EST, DATREG ) "
                    Script += " VALUES ( CASE WHEN @RAZSOC ='' OR @RAZSOC = ' '  THEN NULL  ELSE @RAZSOC END, @CNP, "
                    Script += "  @LOGEMP, "
                    Script += " CASE WHEN @FON ='' OR @FON = ' '  THEN NULL  ELSE @FON END, "
                    Script += "	CASE WHEN @EMA ='' OR @EMA = ' '  THEN NULL  ELSE @EMA END, "
                    Script += "	CASE WHEN @CEP ='' OR @CEP = ' '  THEN NULL  ELSE @CEP END, "
                    Script += "	CASE WHEN @LOGR ='' OR @LOGR = ' '  THEN NULL  ELSE @LOGR END, "
                    Script += "	CASE WHEN @NUM ='' OR @NUM = ' '  THEN NULL  ELSE @NUM END, "
                    Script += "	CASE WHEN @BAI ='' OR @BAI = ' '  THEN NULL  ELSE @BAI END, "
                    Script += "	CASE WHEN @CID ='' OR @CID = ' '  THEN NULL  ELSE @CID END, "
                    Script += "	CASE WHEN @EST ='' OR @EST = ' '  THEN NULL  ELSE @EST END, GETDATE()) "
                    cmd = New SqlCommand(Script, cn)
                    cmd.CommandTimeout = 1000 * 60 * 10
 
                    cmd.Parameters.AddWithValue("@RAZSOC", SqlDbType.VarChar).Value = .Nome_RazoSoc
                    cmd.Parameters.AddWithValue("@CNP", SqlDbType.VarChar).Value = .Num_cpf_cnpj
 
                    If .ImgLogo Is Nothing Then
                        Exit Function
                    Else
                        cmd.Parameters.Add("@LOGEMP", SqlDbType.VarBinary).Value = .ImgLogo
                    End If
 
                    'SqlDbType.VarBinary, System.DBNull.Value
 
 
                    cmd.Parameters.AddWithValue("@FON", SqlDbType.VarChar).Value = .Num_Telefone
                    cmd.Parameters.AddWithValue("@EMA", SqlDbType.VarChar).Value = .Email
                    cmd.Parameters.AddWithValue("@CEP", SqlDbType.VarChar).Value = .Num_Cep
                    cmd.Parameters.AddWithValue("@LOGR", SqlDbType.VarChar).Value = .Logradouro
                    cmd.Parameters.AddWithValue("@NUM", SqlDbType.VarChar).Value = .Num_Lograd
                    cmd.Parameters.AddWithValue("@BAI", SqlDbType.VarChar).Value = .Bairro
                    cmd.Parameters.AddWithValue("@CID", SqlDbType.VarChar).Value = .Cidade
                    cmd.Parameters.AddWithValue("@EST", SqlDbType.VarChar).Value = .Estado
                    cmd.ExecuteNonQuery()
                    Return False
                Else
                    MsgBox("O CNPJ ( " & .Num_cpf_cnpj & " ) INFORMADO JÁ EXISTE ! ", MsgBoxStyle.Information, " ARIMUYA - TECHNOLOGY SOLUTIONS ")
 
                    Return True
 
                End If
            End With
        Catch ex As Exception
            MsgBox(ex.Message)
            '    Throw New Exception("NÃO CONSIGO IDENTIFICAR ESTE PROBLEMA ", ex)
        Finally
            cn.Close()
 
        End Try
    End Using
    Return False
End Function


este es mi tabla ambiente de desarrollo.

Screenshot_1
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

INSERT IMAGEN VALOR NULL

Publicado por Phil Rob (1546 intervenciones) el 19/08/2020 23:06:16
El codigo siguiente parece me bien, pero regsitras ningun si ImgLogo es Nothing :

1
2
3
4
5
If .ImgLogo Is Nothing Then
     Exit Function   ' Dejar Function sin ejecutar ExecuteNonQuery
Else
    cmd.Parameters.Add("@LOGEMP", SqlDbType.VarBinary).Value = .ImgLogo
End If

Pienso que tienes que cambiar en mas el codigo siguiente :

1
2
3
4
5
Dim Script As String = " INSERT INTO TAB_EMP "
Script += " ( RAZSOC, CNP, LOGEMP, FON, EMA, CEP, LOGR, NUM, BAI, CID, EST, DATREG ) "
Script += " VALUES ( CASE WHEN @RAZSOC ='' OR @RAZSOC = ' '  THEN NULL  ELSE @RAZSOC END, @CNP, "
Script += "  @LOGEMP, "
' ... ... ...

No poner el campo LOGEMP cuando ImgLogo es Nothing. Pienso que tienes escribir 2 frases INSERT ...
La segunda frase seria :

1
2
3
4
5
Dim Script As String = " INSERT INTO TAB_EMP "
Script += " ( RAZSOC, CNP, FON, EMA, CEP, LOGR, NUM, BAI, CID, EST, DATREG ) "
Script += " VALUES ( CASE WHEN @RAZSOC ='' OR @RAZSOC = ' '  THEN NULL  ELSE @RAZSOC END, @CNP, "
Script += " CASE WHEN @FON ='' OR @FON = ' '  THEN NULL  ELSE @FON END, "
' ... ... ...

Espero tengo un poco tiempo mañana para testar. Tengo que cread un DB Sql con Imagen ...
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
Imágen de perfil de melqui
Val: 643
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

INSERT IMAGEN VALOR NULL

Publicado por melqui (242 intervenciones) el 19/08/2020 23:52:49
Phil,

muchas gracias, mas acabe de descubrir el misterio jejee
lo que hice es el valor nulo pasar en string y convertir en null, mas hice la validacion dentro de mis parametros vea
ahora si está registrando valores null con el picturebox vacio

Screenshot_2



Screenshot_3
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

INSERT IMAGEN VALOR NULL

Publicado por Phil Rob (1546 intervenciones) el 20/08/2020 07:48:48
Hola,

Pienso que la primera frase que muestras es inutile porque LOGEMP nunca es '' o ' '. Es Nothing o no. Pero no conozco bien la sintaxis de estas frases.
La segunda parte con el IF es muy bien.
Otra cosa debe haber cambiada porque la frase IIF(.ImgLogo Is Nothing, DBNull.Value, .ImgLogo) (en comentario) es correcta y hace misma que el IF. Este es porque escribes .ImgLog = Nothing al buen lugar.

Problema solucionado

Que tenga un buen día.
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