erro (not in edit mode)
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!
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
Curtidas 0
Respostas
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
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
Botão salvar, vou comentar a parte do código onde começa o problema
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
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,
Eh bem idiota, mas funcionou.... vai saber
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
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.
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
14/07/2006
Ola...
Espero te-lo ajudado...
Abraco.
obrigado, voce me ajudou 3 anos depois de eu ter postado eheheheh
GOSTEI 0