ViteSoft - Compartilhando tecnologia

Comunidade VSCyber free
Bem-vindo: Qua Jan 08, 2025 5:42 pm

Todos os horários são GMT - 3 horas




Criar novo tópico Responder  [ 7 mensagens ] 
Autor Mensagem
 Título: Alterar todos os logins de uma vez só.
MensagemEnviado: Qui Out 16, 2008 10:09 am 
Offline

Registrado em: Qua Dez 26, 2007 8:51 am
Mensagens: 19
Olá pessoal,

Na minha loja, quero passar a utilizar o login por código, atualmente, crio com a iniciais do cliente e depois se ele quiser ele altera, porém isso está gerando um certo transtorno, pois sempre a pessoa acaba esquecendo, ou quando não, coloca um nomes bizarros que não conseguimos entender e no final temos que pesquisar pelo nome e isso faz com que o atendente perca tempo no atendimento, desse e de outros clientes.
Então queria saber se existe alguma forma de eu alterar de uma única vez todos os logins do banco para códigos numericos, no caso do 1000 em diante usando como regra o data de cadastro.

Exemplo de como está hoje
Login | Nome | Data Cadastro
FB Fernando Beraldo 15/10/2008
PS Priscilla Silva 16/10/2008
DA Danilo Araújo 17/10/2008

Exemplo de como gostaria que ficasse
Login | Nome | Data Cadastro
1000 Fernando Beraldo 15/10/2008
1001 Priscilla Silva 16/10/2008
1002 Danilo Araújo 17/10/2008

Então eu travaria a opção do cliente mudar o login, e todos passariam a ter um código pré-definido.

Sendo assim qual a maneira de fazer isso de forma mais otimizada e rápida possível? Sei que dá pra fazer um UPDATE no banco, mas gostaria de um auxilio ou até mesmo um .bat para fazer isso.

Desde já agradeço a atenção!

Att.
Fernando Beraldo


Voltar ao topo
 Perfil  
 
 Título: Re: Alterar todos os logins de uma vez só.
MensagemEnviado: Qui Out 16, 2008 12:34 pm 
Offline
VSCyber Team
VSCyber Team

Registrado em: Qua Abr 12, 2006 9:42 am
Mensagens: 10274
Localização: Rio de Janeiro - RJ
É sempre recomendado efetuar um backup antes de realizar qualquer alteração no banco de dados.
Código:
UPDATE Login
   SET Login = IdLogin
 WHERE Login NOT IN ( SELECT CAST( IdLogin AS VARCHAR(32) ) FROM Login )
   AND CAST( IdLogin AS VARCHAR(32) ) NOT IN ( SELECT Login FROM Login )
   AND IdLogin NOT IN ( SELECT IdPessoa FROM PessExcl )
Caso tenha dificuldade em executar esse comando nos avise que colocaremos em um arquivo .bat.

Esse comando altera todos os clientes, independente da data de cadastro e utiliza o Id de cadastro para gerar os números, logo, não inicia a numeração do número 1000.
Alguns clientes continuarão com o login antigo, caso o número dele já esteja sendo utilizado por outro cliente.

_________________
André Felix
VSCyber - Compartilhando Tecnologia
----------------------------------------
Pesquisa: A maneira mais rápida de obter suas respostas
Dica: marque a opção [Pesquisar por todos os termos]

"É impossível para um homem aprender aquilo que ele acha que já sabe." - Anônimo


Voltar ao topo
 Perfil  
 
 Título: Re: Alterar todos os logins de uma vez só.
MensagemEnviado: Qui Out 16, 2008 3:16 pm 
Offline

Registrado em: Qua Dez 26, 2007 8:51 am
Mensagens: 19
Vejamos se entendi...

Esse IdLogin no caso, será o último número que algum usuário já possui correto? Exemplo caso tenha um usuario que mudou seu login para 2500, e esse seja o Id de maior valor, o sript atualizará todos os clientes a partir desse número?

Mais uma dúvida preciso fechar o sistema, desligar terminais e afins para fazer essa alteração ou posso executar com o servidor em produção?

Att.
Fernando Beraldo


Voltar ao topo
 Perfil  
 
 Título: Re: Alterar todos os logins de uma vez só.
MensagemEnviado: Qui Out 16, 2008 6:41 pm 
Offline
VSCyber Team
VSCyber Team

Registrado em: Qua Abr 12, 2006 9:42 am
Mensagens: 10274
Localização: Rio de Janeiro - RJ
Fernando Beraldo escreveu:
Esse IdLogin no caso, será o último número que algum usuário já possui correto? Exemplo caso tenha um usuario que mudou seu login para 2500, e esse seja o Id de maior valor, o sript atualizará todos os clientes a partir desse número?
Cada registro de cliente incluído tem um número único no banco de dados, esse número é o IdLogin. Mas essa informação fica oculta do usuário porque tem apenas utilidade técnica, serve somente para manter a integridade referencial do banco de dados.
Considerando que é uma informação sem repetições, podemos utilizar para criar logins numéricos. Na lista de cadastro de cliente é possível verificar o IdLogin na primeira coluna que fica oculta. Veja a dica deste tópico:
viewtopic.php?t=9893


Fernando Beraldo escreveu:
Mais uma dúvida preciso fechar o sistema, desligar terminais e afins para fazer essa alteração ou posso executar com o servidor em produção?
Nunca em com a loja e funcionamento. E sempre é recomendado fazer em um ambiente de testes antes de executar qualquer comando no banco de dados de produção.


Veja neste tópico como criar um ambiente de testes:
viewtopic.php?t=4300

_________________
André Felix
VSCyber - Compartilhando Tecnologia
----------------------------------------
Pesquisa: A maneira mais rápida de obter suas respostas
Dica: marque a opção [Pesquisar por todos os termos]

"É impossível para um homem aprender aquilo que ele acha que já sabe." - Anônimo


Voltar ao topo
 Perfil  
 
 Título: Re: Alterar todos os logins de uma vez só.
MensagemEnviado: Sex Out 17, 2008 8:18 am 
Offline

Registrado em: Qua Dez 26, 2007 8:51 am
Mensagens: 19
Olá, André,

É...percebi isso ontem, quando comecei a dar uma olhada na estrutura do banco. Percebi também uma coisa, e gostaria que você me tirasse uma dúvida, se esse Id é referencial e único, deve seguir uma sequência certo? Pois constatei que após o Id. 115 começam a ter algumas intercalações, exemplo do 115 vai para o 117. Do 125 para o 129. Ou seja estão faltando alguns Id's. No caso quando um cliente é excluído do sistema esse Id, é apagado ou é liberado para ser cadastrado novamente? Caso seja apagado explica-se os intervalos certo?!

Outra coisa, a conta Administrador, tem Idlogin = 1após, após esse Update, o login dela também passará para 1?

Bom, sei que algumas dúvidas são meio óbvias, e que poderiam ser esclarecidas no ambiente de testes, porém todas essas modificações eu farei via acesso remoto, pois não tenho condições de tratar disso diretamente na loja, já que trabalho em outra empresa durante a semana. E no final de semana o bixo pega na faculdade!!! [22]
Sendo assim, desculpe está abusando um pouco!!! [18] Más gostaria de poder tirar o máximo de dúvidas para não ter problemas durante esse processo. Além de agradecer toda a atenção dispensada! [8]

Mais uma vez obrigado.

Att.
Fernando Beraldo


Voltar ao topo
 Perfil  
 
 Título: Re: Alterar todos os logins de uma vez só.
MensagemEnviado: Sex Out 17, 2008 10:27 am 
Offline
VSCyber Team
VSCyber Team

Registrado em: Qua Abr 12, 2006 9:42 am
Mensagens: 10274
Localização: Rio de Janeiro - RJ
Fernando Beraldo escreveu:
gostaria que você me tirasse uma dúvida, se esse Id é referencial e único, deve seguir uma sequência certo?
Sim. O número é gerado pelo próprio SGBD Firebird, através do objeto GENERATOR.


Fernando Beraldo escreveu:
Pois constatei que após o Id. 115 começam a ter algumas intercalações, exemplo do 115 vai para o 117. Do 125 para o 129. Ou seja estão faltando alguns Id's. No caso quando um cliente é excluído do sistema esse Id, é apagado ou é liberado para ser cadastrado novamente? Caso seja apagado explica-se os intervalos certo?!
Em alguns casos raros o processo de exclusão apaga o Id. Normalmente o registro é mantido e o sistema faz uma exclusão lógica, são logins que começam com zzzzzzz. Isso é feito para manter a integridade do banco de dados, para que seja possível apresentar os movimentos de caixa, por exemplo. Em algumas situações bem raras é possível acontecer de um Id ser "queimado" sem ser utilizado. Mas um Id utilizado nunca mais será liberado para uso novamente.



Fernando Beraldo escreveu:
Outra coisa, a conta Administrador, tem Idlogin = 1após, após esse Update, o login dela também passará para 1?
Sim, sim. Depois basta alterar o login novamente, deste usuário e de outros em que isso seja necessário.



Fernando Beraldo escreveu:
Bom, sei que algumas dúvidas são meio óbvias, e que poderiam ser esclarecidas no ambiente de testes, porém todas essas modificações eu farei via acesso remoto, pois não tenho condições de tratar disso diretamente na loja, já que trabalho em outra empresa durante a semana. E no final de semana o bixo pega na faculdade!!! [22]
Entendemos e ainda assim reforçamos a necessidade de ser feito um backup antes de realizar esses procedimentos.



Fernando Beraldo escreveu:
Sendo assim, desculpe está abusando um pouco!!! [18] Más gostaria de poder tirar o máximo de dúvidas para não ter problemas durante esse processo. Além de agradecer toda a atenção dispensada! [8]
Sem problemas, é para isso que criamos o fórum. Além disto a sua dúvida pode ser a de outro usuário e com isso estamos ajudando outras pessoas também.

_________________
André Felix
VSCyber - Compartilhando Tecnologia
----------------------------------------
Pesquisa: A maneira mais rápida de obter suas respostas
Dica: marque a opção [Pesquisar por todos os termos]

"É impossível para um homem aprender aquilo que ele acha que já sabe." - Anônimo


Voltar ao topo
 Perfil  
 
 Título: Re: Alterar todos os logins de uma vez só.
MensagemEnviado: Sex Jan 02, 2009 3:48 pm 
Offline

Registrado em: Qua Dez 26, 2007 8:51 am
Mensagens: 19
Olá, André, tudo bem?

Como foram as festas de fim de ano? Tudo uma maravilha?

Bem, como eu estava numa tremenda correia na faculdade não tive tempo de fazer a alteração, e para não fazer as coisas com pressa e depois dar problemas, preferi não fazer. Mesmo porque tive alguns problemas com o meu servidor então tive que fazer um substituição as pressas.

Mas vamos ao que interessa, agendei para fazer a alteração hoje, no mais tardar no domingo. Queria só confirmar alguns passos.

1 - Antes de fazer o UPDATE, faço o backup do banco de dados pelo próprio VSCyber.
2 - Fecho o VSCyber e Salvo um cópia dos arquivos de .bck e .gdb que estão na pasta C:\Arquivos de programas\Firebird\Firebird_1_5\bin\
3 - Então abro o IBConsole, e a rodo o UPDATE.
4 - Abro novamente o VSCyber e checo que ocorreu tudo com sucesso.

É isso, ou tem algo mais que eu esteja esquecendo.

Abraços
Beraldo


Voltar ao topo
 Perfil  
 
Exibir mensagens anteriores:  Ordenar por  
Criar novo tópico Responder  [ 7 mensagens ] 

Todos os horários são GMT - 3 horas


Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 11 visitantes


Enviar mensagens: Proibido
Responder mensagens: Proibido
Editar mensagens: Proibido
Excluir mensagens: Proibido
Enviar anexos: Proibido

Procurar por:
cron
Powered by phpBB® Forum Software © phpBB Group
Traduzido por: Suporte phpBB