RECEBER DADOS DO FORM CONSULTA
19/02/2013
0
Preciso de um Auxilio aqui.
Estou desenvolvendo uma aplicação onde é emitido uma O.S (Ordem de Serviços). Na Aplicação, tenho um formulario onde cadastro cliente e outro onde cadastro o veiculo. Para não ter que digitar todos os dados do cliente e do Veiculo na O.S
coloquei um botao na O.S que quando for clicado abrirá um outro Form de Consulta para o Cliente. O mesmo (Form Consulta), possui os seguinte componentes Grid para exibir o resultado da consulta, um radio Grupo para filtrar a consulta e um edit para digitar os dados a ser ser consultados.
No radio Grupo o filtro será pelo CPF ou Nome do Cliente. No Grid terá apenas o Codigo, nome, cep e Telefone do cliente sendo mostrado.
O que preciso é o seguinte:
- Após realizar a pesquisa e encontrar a informação deseja, clicar em um botao ou dar 2 cliques na linha do Grid selecionada, fechar a tela da Consulta, exibir novamente o Form da O.S e nos DBEdit receber os dados consultados no Form Consulta, ou seja os campos que preciso apenas (Nome do Cliente e Telefone)
Obrigado,
Flavio Silva
Posts
19/02/2013
William
Vc menciona que, não quer digitar novamente os dados do cliente na OS.
Minha dúvida é, vc está gravando todos os dados (Nome, CPF, Fone etc...) do cliente novamente na tabela OS?
Caso sim, acho q seria mais fácil gravar somente o código do cliente.
********************************************************************************
Quanto a sua dúvida sobre como passar valores de um form para outro é o seguinte.
Vamos supor que a sua tabela OS vai estar em estado de inserção.
Então após vc selecionar o registro filtrado no DBGrid vc atribui os valores do dataset cliente para o dataset OS, pode ser no evento OnClick do DBGrid, OnClose do Form, exemplo com ClientDataSet:
if ClientDataSet_OS.state in [dsInsert] then begin ClientDataSet_OS.FieldByName('Nome_Cliente').AsString := ClientDataSet_Cli.FieldByName('Nome_Cliente').AsString; ClientDataSet_OS.FieldByName('CPF').AsString := ClientDataSet_Cli.FieldByName('CPF').AsString; // E assim vai ... end;
Basicamente é isso, qualquer dúvida poste novamente.
19/02/2013
Deivison Melo
Qualquer anormalidade estou à disposição!
19/02/2013
Flavio Silva
Vc menciona que, não quer digitar novamente os dados do cliente na OS.
Minha dúvida é, vc está gravando todos os dados (Nome, CPF, Fone etc...) do cliente novamente na tabela OS?
Caso sim, acho q seria mais fácil gravar somente o código do cliente.
********************************************************************************
Quanto a sua dúvida sobre como passar valores de um form para outro é o seguinte.
Vamos supor que a sua tabela OS vai estar em estado de inserção.
Então após vc selecionar o registro filtrado no DBGrid vc atribui os valores do dataset cliente para o dataset OS, pode ser no evento OnClick do DBGrid, OnClose do Form, exemplo com ClientDataSet:
if ClientDataSet_OS.state in [dsInsert] then begin ClientDataSet_OS.FieldByName('Nome_Cliente').AsString := ClientDataSet_Cli.FieldByName('Nome_Cliente').AsString; ClientDataSet_OS.FieldByName('CPF').AsString := ClientDataSet_Cli.FieldByName('CPF').AsString; // E assim vai ... end;
Basicamente é isso, qualquer dúvida poste novamente.
fiz como vc indico e ja esta meio caminho andado.
Ao inves de gravar o nome no banco configurei para gravar o numero do mesmo.
neste caso deverei criar uma campo virtual para exibir o nome do mesmo?
Quero tambem que ao dar dois clique ele feche o formulario de consulta.
E por fim, ao dar dois clique ele gerou esse erro em um dos campos
Project AutoService.exe raised exception class EdatabaseError with message "(85)9106-0990" is not a valida integer value for field "TELEFONE_CLIENTE"
19/02/2013
William
[url]https://www.devmedia.com.br/providerflags-no-delphi-atualizando-dados-de-uma-unica-tabela/26689[/url]
Para fechar o form no evento DblClick do DBGrid, basta:
frmConsulta.close;
Esse erro aparenta ser problema no tipo integer do campo "TELEFONE_CLIENTE", e está recebendo uma string "(85)9106-0990".
19/02/2013
Flavio Silva
Deu Certo!
As unicas obsevações que faço é a seguinte:
1 -Uso um dbnavigator, quando clico para salvar ele dados deixam de ser exibido, e só voltam quando fecho o form e abra novamente ou quando clico no botao refresh do navigator.
2 - Se eu for editar uma os cadastrada e clica no botao para abrir novamente a consulta e alterar o nome, quando dou dois clique ele nao adiciona nada e nao fecha, isso acontece só quando tento alterar uma os ja salva.
19/02/2013
William
Esse é um dos efeitos colaterais em usar o DBNavigator, preferencialmente prefiro codificar botão por botão na unha mesmo.
Isso acontece pq o meu exemplo só atendeu a operação de insert, altere para atender a condição edit.
Modifique assim:
if ClientDataSet_OS.state in [dsInsert, dsEdit] then begin //Copia os dados end;
Clique aqui para fazer login e interagir na Comunidade :)