erro (not in edit mode)

Delphi

14/07/2006

bom dia galera.... seguinte tenho dois formularios do meu sistema que começaram a dar problemas depoisque eu formatei a maquina e instaçe-o novamente... o erro é ´not in edit mode´, quando eu vou salvar (post, applyupdates).

A unica coisa que tem diferente agora de antes da formatação é a versao do firebird que agora é 1.5.3 e antes era 1.5

abraços!


Mahdak

Mahdak

Curtidas 0

Respostas

Paulo

Paulo

14/07/2006

Bem, se pudesse postar parte do código, ficaria melhor, mas pelo que estou entendendo, sua Query ou Table, não está em edição. Você não deu um INSERT ou APPEND ou EDIT, antes de postar no banco.


GOSTEI 0
Mahdak

Mahdak

14/07/2006

Paulo, eu ja usava esse codigo antes sem problemas, mesmo assim irei postar ele aqui:

Botão ´Novo´, onde o sistema abre e da um inset no banco e joga o codigo num edit pro usuario ver
procedure TCabos.Btn_NovoClick(Sender: TObject);
begin
DM.Tbl_Cabos.Open;
    DM.Tbl_Cabos.Insert;
    Edit_Codigo.text := FormatFloat(´0000000´,StrToFloat(IntToStr(DM.Tbl_CabosCODIGO.AsInteger)));
    Edit_Nome.SetFocus;
end;


Botão salvar, vou comentar a parte do código onde começa o problema
procedure TCabos.Btn_SalvarClick(Sender: TObject);
var
regiao, bairro : integer;
begin
     if Edit_Nome.Text = ´´ then
        ShowMessage(´Campo Nome está vazio, por favor verifique.´)
     else
        begin
            if Combo_Dir.Text <> ´´ then
            begin
                // Diretorios
                DM.Tbl_Diretorios.SelectSQL.Clear;
                DM.Tbl_Diretorios.SelectSQL.add(´SELECT * FROM Diretorio WHERE NOME = ´´´ + Trim(Combo_Dir.Text) + ´´´´ );
                DM.Tbl_Diretorios.Close;
                DM.Tbl_Diretorios.open;
                
            end
                else
                    begin
                        // Passa Batido
                    end;


            if Combo_Regiao.Text <> ´´ then
            begin
                // Regiao
                DM.Tbl_Bairro.SelectSQL.Clear;
                DM.Tbl_Bairro.SelectSQL.add(´SELECT * FROM BAIRRO WHERE NOME = ´´´ + Trim(Combo_Regiao.Text) + ´´´´ );
                DM.Tbl_Bairro.Close;
                DM.Tbl_Bairro.open;
                Regiao := DM.Tbl_BairroCODIGO.AsInteger;

            end
                else
                    begin
                        // Passa Batido
                    end;




            if Combo_Edificio.Text <> ´´ then
            begin
                // Edificios
                DM.Tbl_Edificios.SelectSQL.Clear;
                DM.Tbl_Edificios.SelectSQL.add(´SELECT * FROM Edificios WHERE EDIFICIO = ´´´ + Trim(Combo_Edificio.Text) + ´´´´ );
                DM.Tbl_Edificios.Close;
                DM.Tbl_Edificios.open;

            end
                else
                    begin
                        // Passa Batido
                    end;



            if Combo_Cidade.Text <> ´´ then
            begin
                // Cidade
                DM.Tbl_Cidade.SelectSQL.Clear;
                DM.Tbl_Cidade.SelectSQL.add(´SELECT * FROM Cidade WHERE NOME = ´´´ + Trim(Combo_Cidade.Text) + ´´´´ );
                DM.Tbl_Cidade.Close;
                DM.Tbl_Cidade.open;

            end
                else
                    begin
                        // Passa Batido
                    end;



            if Combo_UF.Text <> ´´ then
            begin
                // UF
                DM.Tbl_UF.SelectSQL.Clear;
                DM.Tbl_UF.SelectSQL.add(´SELECT * FROM ESTADO WHERE SIGLA = ´´´ + Trim(Combo_UF.Text) + ´´´´ );
                DM.Tbl_UF.Close;
                DM.Tbl_UF.open;

            end
                else
                    begin
                        // Passa Batido
                    end;


            if Combo_Bairro.Text <> ´´ then
            begin
                // Bairro
                DM.Tbl_Bairro.SelectSQL.Clear;
                DM.Tbl_Bairro.SelectSQL.add(´SELECT * FROM Bairro WHERE NOME = ´´´ + Trim(Combo_Bairro.Text) + ´´´´ );
                DM.Tbl_Bairro.Close;
                DM.Tbl_Bairro.open;
                bairro := DM.Tbl_BairroCODIGO.AsInteger;

             end
                else
                    begin
                        // Passa Batido
                    end;


            if Combo_Rua.Text <> ´´ then
            begin
                // Logradouro
                DM.Tbl_Logradouro.SelectSQL.Clear;
                DM.Tbl_Logradouro.SelectSQL.add(´SELECT * FROM Logradouro WHERE NOME = ´´´ + Trim(Combo_Rua.Text) + ´´´´ );
                DM.Tbl_Logradouro.Close;
                DM.Tbl_Logradouro.open;

            end
                else
                    begin
                        // Passa Batido
                    end;


            // AQUI É ONDE DA O ERRO
            DM.Tbl_CabosNOME.AsString                  := Edit_Nome.Text;

            DM.Tbl_CabosNASCIMENTO.AsString            := NASCIMENTO.text;

            DM.Tbl_CabosFONE1.AsString                 := Edit_Fone1.Text;

            DM.Tbl_CabosFONE2.AsString                 := Edit_Fone2.Text;

            DM.Tbl_CabosEMAIL.AsString                 := Edit_Mail.Text;

            DM.Tbl_CabosCODIGO_DIR.AsInteger           := DM.Tbl_DiretoriosCODIGO.AsInteger;

            DM.Tbl_CabosCODIGO_REGIAO.AsInteger        := Regiao;

            DM.Tbl_CabosCODIGO_EDIFICIO.AsInteger      := DM.Tbl_EdificiosCODIGO.AsInteger;

            DM.Tbl_CabosBLOCO.AsString                 := Edit_Bloco.Text;

            DM.Tbl_CabosAPTO.AsString                  := Edit_Apto.Text;

            DM.Tbl_CabosCODIGO_CIDADE.AsInteger        := DM.Tbl_CidadeCODIGO.AsInteger;

            DM.Tbl_CabosCODIGO_UF.AsInteger            := DM.Tbl_UFCODIGO.AsInteger;

            DM.Tbl_CabosCEP.AsString                   := Edit_CEP.Text;

            DM.Tbl_CabosCODIGO_BAIRRO.AsInteger        := Bairro;

            DM.Tbl_CabosCODIGO_LOGRADOURO.AsInteger    := DM.Tbl_LogradouroCODIGO.AsInteger;

            DM.Tbl_CabosNUMERO.AsString                := Edit_Numero.Text;

            DM.Tbl_CabosIMEDIACOES.AsString            := Edit_Imediacoes.Text;

            DM.Tbl_CabosDATA_CADASTRO.AsDateTime       := Date;


            DM.Tbl_Cabos.Post;

            DM.Tbl_Cabos.ApplyUpdates;

            ShowMessage(´Cabo Eleitoral Cadastrado Com Sucesso.´);

            Principal.UserControl.Log(´USUARIO CADASTROU O CABO ELEITORAL ´+ Edit_Nome.text + ´ NO SISTEMA´);

           
            end;


end;



GOSTEI 0
Night_man

Night_man

14/07/2006

Opa, pelo oq eu vi esta tudo normal,

uma vez, em oracle, tive um problema similar, eu colocava o dataset em edit, mas ele nao entrava, dai fiz o seguinte,


while not (Dataset.state in [dsEdit, dsInsert]) do
  dataset.edit;


Eh bem idiota, mas funcionou.... vai saber


GOSTEI 0
Rweberich

Rweberich

14/07/2006

Ola...

Eu uso o Firebird 2.1.0, e tive o mesmo problema quando prescisaava recuperar o RecordCaunt de uma IBQuery.
A solucao que encontrei foi antes de dar um IBQuery1.Open, fazer a tabela que buscava o registro ficar em modo Edit;
Ex:

tblProduto.Edit;
qyCodigo.Close;
qyCodigo.SQL.Clear;
qyCodigo.SQL.Add(´SELECT * FROM PRODUTO WHERE CODIGO =´+´´´´+ edtCodigo.Text+´´´´);
qyCodigo.Open;
if qyCodigoAutomatico.RecordCount = 1 then
begin
ShowMessage(´O código ´+(edtCodigo.Text)+´ ja existe´);
tblProduto.Cancel;
end;

Espero te-lo ajudado...

Abraco.


GOSTEI 0
Mahdak

Mahdak

14/07/2006

Ola... Espero te-lo ajudado... Abraco.


obrigado, voce me ajudou 3 anos depois de eu ter postado eheheheh


GOSTEI 0
POSTAR