Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: katsumoto en 08 de Marzo 2016, 16:34

Título: No coinciden los tipos de datos en la expresion de criterios Visual Basic - SQL
Publicado por: katsumoto en 08 de Marzo 2016, 16:34
Hola mi problema es que voy rellenando los textbox uno a uno y si relleno todos bien graba perfectamente pero si dejo alguno en blanco no me lo graba y me dice lo siguiente: No coinciden los tipos de datos en la expresion de criterios.

Necesito poder dejar algun campo en blanco por que no siempre tengo todos los datos

El procedimiento es el siguiente:

Código: [Seleccionar]
Private Sub nueva_alta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nueva_alta.Click
        ' Verifico que haya escrito el dni (bueno, debería verificarlos todos, pero como esta es la clave principal...)
        Dim fecha_nac = DateTimePicker1.Text
        If t_dni.Text = "" Then
            ' Si no lo escribió, mando mensaje de error
            MsgBox("Debe incluir un número Valido de DNI/NIE/PASAPORTE")
            t_dni.Select()
        Else

            ' Armo la instrucción INSERT en la variable SQL

            sql = "INSERT INTO miembros_club (c_dni,c_nombre,c_apellidos,c_fecha_nac,c_edad) VALUES ('" & _
                t_dni.Text & "','" & t_nombre.Text & "','" & t_apellidos.Text & "','" & fecha_nac & "','" & t_edad.Text & "')"

            ' Asigno la instrucción SQL que se va a ejecuta
            comm.CommandText = sql

            Try
                comm.ExecuteNonQuery()
                MsgBox("Registro Añadido con Exito")
                t_dni.Select()
            Catch ex As Exception
                MsgBox(Err.Description, MsgBoxStyle.Exclamation, "Gestion Integral Aikido")
            End Try
        End If
    End Sub
Título: Re:No coinciden los tipos de datos en la expresion de criterios Visual Basic
Publicado por: César Krall en 10 de Marzo 2016, 09:05
Hola! Recuerda consultar este hilo https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 y seguir las indicaciones para pegar código

Pienso que el problema pueda venir de que cuando detecta un TextBox sin contenido en lugar de asignar una cadena vacía le asigne un contenido como NULL ó EMPTY o algo así, y por eso te salte el error. En concreto el error puede derivar de esta instrucción: Dim fecha_nac = DateTimePicker1.Text

Es posible que ahí si la fecha de nacimiento está vacía fecha_nac quede con un valor extraño y por eso te salte el error.

Prueba a mostrar los datos que se van a grabar para ver algo extraño por ejemplo con

msgBox ("Se va a grabar dni: " &t_dni.Text & " Nombre:" & t_nombre.Text & " Apellidos:" & t_apellidos.Text & "Fecha nacimiento" & fecha_nac & "Edad" & t_edad.Text)

Una vez veas dónde está el valor extraño puede corregirlo con un condicional que le diga que si tal campo tiene el valor extraño lo reemplace con una cadena vacía

Saludos!
Título: Re:No coinciden los tipos de datos en la expresion de criterios Visual Basic
Publicado por: luisincio en 03 de Julio 2017, 08:26
Revisa el comando SQL, ese error sale cuando cuando queremos hacer un INSERT, UPDATE o DELETE. Es mas frecuente en el caso del UPDATE y DELETE. A mi me funciona bien usando parametros.
Luego ese parametro: @Identificacion lo defines en el parametro del comando sql:
Ejemplo:

dim sql as string
sql = "DELETE FROM Tabla1 WHERE Id= @Identificacion"
dim cmd as New OledbCommand(sql)
cmd.connection = cnn
cmd.CommandType = CommandType.Text
cmd.Parameters.AddWithValue("@id", Identificacion)

Bueno así me funciono correctamente.