Substituir texto na tabela

Moderador: Avelino Sampaio

drigo_martins
Mensagens: 73
Registrado em: 08 Jun 2015, 16:54

Substituir texto na tabela

Mensagempor drigo_martins » 22 Set 2018, 01:03

Tenho uma tabela com um coluna contendo texto..
Gostaria de substituir uma parte de um texto de todas os registros por outro texto..Por ex:

Coluna
Eu tenho uma casa
Eu tenho uma cachorro
Eu tenho uma gata

Gostaria de substituir a palavra 'uma' de todos os registros pela palavra 'vários', ficando assim:
Coluna
Eu tenho vários casa
Eu tenho vários cachorro
Eu tenho vários gata

Obrigado.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Avelino Sampaio
Mensagens: 1886
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Substituir texto na tabela

Mensagempor Avelino Sampaio » 22 Set 2018, 08:53

Drigo,

estude sobre a função Replace(). Algo assim:

Código:
currentdb.execute "UPDATE NomeDaTabela SET [nomecampo] = replace([nomecampo],'uma','varios');"


Nota: Realize um backup da tabela antes do teste

Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

drigo_martins
Mensagens: 73
Registrado em: 08 Jun 2015, 16:54

Re: Substituir texto na tabela

Mensagempor drigo_martins » 24 Set 2018, 12:14

Obrigado... Deu certo... No entanto minha intenção era de ocultar alguns botões da ribbon.. Iria utilizar esta forma até que verifiquei a função getvisible que faz isso...

Tenho uma tabela local com campos (sim/não) para configurações, por ex:
recibo (sim/não)
relatorios (sim/não)
impressao (sim/Não)

Na ribbon tem um botão que abre o recibo, outro que abre os relatórios e outro a impressora, e para cada um deles atribuí uma id para o grupo do botão, ou seja, <group id = "grrecibo">, <group id = "grrelatorios">,<group id = "grimpressao">

Nesta função fncGetVisible, fiz esta modificação:

Código:
Dim seq As String, K
seq = "[recibo] & '|' & [relatorios] & '|' & [impressao]"
seq = DLookup(seq, "configuracoes")
K = Split(seq, "|")

Case "grrecibo"
visible = IIf(K(0) = True, True, False)
Case "grrelatorios"
visible = IIf(K(1) = True, True, False)
Case "grimpressao"
visible = IIf(K(2) = True, True, False)


Quando eu desejo que os botões apareçam, basta selecionar os campos (sim/não)...
Seria esta a maneira correta ou alguma outra maneira para um desempenho melhor?

Avatar do usuário
Damasceno Jr.
Mensagens: 410
Registrado em: 08 Jun 2015, 01:30
Localização: Medicilândia-Pará

Re: Substituir texto na tabela

Mensagempor Damasceno Jr. » 30 Set 2018, 17:40

Drigo, tudo bem? Respondendo sua pergunta: a forma como usou a função DLookup (indicando mais de um campo) é funcional, mas não é eficiente. Só é eficiente quando, numa passada só, é possível trabalhar/usar o resultado dela para resolver no código tudo que tem que ser resolvido, evitando assim viagens extras a tabela. No entando, nesse caso da função getVisible, as viagens continuam sendo feitas a cada verificação dos botões "grrecibo", "grrelatorios" e "grimpressao". Ou seja, caso queira deixar o código mais limpo e com menos variáveis criadas e tão funcional quanto o anterior, poderia usar assim:

Código:
Case "grrecibo"
visible = IIf(DLookup("recibo", "configuracoes") = True, True, False)
Case "grrelatorios"
visible = IIf(DLookup("relatorios", "configuracoes") = True, True, False)
Case "grimpressao"
visible = IIf(DLookup("impressao", "configuracoes") = True, True, False)
Quanto mais o tempo passa, mais descubro e mais me apaixono por MS Access.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


drigo_martins
Mensagens: 73
Registrado em: 08 Jun 2015, 16:54

Re: Substituir texto na tabela

Mensagempor drigo_martins » 01 Out 2018, 12:02

opa.. td certo!!
Damasceno.. não seria ao contrário? Pois se utilizo no início do código a função split (justamente para fazer apenas 1 viagem a tabela e pegar todos os dados na variável k), não seria mais rápido o desempenho?

Pelo seu código, seria:
Case "grrecibo"
visible = IIf(DLookup("recibo", "configuracoes") = True, True, False) '1 viagem a tabela configuracoes
Case "grrelatorios"
visible = IIf(DLookup("relatorios", "configuracoes") = True, True, False) '1 viagem a tabela configuracoes
Case "grimpressao"
visible = IIf(DLookup("impressao", "configuracoes") = True, True, False) '1 viagem a tabela configuracoes

Ocasionando 3 viagens a tabela configuracoes.

Pelo código que sugeri, há apenas 1 viagem a tabela configuracoes no início do código, com os dados armazenados na variável k
Case "grrecibo" ' grupo da ribbon
visible = IIf(K(0) = True, True, False)
Case "grrelatorios" ' grupo da ribbon
visible = IIf(K(1) = True, True, False)
Case "grimpressao" ' grupo da ribbon
visible = IIf(K(2) = True, True, False)

Bom, foi o que entendi de uma função usada pelo mestre Avelino, neste link na DICA 2:
http://www.usandoaccess.com.br/dicas/ge ... access.asp

Avatar do usuário
Damasceno Jr.
Mensagens: 410
Registrado em: 08 Jun 2015, 01:30
Localização: Medicilândia-Pará

Re: Substituir texto na tabela

Mensagempor Damasceno Jr. » 01 Out 2018, 17:51

Então, como eu disse:
Só é eficiente quando NUMA PASSADA SÓ é possível trabalhar/usar o resultado dela para resolver no código tudo que tem que ser resolvido, evitando assim viagens extras a tabela.

Acontece que nesse caso em particular da função getVisible, ela continua sendo chamada a cada botão que a usa, assim chamando o código que continua fazendo três viagens a tabela. Para ter a certeza das viagens, acrescente a linha em vermelho no seu código, reabra sua aplicação e veja o resultado:

Código:
...
seq = "[recibo] & '|' & [relatorios] & '|' & [impressao]"
msgbox "Viajando. Botão solicitante: " & control.id
seq = DLookup(seq, "configuracoes")
...

Deixo em anexo exemplos simples do que acontece e até mesmo uma alternativa.
obs: minha ideia não é confundir você, se o seu código atual está funcional, não há problema algum em continuar usando-o. O que eu quero é apenas fazer com que compreenda o funcionamento do xml da ribbon e do código da função fncGetVisible.

Sucesso.
Você deve estar registrado e autenticado para ter acesso ao arquivo anexo.
Quanto mais o tempo passa, mais descubro e mais me apaixono por MS Access.

drigo_martins
Mensagens: 73
Registrado em: 08 Jun 2015, 16:54

Re: Substituir texto na tabela

Mensagempor drigo_martins » 03 Out 2018, 12:57

muito válido seus exemplos...
Realmente, utilizando seu código anterior, ''Ou seja, caso queira deixar o código mais limpo e com menos variáveis criadas e tão funcional quanto o anterior, poderia usar assim:"

Código:
Case "grrecibo"
visible = IIf(DLookup("recibo", "configuracoes") = True, True, False)
Case "grrelatorios"
visible = IIf(DLookup("relatorios", "configuracoes") = True, True, False)
Case "grimpressao"
visible = IIf(DLookup("impressao", "configuracoes") = True, True, False)

O código irá fazer 3 viagens a tabela da mesma forma, mas de maneira mais limpa e com menos variáveis.
Obrigado..

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.



Voltar para “Tabelas”

Quem está online

Usuários neste fórum: Nenhum usuário registrado e 1 visitante