Fórum Selecionar Linha DBGRID e abrir outra tela de edição dos campos #508670
27/01/2015
0
Estou com um pequeno problema... Possuo um sistema onde realizo um cadastro de OS e gravo no banco de dados (frmCadastro)
Possuo na tela inicial (frmConsulta), um dbgrid que mostra todas as OS cadastradas.
Quero saber como eu posso selecionar a linha do meu dbgrid e abrir um outro formulário idêntico ao de cadastro só que para edição dos campos... esse novo formulário(frmEditar) deve trazer os campos preenchidos já com os dados do Dbgrid.
Estou utilizando o Zeos para realizar a comunicação, e Querys para realizar os cadastros e consultas juntamente com DataModule.
Banco de dados Firebird 2.1
Rudimar
Curtir tópico
+ 0Posts
28/01/2015
Ricardo
Gostei + 0
28/01/2015
Rudimar
tentei adaptar esse código mas não deu muito certo... como eu posso fazer?
procedure TfrmCadastro.btnSalvarClick(Sender: TObject);
var
tipo: String;
i : Integer;
begin
dm.DataModule1.qryOrdemServico.Close;
dm.DataModule1.qryOrdemServico.SQL.Clear;
dm.DataModule1.qryOrdemServico.SQL.Add('INSERT INTO m_ordem_serv_c (DT_SAIDA, DT_ENTRADA, S_OBS, DT_PREVISAO, IB_ENCERRADA, BL_IMAGEM, i_cod_m_pessoa_cliente_c, i_cod_m_pessoa_fornecedor_c)');
dm.DataModule1.qryOrdemServico.SQL.Add('VALUES (:p_dtsaida, :p_dtentrada, :p_observacao, :p_dtprevisao, :p_encerrada, :p_imagem, :p_cliente, :p_fornecedor)');
dm.DataModule1.qryOrdemServico.ParamByName('p_dtsaida').AsDate := dtSaida.Date;
dm.DataModule1.qryOrdemServico.ParamByName('p_observacao').AsString := mmDescricao.Text;
dm.DataModule1.qryOrdemServico.ParamByName('p_dtentrada').AsDate := dtEntrega.Date;
dm.DataModule1.qryOrdemServico.ParamByName('p_dtprevisao').AsDate := dtPrevista.Date;
dm.DataModule1.qryOrdemServico.ParamByName('p_cliente').AsInteger := lcbCliente.KeyValue;
dm.DataModule1.qryOrdemServico.ParamByName('p_fornecedor').AsInteger := lcbFornecedor.KeyValue;
if cbEncerrada.Checked = True then
begin
dm.DataModule1.qryOrdemServico.ParamByName('p_encerrada').AsInteger := 1;
end
else
begin
dm.DataModule1.qryOrdemServico.ParamByName('p_encerrada').AsInteger := 0;
end;
dm.DataModule1.qryOrdemServico.ParamByName('p_imagem').AsString := edtAnexo.Text;
dm.DataModule1.qryOrdemServico.ExecSQL;
ShowMessage('Cadastrado com Sucesso');
for i:=0 to frmCadastro.ComponentCount-1 do
begin
if frmCadastro.Components[i] is TEdit then
(frmCadastro.Components[i] as TEdit).Clear;
if frmCadastro.Components[i] is TMemo then
(frmCadastro.Components[i] as TMemo).Clear;
if frmCadastro.Components[i] is TImage then
(frmCadastro.Components[i] as TImage).Picture:=nil;
end;
DM.DataModule1.qryConsulta.Close;
DM.DataModule1.qryConsulta.Open;
end;
Gostei + 0
28/01/2015
Ricardo
Você precisa colocar no evento OnDbClick do DBgrid a chamada do form.
Ex. frmCadastro.showmodal
frmCadastro.show ou a forma que você utiliza.
Para ficar mais fácil de entender; você certamente tem um botão que quando clica nele abre o frmCadastro não tem? Então, você pega esse mesmo código e cola no evento OnDbClick do DBgrid.
Pronto problema resolvido.
Qualquer coisa entre em contato.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)