diego-md 0 Denunciar post Postado Novembro 9, 2009 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
wllf 2 Denunciar post Postado Novembro 10, 2009 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
Chrnos 30 Denunciar post Postado Novembro 10, 2009 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
diego-md 0 Denunciar post Postado Novembro 10, 2009 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
diego-md 0 Denunciar post Postado Novembro 10, 2009 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