Autor Tema: Visual Basic Error de sintaxis (falta operador) en la expresión de consulta  (Leído 6779 veces)

katsumoto

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
os muestro mi codigo, me da el error este

No se controló System.Data.OleDb.OleDbException
  ErrorCode=-2147217900
  Message="Error de sintaxis (falta operador) en la expresión de consulta 'c_dni = 14255278Q'."
  Source="Microsoft JET Database Engine"
  StackTrace:...



Y la verdad que estoy empezando y me estoy volviendo loco loco. El código es el siguiente:


 
Código: [Seleccionar]
   Dim adaptador As New OleDb.OleDbDataAdapter
    Dim registro As New DataSet
    Public conex As New OleDb.OleDbConnection("provider = microsoft.jet.oledb.4.0;data source= " + My.Application.Info.DirectoryPath + "\socios.mdb")
    ' Por medio de este objeto voy a enviar todos los comandos de SQL a la tabla por medio de la conexión
    Public comm As New OleDb.OleDbCommand
    ' Declaro una variable para armar la instrucción SQL
    Dim sql As String
    ' declaro una variable para el calculo de la edad
    Dim fechaSeleccionada As Date, edad As String

    REM CARGAR BASES DE DATOS CODIGOS POSTALES Y GIMNASIOS
    Private Sub altas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Try
            ' Trato de abrir la conexión
            conex.Open()
            ' Inicializo el objeto Command
            comm.Connection = conex
            comm.CommandType = CommandType.Text
        Catch ex As Exception
            If Err.Number = 5 Then
                MsgBox("No se pudo encontrar el archivo de la base de datos", MsgBoxStyle.Exclamation, "Gestion Integral Aikido")
                End
            Else
                MsgBox(Err.Description, MsgBoxStyle.Exclamation, "Gestion Integral Aikido")
            End If
        End Try

        Me.CENTROSTableAdapter.Fill(Me.CENTROS_ENTRDataSet.CENTROS)
        Me.Codigos_postalesTableAdapter.Fill(Me.CPDataSet.codigos_postales)
        REM llamada funcion de limpiar cajas de texto
        limpia_cajas()

el problema me lo da en esta funcion
   Private Sub BUSCAR()

        Dim consulta As String
        Dim lista As Byte
        If t_dni.Text <> "" Then
            consulta = "SELECT * FROM miembros_club WHERE c_dni = " & t_dni.Text & ""
            adaptador = New OleDb.OleDbDataAdapter(consulta, conex)
            registro = New DataSet
            adaptador.Fill(registro, "miembros_club") --------- aqui concretamente
            lista = registro.Tables("miembros_club").Rows.Count
        End If

        If lista <> 0 Then
            'Cargar los datos encontrados donde corresponda
            t_dni.Text = registro.Tables("MIEMBROS_CLUB").Rows(0).Item("C_DNI")
            t_nombre.Text = registro.Tables("MIEMBROS_CLUB").Rows(0).Item("C_nombre")
            t_apellidos.Text = registro.Tables("MIEMBROS_CLUB").Rows(0).Item("C_apellido")

        End If
    End Sub

A ver si me podeis ayudar por favor

Gracias de antemano
« Última modificación: 10 de Marzo 2016, 08:49 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola! Es conveniente poner títulos adecuados a los temas, puedes consultar este hilo https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 donde se explica cómo hacerlo

También en ese hilo se explica cómo pegar el código para que se visualice correctamente

Todo esto es importante para que se pueda saber de qué trata el tema, copiar y pegar el código, etc.

El error parece que lo tienes en este fragmento:

Código: [Seleccionar]
        If t_dni.Text <> "" Then
            consulta = "SELECT * FROM miembros_club WHERE c_dni = " & t_dni.Text & ""
            adaptador = New OleDb.OleDbDataAdapter(consulta, conex)
            registro = New DataSet
            adaptador.Fill(registro, "miembros_club") --------- aqui concretamente
            lista = registro.Tables("miembros_club").Rows.Count
        End If

Por el mensaje de error parece que hubiera algún error en la sintaxis.

Prueba a poner un mensaje de depuración para comprobar si la consulta es correcta, por ejemplo:

Código: [Seleccionar]
        If t_dni.Text <> "" Then
            consulta = "SELECT * FROM miembros_club WHERE c_dni = " & t_dni.Text & ""
            adaptador = New OleDb.OleDbDataAdapter(consulta, conex)
    msgBox ("La consulta definida es la siguiente: " & consulta
        End If

En base a lo que observes quizás encuentres que la consulta a la base de datos no está bien definida y quizás eso te ayude a solucionar el error

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

 

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".