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)
-   -   consulta sobre indices autonumericos (https://www.clubdelphi.com/foros/showthread.php?t=73360)

oktubre 16-04-2011 14:39:10

consulta sobre indices autonumericos
 
Hola de nuevo, ya que estoy aprovecho para preguntar varias cosas, ayer me fue bien con la ayuda que me dieron así que aquí traigo otra.

haciendo unas cosultas dinámicas me encontré con que no puedo hacer la siguiente consulta a PARADOX

Código SQL [-]
 
SELECT * FROM tabla WHERE UPPER(campo) LIKE UPPER("%1%")
tampoco funcionan el clásico de Mysql " LIMIT 0,1"

Parece ser que de Simple Query Laguage de simple esta teniendo poco.

la unica forma de consultar con LIKE es a un campo que no sea índice principal. el Upper directamente no funciona.

hay modo de suplir esto?

ecfisa 17-04-2011 02:54:50

Hola oktubre.

No tengo experiencia en Paradox, pero si bién es sabido que no es una maravilla, suponía que tampoco podía ser tan desastroso. Así que leí un poco sobre la sintáxis SQL que soporta.Y obtuve estos resultados sobre la tabla parts.db que viene en los ejemplos de Delphi 7.
Cita:

el Upper directamente no funciona
La sentencia UPPER funcionó perfectamente:
Código Delphi [-]
procedure TForm1.btAlfaClick(Sender: TObject);
begin
  with Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM parts');
    SQL.Add('WHERE UPPER(Description) LIKE UPPER(:PATRON)');
    ParamByName('PATRON').AsString:= Edit1.Text+'%';
    Open;
  end;
end;

Cita:

la unica forma de consultar con LIKE es a un campo que no sea índice principal.
En cuanto al índice también lo pude consultar con la cláusula LIKE, y funcionó correctamente.
Lo que hay que tener en cuenta que si se trata de un campo numérico hay que hacer la conversión correspondiente, ya que LIKE se usa para comparar una expresión de cadena de caracteres con un modelo.
Código Delphi [-]
procedure TForm1.btNumClick(Sender: TObject);
begin
  with Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM parts');
    SQL.Add('WHERE CAST(PartNo AS VARCHAR(4)) LIKE :PATRON');  // (PartNo es la clave primaria )
    ParamByName('PATRON').AsString:= Edit1.Text+'%';
    Open;
  end;
end;

Un saludo.


La franja horaria es GMT +2. Ahora son las 14:50:19.

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