Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema con conexion (https://www.clubdelphi.com/foros/showthread.php?t=87294)

Luigui59 09-12-2014 20:27:15

Problema con conexion
 
1 Archivos Adjunto(s)
Que tal foro, una disculpa, creo que es algo muy simple, pero soy nuevo en programación con Delphi, y tengo un problema, estoy tratando de hacer una conexión para una consulta, pero me marca errores, si alguien pudiera ayudarme, se los agradeceria muchisimo:
Código Delphi [-]
  tobra := strtoint(subobra.Text);
  IF tobra > 0 THEN
    truta := ExtractFilePath(Application.ExeName) + 'DATOS\';
    Query1.Close;
    Query1.SQL.Text := 'SELECT * FROM "Z:\SISTEMAS\DELPHI\CONSERVACION\DATOS\obras.dbf" WHERE NO=:Obra';
    Query1.Params[0].DataType := ftinteger;
    Query1.ParamByName('Obra').Asinteger := tobra;
    Query1.Open;
    if Query1.IsEmpty then
      begin
       showmessage('OBRA NO ENCONTRADA')
      end
    else
      begin
       showmessage('OBRA ENCONTRADA')
      end

Casimiro Notevi 09-12-2014 20:37:37

Cita:

Empezado por Luigui59 (Mensaje 486366)
Que tal foro, una disculpa, creo que es algo muy simple, pero soy nuevo en programación con Delphi, y tengo un problema, estoy tratando de hacer una conexión para una consulta, pero me marca errores, si alguien pudiera ayudarme, se los agradeceria muchisimo:

Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración :)


Recuerda poner los tags al código fuente, ejemplo:



Gracias :)


No dices cuál es el problema, ni cuál es el error, y ¿qué quiéres decir con "una conexión para una consulta"?
Perdón, no había visto la imagen con el mensaje de error.

Casimiro Notevi 09-12-2014 20:40:39

Es que así no se usa.
Primero tienes que hacer la conexión con la base de datos y luego ya puedes usarla.

Para hacer el select será mejor que eches un vistazo a cualquier tutorial SQL que encontrarás por la red.
Esto no es correcto:
'SELECT * FROM "Z:\SISTEMAS\DELPHI\CONSERVACION\DATOS\obras.dbf" WHERE NO=:Obra';
select campos from tabla where lo que sea

Luigui59 09-12-2014 20:47:02

Cita:

Empezado por Casimiro Notevi (Mensaje 486369)
Es que así no se usa.
Primero tienes que hacer la conexión con la base de datos y luego ya puedes usarla.

Para hacer el select será mejor que eches un vistazo a cualquier tutorial SQL que encontrarás por la red.
Esto no es correcto:
'SELECT * FROM "Z:\SISTEMAS\DELPHI\CONSERVACION\DATOS\obras.dbf" WHERE NO=:Obra';
select campos from tabla where lo que sea

Que tal, anexe una imagen con el error, es a la hora de hacer el query, que me marca el error, de "Invalid use of keyword. Token NO=?

Caminante 09-12-2014 21:15:31

Hola

Una pregunta ¿Que componentes estas usando para conectarte?

Luigui59 09-12-2014 21:24:22

Cita:

Empezado por Caminante (Mensaje 486374)
Hola

Una pregunta ¿Que componentes estas usando para conectarte?

Hola¡¡ Estoy utilizando Query y el DataSource

ecfisa 09-12-2014 21:25:33

Hola Luigui59.

Intenta de este modo:
Código SQL [-]
SELECT * FROM "Z:\SISTEMAS\DELPHI\CONSERVACION\DATOS\OBRAS.DBF" AS OBR WHERE OBR.NO = :Obra

Saludos :)

Edito: Y también verifica que "NO" no sea una palabra reservada del BDE (no lo recuerdo)

Luigui59 09-12-2014 21:25:41

Cita:

Empezado por Luigui59 (Mensaje 486376)
Hola¡¡ Estoy utilizando Query y el DataSource

Y ya con un boton, realizo el query, ya que se ingresa el dato a buscar

Luigui59 09-12-2014 21:27:23

Cita:

Empezado por ecfisa (Mensaje 486377)
Hola Luigui59.

Intenta de este modo:
Código SQL [-]
SELECT * FROM "Z:\SISTEMAS\DELPHI\CONSERVACION\DATOS\OBRAS.DBF" AS OBR WHERE OBR.NO = :Obra

Saludos :)

Ok, gracias, déjame checarlo y te aviso

Luigui59 09-12-2014 21:30:45

Cita:

Empezado por Luigui59 (Mensaje 486379)
Ok, gracias, déjame checarlo y te aviso

Que tal, fijate ya lo probe y no me sigue marcando el error de "KEYWORD"

ecfisa 09-12-2014 21:44:28

Hola de nuevo.

No soy muy conocedor de la sintáxis SQL del BDE, pero buscando encontré aquí una lista de palabras reservadas entre las que sí se encuentra NO.

Entonces creo que tendrías que encerrar NO entre comillas:
Código SQL [-]
SELECT * FROM "Z:\SISTEMAS\DELPHI\CONSERVACION\DATOS\OBRAS.DBF" AS OBR WHERE OBR."NO" = :Obra

Saludos :)

Luigui59 09-12-2014 21:45:49

Dejame checarlo, a ver si ahora si quiere, gracias¡¡¡

Luigui59 12-12-2014 17:01:36

Gracias a todos los que me ayudaron con sus consejos y demás, lo resolví cambiando la estructura de la tabla, ya que trate de las diferentes maneras que me recomendaron y siguió el error, pero ya quedo.

Luigui59 12-12-2014 17:40:22

Hacer un Query definiendo la ruta en el FROM
 
Que tal Foro, una vez mas aquí solicitando su apoyo para hacer lo siguiente, saco la ruta donde esta el ejecutable y lo anido a una variable "ruta"="ExtractFilePath(Application.ExeName)" y un subdirectorio donde estarán la bases, digamos "/datos"; en un Query se hace el SELECT * FROM ruta + datos + tabla a usar WHERE condicion, la pregunta es: Como hacer el Query con la Ruta + Subdirectorio + Tabla y que funcione. Gracias de antemano¡¡¡

Caral 12-12-2014 19:27:20

Hola
Es una concatenacion y depende de la BD que se use para hacer que funcione.
Saludos

Casimiro Notevi 13-12-2014 11:34:35

De todas formas dudo mucho que alguna BD permita hacer lo que quieres. Primero deberás conectar a la BD. Luego harás las SQLs.
Select campos from tabla where loquesea
Pero no puedes hacer select campos from "c:\basedatos\mibd" tabla where lo que sea.-
Primero conectas. Al principio del programa.
Luego haces lo que quieras, pero respetando el SQL.
Búscate un tutorial del lenguaje, hay muchísimos por internet.

Casimiro Notevi 13-12-2014 11:37:19

Y si no lo has entendido, no abras otro hilo nuevo para preguntar lo mismo ;)
He combinado ambos hilos.


La franja horaria es GMT +2. Ahora son las 22:25:31.

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