Fórum Selecionar Linha DBGRID e abrir outra tela de edição dos campos #508670

27/01/2015

0

Boa noite pessoal...

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

Rudimar

Responder

Posts

28/01/2015

Ricardo

Basta você colocar a mesma rotina que usa para chamar o frmCadastro no evento OnDBclick do dbgrid. Dessa forma o formulário de cadastro vai abrir com os dados relativos ao registro selecionado e se quiser você já pode abrir o form direto em modo de edição.
Responder

Gostei + 0

28/01/2015

Rudimar

Pois é... eu tenho na minha rotina de cadastro o seguinte
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;
Responder

Gostei + 0

28/01/2015

Ricardo

Essa é a rotina para salvar que não vem ao caso.

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.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar