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)
-   -   Sustituir caracter de un campo sql-paradox (https://www.clubdelphi.com/foros/showthread.php?t=89491)

tarco35 30-11-2015 22:21:32

Sustituir caracter de un campo sql-paradox
 
Hola, tengo una tabla de paradox 7, y quiero cambiar de los campos que contengan la letra Á por A.
Uso la sentencia:
Código SQL [-]
UPDATE base SET nombre = REPLACE(nombre, 'Á', 'A');

para la tabla BASE y el campo NOMBRE... pero me lanza el mensaje... "Capability NOT soported" con el programa DBExpl32

¿como podria hacerlo?

gracias por su tiempo.

ecfisa 01-12-2015 21:55:20

Hola tarco35.

Paradox 7 soporta las siguientes funciones de cadena: || , LOWER, UPPER, SUBSTTRING y TRIM (C:\Program Files\Common Files\Borland Shared\BDE\localsql.hlp), de modo que no veo manera de lograr lo que buscas mediante una sentencia SQL.

Tendrías que hacerlo desde Delphi, algo parecido a este código:
Código Delphi [-]
...
begin
  Query2.Close;
  Query2.SQL.Text := 'UPDATE BASE SET NOMBRE = :NOMBRE WHERE ID = :ID';
  Query2.Prepare;
  try
    Query1.Close;
    Query1.SQL.Text := 'SELECT * FROM BASE';
    Query1.Open;
    while not Query1.Eof do
    begin
      Query2.ParamByName('NOMBRE').AsString := StringReplace(Query1.FieldByName('NOMBRE').AsString,
         'Á', 'A', [rfReplaceAll]);
      Query2.ParamByName('ID').AsInteger := Query1.FieldByName('ID').AsInteger;
      Query2.ExecSQL;
      Query1.Next;
    end;
    Query1.Close;
  finally
    Query2.Unprepare;
    Query2.Close;
  end;
end;

Saludos :)

tarco35 01-12-2015 22:03:42

Gracias.... la idea era no tener que hacerlo por codigo... pero parece que no me que otra.

Repito, gracias por su ayuda.

AgustinOrtu 01-12-2015 22:27:14

Hola Daniel,

Es la primera vez que veo el metodo Unprepare, lo desconocia totalmente. Al parecer realiza la operacion contraria a Prepare, es decir, libera los recursos que se utilizarian si se realiza una llamada a Prepare

Es necesario el uso del mismo antes de cerrar los query?


Saludos

ecfisa 01-12-2015 23:06:53

Hola Agustín.

Según la documentación de Delphi, si bién no es estríctamente necesario, es una práctica aconsejable. Dado que el método Prepare consume algunos recursos de la bd y el método UnPrepare los libera.

(Pero siendo sincero, nunca realizé pruebas para verificarlo)

Saludos :)


La franja horaria es GMT +2. Ahora son las 17:05:59.

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