Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   StringReplace() (https://www.clubdelphi.com/foros/showthread.php?t=84234)

Alejandro73 24-09-2013 15:33:52

StringReplace()
 
Estimados

Muy buenos días, tengo un objeto TQuery con una consulta, a la cual le debo agregar una condicion dependiendo de lo que selecciona el usuario mediante un check.

dentro del codigo agrego lo siguiente
Código SQL [-]
Select  ..... ... #Condicion_1_a_Incluir# ... #Condicion_2_a_Incluir# ......

al momento de llamar al TQuery se realiza lo siguiente
Código Delphi [-]
Query.SQL.Text:=StringReplace(Query.SQL.Text,'#Condicion_1_a_Incluir#',Condicion1,[rfReplaceAll]);          
Query.SQL.Text:=StringReplace(Query.SQL.Text,'#Condicion_2_a_Incluir#',Condicion2,[rfReplaceAll]);
en donde condicion1 y condicion2 esta definido como una variable de tipo string con un texto sql, pero en tiempo de ejecucion la funcion StringReplace no cambia el valor de '#Condicion_1_a_Incluir# por lo contenido en Condicion1

Desde ya mucha gracias por su ayuda

ecfisa 25-09-2013 02:41:35

Hola Alejandro.

En mi caso funciona correctamente, ¿ Seguro que buscas la cadena indicada ?

Te pongo un ejemplo simple donde la cadena inicial es reemplazada sin problemas:
Código Delphi [-]
var
  Condicion1 : string;
begin
  // Valor inicial
  Query.SQL.Text := 'SELECT * FROM TABLA WHERE #Condicion_1_a_Incluir#';
  // Mostrar valor inicial
  ShowMessage('VALOR INICIAL: ' + Query.SQL.Text);

  // Darle un valor a Condicion1
  Condicion1 := 'NOMBRE = ''JUAN''';

  // Reemplazar
  Query.SQL.Text := StringReplace(Query.SQL.Text, '#Condicion_1_a_Incluir#', Condicion1, [rfReplaceAll]);
  // Mostrar nuevo valor
  ShowMessage('NUEVO VALOR: '+Query.SQL.Text);
...

Saludos :)

Alejandro73 25-09-2013 14:10:56

Estimado

Gracias por responder, pero la consulta se encuentra dentro de SQL (TStrings) del TQuery, y ahí es donde tengo el problema ya que no esta funcionando StringReplace como muestra tu ejemplo.

Saludos

Alejandro73 25-09-2013 14:32:37

Estimado

Muchas gracias por tu ayuda el error ya lo encontre y radica en el espacio en blanco después de la coma:

Mi consulta

Código Delphi [-]
Query.SQL.Text:=StringReplace(Query.SQL.Text,'#Condicion_1_a_Incluir#',Condicion1,[rfReplaceAll]);


Tu Consulta
Código Delphi [-]
Query.SQL.Text:=StringReplace(Query.SQL.Text, '#Condicion_1_a_Incluir#', Condicion1, [rfReplaceAll]);


Notese que en la función StringReplace luego de cada coma existe un espacio en blanco y de esa manera finalmente se logra reemplazar '#Condicion_1_a_Incluir#' por el valor de la variable Condicion1

Saludos

Casimiro Notevi 25-09-2013 15:10:07

¿Seguro que es eso?


La franja horaria es GMT +2. Ahora son las 17:40:01.

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