Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Error Missing right quote (https://www.clubdelphi.com/foros/showthread.php?t=34262)

gusanita 03-08-2006 00:17:08

Error Missing right quote
 
Hola a todos!!!

Estoy trabajando con Delphi 5 y mi Base de Datos esta en Access, utilizo un controlador ODBC para hacer la conección.
Quiero hacer un gráfico utilizando un DBChart, pero cuando quiero activar mi query me marca el error:

Missing right quote

El siguiente es mi Query:

Código SQL [-]
Select ALU_ESP, ESP_CLV, ESP_CARRERA
From "':BDBECAS_BAJDEF:DATPERAL'" And "':BDBECAS_BAJDEF:CARRERA'"
Where ALU_ESP = ESP_CLV

Espero haberme explicado y Muchas Gracias por su atención!!!

vtdeleon 03-08-2006 00:46:15

Es problema de las comillas y de ese AND en el From.

Que base de datos usas? Me resulta extraño la forma en qeu pones las tablas en la parte de From
Cuantas tablas están involucradas? Cuales?

Saludos

gusanita 03-08-2006 01:13:04

Gracias por atender!!!

Ya habia mencionado que mi Base de Datos esta en Acces.
Son dos tablas las que estan involucradas: DATPERAL y CARRERA
BDBECAS_BAJDEF es mi Nombre de Base de Datos.
Y si no coloco las comillas me dice que la clausula del ODBC esta incompleta.
Tambien ya habia mencionado que utilizo el ODBC para hacer mi coneccion de Delphi con Access

gusanita 03-08-2006 03:15:43

Probe lo siguiente:
 
Cita:

Empezado por vtdeleon
Es problema de las comillas y de ese AND en el From.

1.
Código SQL [-]
Select D. ALU_ESP, C.ESP_CLV, C.ESP_CARRERA
From :BDBECAS_BAJDEF:DATPERAL as D , :BDBECAS_BAJDEF:CARRERAS  as C
Where D.ALU_ESP = C.ESP_CLV

Y me marca el error de que
:BDBECAS_BAJDEF:DATPERAL y :BDBECAS_BAJDEF:CARRERAS son de un tipo no existente.

2.
Código SQL [-]
Select D. ALU_ESP, C.ESP_CLV, C.ESP_CARRERA
From ':BDBECAS_BAJDEF:DATPERAL' as D , ':BDBECAS_BAJDEF:CARRERAS'  as C
Where D.ALU_ESP = C.ESP_CLV

Y me marca el error de sintaxis en la consulta, que la clausula del ODBC esta incompleta

3.
Código SQL [-]
Select D. ALU_ESP, C.ESP_CLV, C.ESP_CARRERA
From ":BDBECAS_BAJDEF:DATPERAL" as D , ":BDBECAS_BAJDEF:CARRERAS"  as C
Where D.ALU_ESP = C.ESP_CLV

Y me marca el error de que el motor de base de datos de microsoft no puede encontrar las tablas :BDBECAS_BAJDEF:DATPERAL y :BDBECAS_BAJDEF:CARRERAS.

Bueno no se que mas probar, espero puedan ayudarme y Gracias!!!

vtdeleon 03-08-2006 06:15:39

1 Archivos Adjunto(s)
Saludos

Bueno, aun no enteindo el "por qué" de poner el nombre de la Base de datos en la consulta y del "Por qué" de esos dos puntos. Nunca he usado eso así.

Hice un ejemplo sencillito , con una base de datos, dos tablas y una consulta parecida a la tuya y ésta funciona.

Fijate.

gusanita 03-08-2006 23:16:37

1 Archivos Adjunto(s)
Hola!!!

Bueno, cheque el archivo adjunto y en efecto funciona correctamente.

Me tome la livertad de modificar el archivo y lo adjunto para que lo cheques.

Y como podras darte cuenta la consulta funciona muy bien, pero no entiendo porque en el Query que utilizo para el DBChart no funciona.

Importante:

Para hacer la coneccion de Delphi con Access tendras que ir al menú Database, en la opción Explore.

En la ventana de SQL Explore en el menu Object, en la opción ODBC Administrator.

En la ventana de Administrador de Orígenes de Datos de ODBC en la pestaña DSN de usuario, en el boton agregar.

En la ventana Crear nuevo origen de Datos, seleccionar la opción Driver do Microsoft Access y boton Finalizar

En la ventana de Configuración de ODBC de Microsoft Access, en la opcion de nombre del origen de datos, colocas un nombre que tu quieras y en el campo Base de Datos en el botón Seleccionar, seleccionas la ruta donde se encuentra la Base de Datos en este caso bd1, la seleccionas y le das finalizar.

En la ventana de Administrador de Orígenes de Datos de ODBC le das en el botón Aceptar.

En la ventana de SQL Explore das Control + R para actualizar, y en la pestaña Databases aparecerá la que tu creaste.

Ahora si podras ejecutar el ejemplo.

Muchas gracias por tu atención!!!





gusanita 05-08-2006 00:16:31

Capability not supported
 
Y sigo de persistente!!!

Tengo la siguientes consultas

1.

Código SQL [-]
Select ALU_CTRL, ALU_ESP 
From ":BDBECAS_BAJDEF:DATPERAL"



2.

Código SQL [-]
Select ESP_CLV, ESP_CARRERA 
From ":BDBECAS_BAJDEF:CARRERAS"


Utilizo un Query para cada cunsulta y funcionan muy bien por separado, el resultado de cada sonulta lo muestro en un DBGrid c/u por separado.

Pero en un tercer Query intento lo siguiente:

3.

Código SQL [-]
Select D.ALU_ESP, C.ESP_CLV, C.ESP_CARRERA 
From ":BDBECAS_BAJDEF:DATPERAL" as D, ":BDBECAS_BAJDEF:CARRERAS" as C 
Where str (D.ALU_ESP) = str (C.ESP_CLV)


Pero me manda el error de Capability not supported

Espero ustedes me puedan decir en que estoy fallando!!!

Gracias por su atencion!!!

vtdeleon 05-08-2006 00:38:50

Saludos

No veo el por qué del error. Lo único es la forma en como invocas las tablas.

Te sugiero que te fijes en como realizo la conexion a la base de datos en el ejemplo que te ofrecí. Trata de hacerlo asi, a ver qeu obtienes.

gusanita 05-08-2006 00:47:31

Si, gracias por la sugerencia!!!

Ya lo habia hecho, y funciona muy bien asi, como me has mostrado en el ejemplo.

Es solo que seguí intentandolo de la otra forma para ver si lo conseguía!!

Pero pues creo que no se pudo!!!

Bueno de todos modos muchas pero muchas gracias!!!

gusanita 05-08-2006 01:45:59

Ahora si ya quedo!!!
 
Quería intentarlo de otra manera, pero como no se puedo, pues me fui por la ultima opción, que fue cambiar el tipo de dato del campo de mi tabla!!

El problema en todo el query que es el siguiente:

Código SQL [-]
Select D.ALU_ESP, C.ESP_CLV, C.ESP_CARRERA 
From ":BDBECAS_BAJDEF:DATPERAL" as D, ":BDBECAS_BAJDEF:CARRERAS" as C 
Where str (D.ALU_ESP) = str (C.ESP_CLV)

Era la condición:

Código SQL [-]
Where str (D.ALU_ESP) = str (C.ESP_CLV)


Esa instrucción es la que me ocasionaba el error de Capability not supported

Resulta que el campo D.ALU_ESP es de tipo Numérico Doble y el campo C.ESP_CLV es de tipo Texto en una base de datos en Access, como ya habia mencionado.
Bueno lo que hice fue modificar el tipo de dato de
C.ESP_CLV a Numérico y asi fue como funcionó!!!

El query quedó de la siguiente manera!!

Código SQL [-]
Select D.ALU_ESP, C.ESP_CLV, C.ESP_CARRERA 
From ":BDBECAS_BAJDEF:DATPERAL" as D, ":BDBECAS_BAJDEF:CARRERAS" as C 
Where D.ALU_ESP = C.ESP_CLV

Muchas gracias por la atención prestada!!!




La franja horaria es GMT +2. Ahora son las 21:30:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi