none
El nombre de columna no es válido. RRS feed

  • Pregunta

  • Hola buenas, tengo un problema en mi aplicación que esta echa en asp clásico, resulta  que al ordenar una columna de una lista me salta el siguiente error:

    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

    [Microsoft][ODBC SQL Server Driver][SQL Server]El nombre de columna 'autor_short' no es válido.

    /intranet/lista-produccion-wide.asp, línea 267

    La linea de codigo que marca es la siguiente:

    producciones = 0
    		SQL = "SELECT e.prioritario, e.referencia, e.isbn, CAST(e.titulo AS nvarchar(50))AS titulo_short, CAST(e.autor AS nvarchar(255))AS autor_short, e.fec_limite, e.fecha, e.titulo, es_ebook FROM ediciones e, produccion p, condiciones c WHERE e.referencia=p.referencia AND c.referencia = e.referencia AND e.fec_limite IS NOT NULL " & restricciones_presunto & " " & cad_orden & ";"
    		Set RS = dbdat.Execute(SQL)

    He probado la consulta con el sql manager y funciona correctamente.

    Alguna idea por favor

    Gracias de antemano por la ayuda

    Un saludo


    Christian

    martes, 5 de marzo de 2019 16:32

Respuestas

  • A lo mejor es una tontería lo que voy a decir, pero ¿Puede ser que al ODBC le moleste la falta de un espacio en blanco a la izquierda del "AS"?

    Si el problema no es ese, prueba a iniciar en el SQL Server una captura con el Profiler, y ejecuta tu aplicación. Cuando dé el error, vete al Profiler y examina la sentencia que se ha recibido, a ver si difiere en algo de la que escribiste en el programa. Prueba a copiarla desde el Profiler y ejecutarla en SSMS, a ver si funciona. Si funciona bien, valida que la has probado contra la misma base de datos, y no contra otra base de datos de prueba, que a lo mejor por accidente no tiene los mismos campos. Otra cosa, verifica que la linea en la que se produce el error de "nombre de columna no valido" es precisamente la del Execute, y no otra linea posterior en la que intentas acceder a esa columna a partir del ResultSet.

    • Propuesto como respuesta Pedro Alfaro martes, 5 de marzo de 2019 23:36
    • Marcado como respuesta Noahpro miércoles, 6 de marzo de 2019 0:59
    martes, 5 de marzo de 2019 16:57

Todas las respuestas

  • A lo mejor es una tontería lo que voy a decir, pero ¿Puede ser que al ODBC le moleste la falta de un espacio en blanco a la izquierda del "AS"?

    Si el problema no es ese, prueba a iniciar en el SQL Server una captura con el Profiler, y ejecuta tu aplicación. Cuando dé el error, vete al Profiler y examina la sentencia que se ha recibido, a ver si difiere en algo de la que escribiste en el programa. Prueba a copiarla desde el Profiler y ejecutarla en SSMS, a ver si funciona. Si funciona bien, valida que la has probado contra la misma base de datos, y no contra otra base de datos de prueba, que a lo mejor por accidente no tiene los mismos campos. Otra cosa, verifica que la linea en la que se produce el error de "nombre de columna no valido" es precisamente la del Execute, y no otra linea posterior en la que intentas acceder a esa columna a partir del ResultSet.

    • Propuesto como respuesta Pedro Alfaro martes, 5 de marzo de 2019 23:36
    • Marcado como respuesta Noahpro miércoles, 6 de marzo de 2019 0:59
    martes, 5 de marzo de 2019 16:57
  • Hola probé como me comentaste con Profiler, y la consulta difiere a la que tengo en la aplicación:

    select * from SELECT e.prioritario, e.referencia, e.isbn, CAST(e.titulo AS nvarchar(50)) AS titulo_short, CAST(e.autor AS nvarchar(255)) AS autor_short, e.fec_limite, e.fecha, e.titulo, es_ebook FROM ediciones e, produccion p, condiciones c WHERE e.referencia=p.referencia AND c.referencia = e.referencia AND e.fec_limite IS NOT NULL AND (p.enc_tripa=0 OR p.enc_tripa=1)AND es_ebook = 0 ORDER BY e.autor_short ASC;

    al probarla en SSMS sale el error de sintaxis

    no se a que se debe este problema, alguna idea?

    Un saludo

    Gracias por la ayuda


    Christian

    martes, 5 de marzo de 2019 21:18
  • Por principio de cuentas, haga uso de JOIN'S, después ponga el nombre de la columna en corchetes [autor_short]

    IIslas Master Consultant SQL Server

    miércoles, 6 de marzo de 2019 0:10
  • A lo mejor es una tontería lo que voy a decir, pero ¿Puede ser que al ODBC le moleste la falta de un espacio en blanco a la izquierda del "AS"?

    Si el problema no es ese, prueba a iniciar en el SQL Server una captura con el Profiler, y ejecuta tu aplicación. Cuando dé el error, vete al Profiler y examina la sentencia que se ha recibido, a ver si difiere en algo de la que escribiste en el programa. Prueba a copiarla desde el Profiler y ejecutarla en SSMS, a ver si funciona. Si funciona bien, valida que la has probado contra la misma base de datos, y no contra otra base de datos de prueba, que a lo mejor por accidente no tiene los mismos campos. Otra cosa, verifica que la linea en la que se produce el error de "nombre de columna no valido" es precisamente la del Execute, y no otra linea posterior en la que intentas acceder a esa columna a partir del ResultSet.

     investigando  de la menara que me propusiste encontre el error que estaba en el codigo ya que  autor_short se pasaba  e.autor_short, quitando la e. se solvento el problema.

    Muchas gracias por la ayuda prestada

    Un saludo


    Christian

    miércoles, 6 de marzo de 2019 1:01