Fórum Ajuda - Como abrir tela de cadastro no modo edição para um cliente selecionado na consulta #424374
22/09/2012
0
estou desenvolvendo aqui um programa, nele tenho o form de cadastro e um de consulta,
só que no form de cadastro eu não tenho nenhum tipo de filtro, e para o usuário modificar um cliente gostaria de que ele pesquisasse pela consulta aí o cliente que está selecionado na consulta no dbgrid lá, quando ele apertar no botão editar fazer com que abra a tela de cadastro no modo edição já para aquele cliente.
Creio que meu único problema aqui que não estou conseguindo resolver seria pegar o código do cliente selecionado e mandar para o form de cadastro...
Tem como fazer isso? desde já Obrigado.
Jeferson Araujo
Curtir tópico
+ 0Posts
22/09/2012
Claudia Nogueira
Exemplo:
Botão editar:
if tabela.isEmpty then
Exit;
Tabela.Edit;
Application.CreateForm(TFormCadastro, FormCadastro);
FormCadastro.ShowModal;
FreeAndNil(FormCadastro);
Gostei + 0
22/09/2012
Deivison Melo
Após adicionar a unit do formulário ao que deseja chamar...
Implemente sua pesquisa e então no DBGrid, existe um evento chamado: OnDblClick
Nesse evento basta que faça da seguinte forma...
procedure TfrmPrincipal.GRIDPesquisaDblClick(Sender: TObject);
var
strSQL: string;
begin
try
strSQL := 'select NOME_LOCAL, SIGLA_UF, CEP_INICIAL, CEP_FINAL from CEP where CEP_INICIAL = ' + GRIDPesquisa.DataSource.DataSet.Fields[2].AsString;
frmConsulta := TfrmConsulta.Create(Self); //Esse é o outro formulário que deseja chamar...
frmConsulta.edtNome.Text := Trim(ClientDataSet1.FieldByName('NOME_LOCAL').Value);
frmConsulta.edtUF.Text := Trim(ClientDataSet1.FieldByName('SIGLA_UF').Value);
frmConsulta.edtCEPInicial.Text := Trim(ClientDataSet1.FieldByName('CEP_INICIAL').Value);
frmConsulta.edtCEPFinal.Text := Trim(ClientDataSet1.FieldByName('CEP_FINAL').Value);
frmConsulta.Caption := 'Consultando - ' + frmConsulta.edtNome.Text;
frmConsulta.ShowModal;
finally
FreeAndNil(frmConsulta);
end;
end;
Existem muitas formas de fazer essa é uma das mais simples...
Qualquer dúvida postar que eu ou outro colaborador iremos ajudar da melhor forma possível...
Gostei + 0
22/09/2012
Jeferson Araujo
Exemplo:
Botão editar:
if tabela.isEmpty then
Exit;
Tabela.Edit;
Application.CreateForm(TFormCadastro, FormCadastro);
FormCadastro.ShowModal;
FreeAndNil(FormCadastro);
hum obrigado ^^
deu certo aqui
só estou me batendo para uma coisa..
qndo eu abro primeiro o form de cadastro todos os dados estão em branco, só fica preenchido após eu abrir o de consulta,
e eu não consigo preencher nenhum DBE...
Gostei + 0
22/09/2012
Claudia Nogueira
Gostei + 0
22/09/2012
Jeferson Araujo
Após adicionar a unit do formulário ao que deseja chamar...
Implemente sua pesquisa e então no DBGrid, existe um evento chamado: OnDblClick
Nesse evento basta que faça da seguinte forma...
procedure TfrmPrincipal.GRIDPesquisaDblClick(Sender: TObject);
var
strSQL: string;
begin
try
strSQL := 'select NOME_LOCAL, SIGLA_UF, CEP_INICIAL, CEP_FINAL from CEP where CEP_INICIAL = ' + GRIDPesquisa.DataSource.DataSet.Fields[2].AsString;
frmConsulta := TfrmConsulta.Create(Self); //Esse é o outro formulário que deseja chamar...
frmConsulta.edtNome.Text := Trim(ClientDataSet1.FieldByName('NOME_LOCAL').Value);
frmConsulta.edtUF.Text := Trim(ClientDataSet1.FieldByName('SIGLA_UF').Value);
frmConsulta.edtCEPInicial.Text := Trim(ClientDataSet1.FieldByName('CEP_INICIAL').Value);
frmConsulta.edtCEPFinal.Text := Trim(ClientDataSet1.FieldByName('CEP_FINAL').Value);
frmConsulta.Caption := 'Consultando - ' + frmConsulta.edtNome.Text;
frmConsulta.ShowModal;
finally
FreeAndNil(frmConsulta);
end;
end;
Existem muitas formas de fazer essa é uma das mais simples...
Qualquer dúvida postar que eu ou outro colaborador iremos ajudar da melhor forma possível...
Valeu.. não entendi muito bem agora, também porque estou tentando o código da colega acima de não der certo tento por esse ^^
Abraço.
Gostei + 0
22/09/2012
Jeferson Araujo
Sim ele deu certo...
no meu form de cadastro ele tem um botão que abre o FrmConClientes.. apartir daí eu filtro ele e quando saio da consulta na minha tela de cadastro mostra só o cliente que eu consultei anteriormente,,,
a princípio está 100% =) só que fui ver e não mostra os dados que relaciona com outras tabelas.. tipo no dbgrid que antes mostrava o nome do bairro e nome da cidade não mostra mais (eu tenho uma tabela para bairros e outra para cidades, e antes disso eu coloquei para ao invés de mostrar o codigo mostrar o nome de ambos e agora não mostra) Axo que só resolvendo isso ele irá funcionar perfeitamente
Gostei + 0
22/09/2012
Claudia Nogueira
Sim ele deu certo...
no meu form de cadastro ele tem um botão que abre o FrmConClientes.. apartir daí eu filtro ele e quando saio da consulta na minha tela de cadastro mostra só o cliente que eu consultei anteriormente,,,
a princípio está 100% =) só que fui ver e não mostra os dados que relaciona com outras tabelas.. tipo no dbgrid que antes mostrava o nome do bairro e nome da cidade não mostra mais (eu tenho uma tabela para bairros e outra para cidades, e antes disso eu coloquei para ao invés de mostrar o codigo mostrar o nome de ambos e agora não mostra) Axo que só resolvendo isso ele irá funcionar perfeitamente
Qual BD?
Você usa Table ou Query?
Gostei + 0
22/09/2012
Jeferson Araujo
Gostei + 0
22/09/2012
Claudia Nogueira
Se na tela de cadastro você usar DBLookupComboBox para bairro e cidade, você tem que ter dois componentes pra buscar no banco as informações das tabelas bairro e cidade. Aí no onShow da tela de cadastro você faz por exemplo:
TabBairro.Close; TabBairro.Open; TabCidade.Close; TabCidade.Open;
Na propriedade ListSource do DBLookupComboBox você liga no DataSource que está ligado a tabela de bairro. No KeyField a chave da tabela bairro, e na ListField o campo que é pra aparecer. Aí em DataSource do DBLookupComboBox você liga no do cadastro de cliente, e em DataField você liga no campo que tem a chave do bairro na tabela do cliente.
Gostei + 0
22/09/2012
Jeferson Araujo
Se na tela de cadastro você usar DBLookupComboBox para bairro e cidade, você tem que ter dois componentes pra buscar no banco as informações das tabelas bairro e cidade. Aí no onShow da tela de cadastro você faz por exemplo:
TabBairro.Close; TabBairro.Open; TabCidade.Close; TabCidade.Open;
Consegui...
Olha meu lookup esta assim mesmo já como você falou... tipo o código do bairro e cidade se eu colocar para mostrar ele mostra.. ai assim para mostrar o nome eu fui no meu DataSourceCliente e fiz um novo campo.. com as propriedades:
name:nome_bairro
type:String
size:255
Field Type: LookUp
KeyFields:cli_bairro
DataSet:DTSBairro
LookupKeys:bai_codigo
ResultField:bai_nome
Fiz essa mesma configuração só que em vez de fazer no DataSource no DTM fiz no query mesmo no form de cadastro.. deu certo então seu código muito obrigado por td ^^
eu já tinha feito um filtro no cadastro, e tinha dado este mesmo problema, dai por isso pensei que tinha q abrir o form de cadastro pelo de consulta... mas agora os dois métodos estão funcionando perfeitamente =))
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)
Inserção de url
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.