Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problemas tratando de conformar la sintaxis de una consulta SQL (https://www.clubdelphi.com/foros/showthread.php?t=34582)

andre navarrete 14-08-2006 21:08:53

Problemas tratando de conformar la sintaxis de una consulta SQL
 
Amigos me pueden decir como saber la sintaxis correcta para los edit.

En codigo delphi:

Código Delphi [-]
 QUERY1.SQL.Text:='select * from TABLA where FECHA between 'edit1.text' and 'edit2.text';

Gracias. :D

roman 14-08-2006 21:14:34

Tú lo que tienes que saber son dos cosas:

1. Edit.Text es un string
2. En Delphi, dos strings se concatenan con el operador +:

Código Delphi [-]
S := 'Hola ';
T := ' ClubDelphi';

ShowMessage(S + T); // mostrará 'Hola ClubDelphi'

Medítalo un poco y sabrás como resolver tu problema y cualquier otro de este tipo que se te presente.

// Saludos

andre navarrete 14-08-2006 21:40:02

gracias pero
 
amigo, gracias pero en los edit tengo fechas ingresas con el siguiente formato '10/08/2006' que seria lo mismo que un edit1.text, por ejemplo.
no quiero sumar nada, solo quiero hacer la consulta entre parametros de fecha que me los da el usuario, osea que me muestre solo las fechas cuyo rango esta en los edit.

te agradeseria mucho la uyuda.

gracias.:D

ContraVeneno 15-08-2006 02:18:16

Roman no se refiere a lo que esta ingresado en los edits; se refiere a la forma de como concatenar dos cadenas, en este caso, a como concatenar tu cadena SQL con las cadenas de los edit.Text

Lo cuál se hace con el operador +

así que respetando el punto de vista de Roman:
Medítalo un poco y sabrás como resolver tu problema y cualquier otro de este tipo que se te presente.

andre navarrete 15-08-2006 03:54:36

amigos, lo tengo claro, el problema es que se ocupa si son este tipo de comilla (') o comillas dobles ("), para definir las +.
gracias.

Lepe 15-08-2006 11:15:09

En Delphi siempre se usa la comilla simple (apóstrofe dicen que se llama ;)). Te sugiero que uses la función QuotedStr que pasada un String, le añade dos comillas simples.

Código Delphi [-]
 str := 'Comillas';
 str := Quotedstr(str); //----> str  = ''Comillas''  (ojo son comillas simples... pero 2 juntas)

Saludos

roman 15-08-2006 16:35:40

Hay momentos en que hay que detenerse a pensar un poquito. Dices que

Cita:

Empezado por andre navarrete
no quiero sumar nada, solo quiero hacer la consulta entre parametros de fecha que me los da el usuario

pero tú aquí tienes varios problemas. La consulta SQL que mandas al servidor es una cadena de texto que manejas en Delphi con el tipo de datos string. Tal como tú la quieres, dicha cadena está formada por varias partes:

  • 'select * from TABLA where FECHA between '
  • edit1.text <--- el contenido del control
  • ' and '
  • edit2.text <--- el contenido del control


Para ensamblar o concatenar estas partes, debes sumarlas, por más que pienses que esto no es una cuestión de sumar. Simplemente escribiendo una tras otra, como en

Cita:

Empezado por andre navarrete
Código Delphi [-]
'select * from TABLA where FECHA between 'edit1.text' and 'edit2.text';

no sirve. Cosa que ya sabes y por eso preguntas. Pero no descartes así de fácil las respuestas que se te dan.

Con esto y con lo que ya te indican los compañeros respecto al QuotedStr, tienes más que suficiente para resolver el problema.

// Saludos

andre navarrete 16-08-2006 03:29:30

gracias, y mil disculpas por tantas preguntas, estoy pasando por un mal momento y puedeser por eso que estoy un poco volado.
de todas formas garcias, lo analizare.
saludos.

Caral 16-08-2006 21:42:53

para mi deberia ser asi
'select * from TABLA where FECHA between '+edit1.text+' and '+edit2.text+';
perdonen mi ignorancia si me equioco es por tratar de ayudar
saludos

ContraVeneno 16-08-2006 22:12:42

de hecho si tienes un error al final de la linea :D para emprezar... además, te haría falta usar la función antes mencionada para colocar comillas en los valores

juanfergl 07-09-2006 01:01:15

Chequea esto
 
select * from TABLA where FECHA between '''+edit1.text+''' and '''+edit2.text+''';

Cualquier cosa grita

Pero te aconsejo algo asi

query.sql.clear;
query.sql.add('Select tusCampos from tuTabla where CampoFecha between :fecha1 and :fecha2');
query.parambyname('fecha1').asdatetime:=strtodate(edit1.text);
query.parambyname('fecha2').asdatetime:=strtodate(edit2.text);
query.open;

y voala

ContraVeneno 07-09-2006 01:07:23

No es por incomodar, pero a esto:
Código Delphi [-]
'select * from TABLA where FECHA between '''+edit1.text+''' and '''+edit2.text+''';

le hace falta una comilla al final:

Código Delphi [-]
'select * from TABLA where FECHA between '''+edit1.text+''' and '''+edit2.text+'''';


La franja horaria es GMT +2. Ahora son las 22:42:51.

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