Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

diego-md

[Resolvido] Atualizar cadastro de usuarios

Recommended Posts

Boa tarde,

 

estou com uma dúvida, trabalho com delphi 7 e sql express 2005.

 

Minha dúvida é o seguinte tenho que consultar na tabela usuario todos os dados do mesmo, para isso estou utilizando um dbgrid, adoquery, datasource, até ai tranquilo, a pesquisa pelo nome ou pelo email são efetuadas com sucesso, mas como eu farei para assim que a pessoa selecionar o usuário para atualizar seus campos, como faço para que cada variavel vá para um dbedit diferente?

 

Eu estou fazendo errado? Teria algum geito mais fácil?

 

Desde já agradeço a todos.

 

Atenciosamente,

Diego Maciel Dias

Compartilhar este post


Link para o post
Compartilhar em outros sites

DIEGO, Se a sua tela de consulta conter os dbedits ligados ao data source da tblusuario, automaticamente quando você achar o registro é só mandar editar com um comando 'Edit' a tblusuario.

 

Caso não funcione posta aí o erro, vamos o que da para fazer !!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Supondo que você não use TTables e que só use querys para selecionar e gravar/excluir dados, e que seu dbgrid esteja na mesma tela de manutenção de cadastro de usuários, o jeito mais simples de você carregar os seus dbedits seria você setar neles o mesmo TDataSource que é ligado ao TDbGrid e setar em cada TDbEdit qual o campo que ele irá carregar da query que você vai rodar sua pesquisa... assim, quando você abrir a sua query e clicar em um campo do TDbGrid seus TDbEdits automaticamente irão carregar os dados do registro selecionado. Ai basta você montar sua lógica para gravar os dados.

 

Até onde sei tem muita coisa sobre isso pelo fórum... uma pesquisa pode ajudar a encontrar alguns exemplos.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado a todos pelas respostas, também consultei meu professor e ele me mostrou a seguinte solução, no form de cadastro de usuário criar um botão para abrir a tela de pesquisa de usuários lá tem um dbgrid que quando é clicado 2x sobre o c a ser atualizado, fecha a tela de pesquisa enviando os dados para a tela de cadastro, dai no botão de "efetuar o cadastro" motei um if definindo o seguinte:

procedure TFormCadastro.btncadastrarClick(Sender: TObject);
var sql:string;
begin
if lblcodigo.Caption<>'' then
 begin
  sql:= 'update usuario set nome = ('+''''+editNome.Text+''''+'), email = ('+''''+editemail.Text+''''+') where codusuario = ('+''''+lblcodigo.caption+''''+')';
  adocommand1.CommandText:= sql;
  adocommand1.Execute;
 end
 else
 sql:= 'insert into usuario (nome,datanasc,sexo,email,msn,skype,orkut,telefone,celular,estado,cidade,bairro,login,senha,foto) values ('+''''+editNome.Text+''''+','+''''+editdatanasc.Text+''''+','+''''+cbsexo.Text+''''+','+''''+editemail.Text+''''+','+''''+editmsn.Text+''''+','+''''+editskype.Text+''''+','+''''+editorkut.Text+''''+','+''''+edittelefone.Text+''''+','+''''+editcelular.Text+''''+','+''''+editestado.Text+''''+','+''''+editcidade.Text+''''+','+''''+editbairro.Text+''''+','+''''+editLogin.Text+''''+','+''''+editSenha.Text+''''+','+''''+editfoto.Text+''''+') ';
 adocommand1.CommandText:= sql;
 adocommand1.Execute;
  if(Application.MessageBox('Cadastro efetuado com sucesso','Confirmação de cadastro',0)) = 1 then
   begin
   formcadastro.Close;
   end;
 end;

 

Funcionou perfeitamente, tenho programado também um if bem no final como podem ver, ele fecha o formulário assim que o usuário preciona a tecla OK, até ai tudo bem, mas quando eu vou efetuar um novo cadastro, os dados que digitei a pouco permanecem lá, o que posso fazer para ao fechar o form os campos sejam limpos automaticamente?

 

Desde já agradeço.

 

Atenciosamente,

 

Diego Maciel Dias

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado a todos pelas respostas, também consultei meu professor e ele me mostrou a seguinte solução, no form de cadastro de usuário criar um botão para abrir a tela de pesquisa de usuários lá tem um dbgrid que quando é clicado 2x sobre o c a ser atualizado, fecha a tela de pesquisa enviando os dados para a tela de cadastro, dai no botão de "efetuar o cadastro" motei um if definindo o seguinte:

procedure TFormCadastro.btncadastrarClick(Sender: TObject);
var sql:string;
begin
if lblcodigo.Caption<>'' then
 begin
  sql:= 'update usuario set nome = ('+''''+editNome.Text+''''+'), email = ('+''''+editemail.Text+''''+') where codusuario = ('+''''+lblcodigo.caption+''''+')';
  adocommand1.CommandText:= sql;
  adocommand1.Execute;
 end
 else
 sql:= 'insert into usuario (nome,datanasc,sexo,email,msn,skype,orkut,telefone,celular,estado,cidade,bairro,login,senha,foto) values ('+''''+editNome.Text+''''+','+''''+editdatanasc.Text+''''+','+''''+cbsexo.Text+''''+','+''''+editemail.Text+''''+','+''''+editmsn.Text+''''+','+''''+editskype.Text+''''+','+''''+editorkut.Text+''''+','+''''+edittelefone.Text+''''+','+''''+editcelular.Text+''''+','+''''+editestado.Text+''''+','+''''+editcidade.Text+''''+','+''''+editbairro.Text+''''+','+''''+editLogin.Text+''''+','+''''+editSenha.Text+''''+','+''''+editfoto.Text+''''+') ';
 adocommand1.CommandText:= sql;
 adocommand1.Execute;
  if(Application.MessageBox('Cadastro efetuado com sucesso','Confirmação de cadastro',0)) = 1 then
   begin
   formcadastro.Close;
   end;
 end;

 

Funcionou perfeitamente, tenho programado também um if bem no final como podem ver, ele fecha o formulário assim que o usuário preciona a tecla OK, até ai tudo bem, mas quando eu vou efetuar um novo cadastro, os dados que digitei a pouco permanecem lá, o que posso fazer para ao fechar o form os campos sejam limpos automaticamente?

 

Desde já agradeço.

 

Atenciosamente,

 

Diego Maciel Dias

 

Conforme dito acima, tem um botão na tela de cadatro que manda pra tela de pesquisa, lá eu tenho um ADOQuery, ADOCommand e um DataSource com um DBGrid para receber a pesquisa, o no evento OnDblClick do DBGrid eu coloquei o seguinte:

procedure TFormAtualizar.DBGrid1DblClick(Sender: TObject);
begin

   formCadastro.lblCodigo.caption := datasource1.DataSet.FieldValues['codusuario'];
   formCadastro.editNome.Text := datasource1.DataSet.FieldValues['nome'];
   formCadastro.editdatanasc.Text := datasource1.DataSet.FieldValues['datanasc'];
   formCadastro.cbsexo.Text := datasource1.DataSet.FieldValues['sexo'];
   formCadastro.editemail.Text := datasource1.DataSet.FieldValues['email'];
   formCadastro.editmsn.Text := datasource1.DataSet.FieldValues['msn'];
   formCadastro.editskype.Text := datasource1.DataSet.FieldValues['skype'];
   formCadastro.editorkut.Text := datasource1.DataSet.FieldValues['orkut'];
   formCadastro.edittelefone.Text := datasource1.DataSet.FieldValues['telefone'];
   formCadastro.editcelular.Text := datasource1.DataSet.FieldValues['celular'];
   formCadastro.editestado.Text := datasource1.DataSet.FieldValues['estado'];
   formCadastro.editcidade.Text := datasource1.DataSet.FieldValues['cidade'];
   formCadastro.editbairro.Text := datasource1.DataSet.FieldValues['bairro'];
   formCadastro.editlogin.Text := datasource1.DataSet.FieldValues['login'];
   formCadastro.editsenha.Text := datasource1.DataSet.FieldValues['senha'];
   formCadastro.editfoto.Text := datasource1.DataSet.FieldValues['foto'];

   formAtualizar.Close;
   formcadastro.Show;



end;

Ou seja, ao clicar duas vezes no cadastro do usuário, todos os campos serão enviados para o form de cadastro de usuários, permitindo assim a atualização do mesmo.

 

Atenciosamente,

 

Diego Maciel Dias

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.