Autor Tema: No coinciden los tipos de datos en la expresion de criterios Visual Basic - SQL  (Leído 6260 veces)

katsumoto

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
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
« Última modificación: 25 de Julio 2017, 22:13 por Ogramar »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
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!
Responsable de departamento de producción aprenderaprogramar.com

luisincio

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
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.


 

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".