Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   SQL en componentes ADO (https://www.clubdelphi.com/foros/showthread.php?t=82779)

Parsec 12-04-2013 22:44:00

SQL en componentes ADO
 
Hola,

me ha salido este problema:
Esta instrucción en Tquery, funciona perfectamente:
Código Delphi [-]
 Buscar.Active := False;
     Texto1:='Select Paciente,Tratamiento,Fecha,Importe,Haber,Importefactura,Fracc, observaciones from visitas where UPPER(Paciente) LIKE'''+'%'+UpperCase(Edit1.Text) + '%'''';
     Buscar.SQL.Clear;
      Buscar.SQL.Add(texto1);
       Buscar.Active:=True;

Pero no funciona en TADOQuery, ¿sabéis que es lo que debo de cambiar?.

Saludos

ginkaku 13-04-2013 00:08:45

Perdona...Que error te sale? cuando lo activas no ejecuta tu sentencia? Que colocaste en sus propiedades del AdoQuery?

ecfisa 13-04-2013 01:13:51

Hola.

El primer error que te generará esa línea es: Unterminated string, no lo corrijo por que me duele la cabeza de solo pensar en tanta comilla...

Mas simple resulta usar la función QuotedStr:
Código Delphi [-]
  with ADOQuery1 do
  begin
    Close;
    SQL.Text := 'SELECT Paciente, Tratamiento, Fecha, Importe, Haber, Importefactura,' +
                'Fracc, observaciones FROM visitas WHERE UCASE(Paciente) LIKE ' +
                 QuotedStr('%' + UpperCase(Edit1.Text) + '%');
    Open;
  end;

Sin embargo es aconsejable que te acostumbres al uso de parámetros:
Código Delphi [-]
  with ADOQuery1 do
  begin
    Close;
    SLQ.Clear;
    SQL.Add('SELECT Paciente, Tratamiento, Fecha, Importe,');
    SQL.Add('Haber, Importefactura, Fracc, observaciones');
    SQL.Add('FROM visitas WHERE UCASE(Paciente) LIKE :PPACI');
    Parameters.ParamByName('PPACI').Value := '%' + UpperCase(Edit1.Text) + '%';
    Open;
  end;
Por último, cuando ejecutes la consulta, el segundo error lo provocará UPPER que deberás reemplazar por UCASE

Saludos.

Parsec 13-04-2013 10:20:52

Cita:

Empezado por ecfisa (Mensaje 458523)
Hola.

El primer error que te generará esa línea es: Unterminated string, no lo corrijo por que me duele la cabeza de solo pensar en tanta comilla...

Jajaja, y a mí!!!.

la primera me ha dado un errorv\||/, pero la segunda opción ha funcionado!!! ^\||/:
Código Delphi [-]
 with ADOQuery1 do
  begin
    Close;
    SLQ.Clear;
    SQL.Add('SELECT Paciente, Tratamiento, Fecha, Importe,');
    SQL.Add('Haber, Importefactura, Fracc, observaciones');
    SQL.Add('FROM visitas WHERE UCASE(Paciente) LIKE :PPACI');
    Parameters.ParamByName('PPACI').Value := '%' + UpperCase(Edit1.Text) + '%';
    Open;
  end;

, pero poniendo el texto del SQL directamente en la propiedad string del TADOQuery, si no tampoco, me sale un error de argumentos no válidos.:confused:

Solucionado, gracias Ecfisa.:)


La franja horaria es GMT +2. Ahora son las 18:03: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