Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   condición de query (https://www.clubdelphi.com/foros/showthread.php?t=44409)

Dantael 05-06-2007 22:11:16

condición de query
 
Hola estoy revisando unos querys y tengo una duda, lo ponen de la siguiente forma
Select * from tabla where condicion1 = ::condicion1;

Nunca había visto los dos puntos después del igual alguno de ustedes sabe que significa?

Saludos

Caral 05-06-2007 22:19:17

Hola
Esto significa que buscara un parametro, osea que el dato despues de los dos puntos es el que se validara.
Código Delphi [-]
adoquery1.sql.text:= 'Select * from tutabla where TuCampo = :TUcondicion';
adoquery1.parambyname:= Tucondicion;
vendria siendo parecido a:
Código Delphi [-]
adoquery1.sql.text:= 'Select * from tutabla where TuCampo = '+edit1.text;
De la primera sitaxis no estoy muy seguro, pero es la idea general.
Saludos

vtdeleon 06-06-2007 04:37:56

Sin quitar merito al mi amigo Caral ;) y dando otro ejemplo:)...

El significado de eso es que se has declarado un parametro en al sentencia sql que contendra un dato que sera dado por delphi por medio de un componente (Query). En lugar de tener valores fijos o tener concatenar string's, pues usamos eso.
Código Delphi [-]
Procedure Prueba1;
begin
  Query1.Sql.Text:='Select * from clientes Where Codigo=:sCodigo';
//Declarado sCodigo como parametro, una vez ahí puedes asignarle en 
//cualquier momento cualquier valor (valido para sql)
end;

//Asignarlo desde Prueba2
Procedure Prueba2
begin
  Query1.Close;
  Query1.ParamByName('sCodigo').AsString:='loqueseString';
//Pues usar AsInterger, AsFloat,...dependiendo del tipo de dato;
  Query1.Open;
end;
//Asignarlo desde Prueba3
Procedure Prueba3
begin
  Query1.Close;
  Query1.ParamByName('sCodigo').AsInteger:=7282;
  Query1.Open;
end;
//Puedes invocar tanto Prueba2 como Prueba3 sin modifical la sentencia inicial

Saludos

Caral 06-06-2007 05:44:37

Hola
Gracias vtdeleon.
Ya era hora de que apareciera un maestro y diera la respuesta correcta.
Nada de quitar merito maestro, merito tiene el que contesta bien.
Estupendo ejemplo.
Saludos


La franja horaria es GMT +2. Ahora son las 15:38:16.

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