Forms Iguais Mais Não dá Certo

Delphi

25/07/2013

Boa Noite!!!

Tenho dois forms aonde eu altero e gravo o que eu cadastrei.O codigo é o mesmo, mais um não está alterando ele esta gravando uma nova informação ao invés de alterar.Alguem sabe me dizer aonde eu errei??

Form que está gravando certo!!!
procedure TFrm_Cad_Bandeiras.Btn_GravarClick(Sender: TObject);
begin
if Edt_Bandeira.Text='''' then
      begin
        Mess(Frm_Cad_Bandeiras.Handle,''Dados em Branco!Preencha os Dados Corretamente!!!'', mb_iconinformation or mb_ok);
        Edt_Bandeira.SetFocus;
        exit;
      end;

      TRY
        Frm_Principal.ConexaoBanco.BeginTrans;
        if f_operacao=''I'' then
          begin
            Cmd_Cad_Bandeiras.CommandText:=''INSERT into Cad_Bandeiras (DataCadastro,Bandeira) '';
            Cmd_Cad_Bandeiras.CommandText:= Cmd_Cad_Bandeiras.CommandText+''VALUES(:P_DataCadastro,:P_Bandeira )'';
          end
          else
          begin
            Cmd_Cad_Bandeiras.CommandText:=''UPDATE Cad_Bandeiras SET '';
            Cmd_Cad_Bandeiras.CommandText:=Cmd_Cad_Bandeiras.CommandText+''DataCadastro=:P_DataCadastro,Bandeira=:P_Bandeira '';
            Cmd_Cad_Bandeiras.CommandText:=Cmd_Cad_Bandeiras.CommandText+''Where Codigo=:P_Codigo'';

          end;
      with Cmd_Cad_Bandeiras.Parameters do
      begin
        if f_operacao<>''I'' then ParamByName(''P_Codigo'').Value:=Edt_Codigo.Text ;
        ParamByName(''P_Bandeira'').Value:=Edt_Bandeira.Text ;
        ParamByName(''P_DataCadastro'').Value:=Msk_Data_Cadastro.Text ;
        if Msk_Data_Cadastro.Text <> ''  /  /    ''
          then ParamByName(''P_DataCadastro'').value:=Msk_Data_Cadastro.Text ;

        Cmd_Cad_Bandeiras.Prepared:=True ;
        Cmd_Cad_Bandeiras.Execute;
        Cmd_Cad_Bandeiras.Prepared:=False;
      end;
    Frm_Principal.ConexaoBanco.CommitTrans;
    LimpaCampos;
    Edt_Bandeira.Enabled:=false;
  EXCEPT
    Frm_Principal.ConexaoBanco.RollbackTrans;
    Mess(Frm_Cad_Bandeiras.Handle,''Falha na Atualização da Tabela Cad_Bandeiras...'',mb_iconinformation or mb_ok);
  END;
  Btn_Pesquisar.Enabled := true;
  Btn_Incluir.Enabled := true;
  Btn_Sair.Enabled := true;
  Btn_Alterar.Enabled:=false;
  Btn_Gravar.Enabled:=false;
  Btn_Cancelar.Enabled:=false;
end;


Form que ao inves de alterar está gravando uma nova informação
procedure TFrm_Cad_Cidades.Btn_GravarClick(Sender: TObject);
begin
  if Edt_Cidade.Text='''' then
      begin
        Mess(Frm_Cad_Cidades.Handle,''Dados em Branco!Preencha os Dados Corretamente!!!'', mb_iconinformation or mb_ok);
        Edt_Cidade.SetFocus;
        exit;
      end;
      
      TRY
        Frm_Principal.ConexaoBanco.BeginTrans;
        if f_operacao=''I'' then
          begin
            Cmd_Cad_Cidades.CommandText:=''INSERT into Cad_Cidades (Cidade,Estado,Cep,CodigoIbge,DataCadastro) '';
            Cmd_Cad_Cidades.CommandText:= Cmd_Cad_Cidades.CommandText+''VALUES(:P_Cidade,:P_Estado,:P_Cep,:P_CodigoIbge,:P_DataCadastro )'';
          end
          else
          begin
            Cmd_Cad_Cidades.CommandText:=''UPDATE Cad_Cidades SET '';
            Cmd_Cad_Cidades.CommandText:=Cmd_Cad_Cidades.CommandText+''Cidade=:P_Cidade,Estado=:P_Estado,Cep=:P_Cep,CodigoIbge=:P_CodigoIbge,DataCadastro=:P_DataCadastro '';
            Cmd_Cad_Cidades.CommandText:=Cmd_Cad_Cidades.CommandText+''Where Codigo=:P_Codigo'';

          end;
      with Cmd_Cad_Cidades.Parameters do
      begin
        if f_operacao<>''I'' then ParamByName(''P_Codigo'').Value:=Edt_Codigo.Text ;
        ParamByName(''P_Cidade'').Value:=Edt_Cidade.Text ;
        ParamByName(''P_DataCadastro'').Value:=Msk_Data_Cadastro.Text ;
        if Msk_Data_Cadastro.Text <> ''  /  /    ''
          then ParamByName(''P_DataCadastro'').value:=Msk_Data_Cadastro.Text ;

        ParamByName(''P_Estado'').Value:=ComBox_Estado.Text ;
        ParamByName(''P_Cep'').Value:=Msk_Cep.Text ;

        Cmd_Cad_Cidades.Prepared:=True ;
        Cmd_Cad_Cidades.Execute;
        Cmd_Cad_Cidades.Prepared:=False;
      end;
    Frm_Principal.ConexaoBanco.CommitTrans;
    LimpaCampos;
    Edt_Cidade.Enabled:=false;
    ComBox_Estado.Enabled:=false;
    Msk_Cep.Enabled:=false;
    Edt_Codigo_Ibge.Enabled:=false;
  EXCEPT
    Frm_Principal.ConexaoBanco.RollbackTrans;
    Mess(Frm_Cad_Cidades.Handle,''Falha na Atualização da Tabela Cad_Cidades...'',mb_iconinformation or mb_ok);
  END;
  Btn_Pesquisar.Enabled := true;
  Btn_Incluir.Enabled := true;
  Btn_Sair.Enabled := true;
  Btn_Alterar.Enabled:=false;
  Btn_Gravar.Enabled:=false;
  Btn_Cancelar.Enabled:=false;


end;


Obs.: Eu debuguei no form que esta certo que esta gravando as informações ele verifica certinho se esta inserindo ou editando, se não tiver inserindo ele já pula para o o codigo de edição, mais o outro verifica também, mais só enxerga que está inserindo, esquesito.Parte que verifica se ta inserindo ou não
TRY
        Frm_Principal.ConexaoBanco.BeginTrans;
        if f_operacao=''I'' then
Bruno Henrique

Bruno Henrique

Curtidas 0

Respostas

Bruno Henrique

Bruno Henrique

25/07/2013

Alguém?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

25/07/2013

Como está a chamada dos forms?
GOSTEI 0
Alessandro Yamasaki

Alessandro Yamasaki

25/07/2013

Aonde vc está preenchendo a informação desta variavel?
GOSTEI 0
Bruno Henrique

Bruno Henrique

25/07/2013

Olá...Bom dia!!!

A chamada dos Forms ...form.shomodal;

e o preenchimento da variavel só quando executo, que eu busco o form que ela verifica se esta no modo de inserção se tiver ela vai inserir no banco se não só vai fazer a alteração...mais acontece que ela só ta executando a inserção e não executa a alteração....meu outros forms eu fiz do mesmo jeito e funciona normal.
GOSTEI 0
Bruno Henrique

Bruno Henrique

25/07/2013

????
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

25/07/2013

Essa é a questão: onde você define se é inserção ou alteração?
GOSTEI 0
Bruno Henrique

Bruno Henrique

25/07/2013

Nessa parte aqui!!!
TRY
        Frm_Principal.ConexaoBanco.BeginTrans;
        if f_operacao=''I'' then
          begin
            Cmd_Cad_Cidades.CommandText:=''INSERT into Cad_Cidades (Cidade,Estado,Cep,CodigoIbge,DataCadastro) '';
            Cmd_Cad_Cidades.CommandText:= Cmd_Cad_Cidades.CommandText+''VALUES(:P_Cidade,:P_Estado,:P_Cep,:P_CodigoIbge,:P_DataCadastro )'';
          end
          else
          begin
            Cmd_Cad_Cidades.CommandText:=''UPDATE Cad_Cidades SET '';
            Cmd_Cad_Cidades.CommandText:=Cmd_Cad_Cidades.CommandText+''Cidade=:P_Cidade,Estado=:P_Estado,Cep=:P_Cep,CodigoIbge=:P_CodigoIbge,DataCadastro=:P_DataCadastro '';
            Cmd_Cad_Cidades.CommandText:=Cmd_Cad_Cidades.CommandText+''Where Codigo=:P_Codigo'';
 
          end;
GOSTEI 0
Alessandro Yamasaki

Alessandro Yamasaki

25/07/2013

Coloque o trecho que está preenchendo a informação desta variavel.
GOSTEI 0
Bruno Henrique

Bruno Henrique

25/07/2013

procedure TFrm_Pesquisa_Cidades.Dbg_Pesquisa_CidadesKeyPress(
  Sender: TObject; var Key: Char);
begin
pesquisar1:=true;
Frm_Cad_Cidades.Msk_Data_Cadastro.Enabled:=false;
Frm_Cad_Cidades.Edt_Cidade.Enabled:=false;
Frm_Cad_Cidades.ComBox_Estado.Enabled:=false;
Frm_Cad_Cidades.Msk_Cep.Enabled:=false;


Frm_Cad_Cidades.Edt_Codigo.Text:=Frm_Pesquisa_Cidades.Ads_Pesquisa_Cidades.FieldByName('Codigo').AsString;
Frm_Cad_Cidades.Msk_Data_Cadastro.Text:=Frm_Pesquisa_Cidades.Ads_Pesquisa_Cidades.FieldByName('DataCadastro').AsString;
Frm_Cad_Cidades.Edt_Cidade.Text:=Frm_Pesquisa_Cidades.Ads_Pesquisa_Cidades.FieldByName('Cidade').AsString;
Frm_Cad_Cidades.ComBox_Estado.Text:=Frm_Pesquisa_Cidades.Ads_Pesquisa_Cidades.FieldByName('Estado').AsString;
Frm_Cad_Cidades.Msk_Cep.Text:=Frm_Pesquisa_Cidades.Ads_Pesquisa_Cidades.FieldByName('Cep').AsString;
f_operacao:='A';
Frm_Pesquisa_Cidades.Close;
Frm_Cad_Funcionarios.Edt_Codigo_Cidade.Text:=Frm_Pesquisa_Cidades.Ads_Pesquisa_Cidades.FieldByName('Codigo').AsString;
Frm_Cad_Funcionarios.Edt_Nome_Cidade.Text:=Frm_Pesquisa_Cidades.Ads_Pesquisa_Cidades.FieldByName('Cidade').AsString;


end;
GOSTEI 0
Bruno Henrique

Bruno Henrique

25/07/2013

Detalhe!!!

Se eu alterar uma vez só, altera normalmente, mais se eu pesquisar de novo e clicar em alterar novamente ai faz uma nova inserção
GOSTEI 0
Bruno Henrique

Bruno Henrique

25/07/2013

Como posto uma print aqui no forum???Por que eu posto um print ficará de mais facil entendimento
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

25/07/2013

Compartilhe a imagem em algum site e poste o link usando as tags [ url ] que você encontra nos botões na hora de postar.
GOSTEI 0
Flávio Henr4ique

Flávio Henr4ique

25/07/2013

Ta Faltando Coisa
GOSTEI 0
Bruno Henrique

Bruno Henrique

25/07/2013

Flavio Henrique
O que está faltando????

Preciso compartilhar a imagem!!!Pois fiz igual a todos os outros forms.E ocorreu perfeitamente, sem erro algum!!!

O que falta nesse ????


Abraços
GOSTEI 0
POSTAR