Fórum Como usar String Replace para uma coluna no Banco de Dados #541669
06/01/2016
0
Utilizo o Lazarus para programar em Object Pascal. Tenho um trecho de código que quero que faça uma substituição de caracteres e apareça no DBGrid. No entanto quando executo, os caracteres não são substituídos. Segue o código e a saída quando executo a procedure.
procedure TfrmPrincipal.btnEmailClick(Sender: TObject);
var
valor: String;
begin
dmdados.queBanco.SQL.Clear;
dmdados.queBanco.SQL.Add('select website from accounts;');
if(dmdados.conBanco.connected=false)then
dmdados.conBanco.connected:=true;
if(dmdados.trBanco.active=false)then
dmdados.trBanco.active:=true;
if(dmdados.queBanco.active=false)then
dmdados.queBanco.active:=true;
valor:= dmdados.queBanco.FieldByName('website').value;
valor:= StringReplace(valor, 'www.', '@', [rfReplaceAll, rfIgnoreCase]);
DBGrid.Refresh;
end;
[img]http://arquivo.devmedia.com.br/forum/imagem/465319-20160106-140710.png[/img]
Gostaria que todos os "www." fossem substituídos por "@". Alguém pode me ajudar?
Att,
Gabriel Fernandes
Gabriel
Curtir tópico
+ 0Post mais votado
06/01/2016
[url:descricao=http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_replace]http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_replace[/url]
http://www.firebirdsql.org/refdocs/langrefupd25-intfunc-replace.html
[url:descricao=https://msdn.microsoft.com/pt-br/library/ms186862(v=sql.120).aspx]https://msdn.microsoft.com/pt-br/library/ms186862(v=sql.120).aspx[/url]
Raylan Zibel
Gostei + 1
Mais Posts
06/01/2016
Raylan Zibel
Text := StringReplace(Text, 'www.', '@', [rfReplaceAll, rfIgnoreCase]);
Algo assim...
Gostei + 0
06/01/2016
Gabriel
No meu Dataset não existe esse evento. Veja:
[img]http://arquivo.devmedia.com.br/forum/imagem/465319-20160106-143552.png[/img]
Você se refere a o fieldDefs dentro do DataSet?
Gostei + 0
06/01/2016
Raylan Zibel
Você se refere a o fieldDefs dentro do DataSet?
Testei no Delphi, pode ter alguma diferença... Mas é um evento do campo da sua query. Um evendo do Field, não da Query.
Aparentemente tem esse evento sim. Dê uma procurada aí..
Lazarus
Gostei + 0
06/01/2016
Gabriel
[img]http://arquivo.devmedia.com.br/forum/imagem/465319-20160106-150807.png[/img]
Gostei + 0
06/01/2016
Gabriel
testei a solução REPLACE no gerenciador do BD e funcionou perfeitamente (uso o MySQL), porém a minha dúvida agora é quanto as aspas.
dmdados.queBanco.SQL.Add('select replace (website,'www.',@) from accounts;');Pois o Mysql utiliza aspas simples e o pascal também, então quando coloco uma aspa simples antes do www. ele fecha o texto
Gostei + 0
06/01/2016
Raylan Zibel
dmdados.queBanco.SQL.Add('select replace (website,''www.'',@) from accounts;');
ou
dmdados.queBanco.SQL.Add('select replace (website,'+ quotedstr('www.') +',@) from accounts;');
Gostei + 0
06/01/2016
Gabriel
Digitei a linha errada, o comando em MySQL é
select replace (website,'www.','@') from accounts;
as aspas vem antes e depois do www, isso que complica
Gostei + 0
06/01/2016
Raylan Zibel
dmdados.queBanco.SQL.Text := ' select replace (website, ' + QuotedStr('www.') + ', ' + QuotedStr('@') + ') as website from accounts ';
Gostei + 1
06/01/2016
Gabriel
Agora funcionou perfeitamente, agradeço sua atenção e paciência!
Att,
Gabriel Fernandes
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)