erro tabela _ Dataset not in edit or insert mode.
Olá pessoal sou novo aqui no DEV, estou com o seguinte problema.
Estou iniciando um projeto com ADOs e DataSources, porém no formulário de cadastro de clientes ao inserir todos os dados quando clico em salvar aparece o seguinte erro:
TAB_CLIENTES: Dataset not in edit or insert mode. Lembrando que a tabela já esta em modo de Edição e Inserção com os seguintes códigos:
procedure TDM.TAB_CLIENTESBeforeInsert(DataSet: TDataSet);
begin
if DM.TAB_CLIENTES.State in [dsEdit] then
begin
DM.TAB_CLIENTES.Post;
end;
if DM.TAB_CLIENTES.State in [dsEdit] then
begin
DM.TAB_CLIENTES.Post
end;
end;
Aguardo respostas. Obrigado
Estou iniciando um projeto com ADOs e DataSources, porém no formulário de cadastro de clientes ao inserir todos os dados quando clico em salvar aparece o seguinte erro:
TAB_CLIENTES: Dataset not in edit or insert mode. Lembrando que a tabela já esta em modo de Edição e Inserção com os seguintes códigos:
procedure TDM.TAB_CLIENTESBeforeInsert(DataSet: TDataSet);
begin
if DM.TAB_CLIENTES.State in [dsEdit] then
begin
DM.TAB_CLIENTES.Post;
end;
if DM.TAB_CLIENTES.State in [dsEdit] then
begin
DM.TAB_CLIENTES.Post
end;
end;
Aguardo respostas. Obrigado
Tácio Silva
Curtidas 0
Melhor post
Renato Rubinho
19/08/2014
Buenas,
Como você chama o Insert para precisar dar o post no BeforeInsert?
Seguindo sua linha de raciocínio, uma das verificações idênticas do BeforeInsert deveria ser "dsInsert" e outra "dsEdit", certo ?
Além de corrigir, pode por as duas juntas.
O erro que está ocorrendo depende do que o "Salvar" faz ? Está usando um DBNavigator para isso ou um botão com uma procedure alimentada por você?
Abraççç,
Renato
Como você chama o Insert para precisar dar o post no BeforeInsert?
Seguindo sua linha de raciocínio, uma das verificações idênticas do BeforeInsert deveria ser
if DM.TAB_CLIENTES.State in [dsInsert] then
Além de corrigir, pode por as duas juntas.
if DM.TAB_CLIENTES.State in [dsInsert,dsEdit] then DM.TAB_CLIENTES.Post;
O erro que está ocorrendo depende do que o "Salvar" faz ? Está usando um DBNavigator para isso ou um botão com uma procedure alimentada por você?
Abraççç,
Renato
GOSTEI 1
Mais Respostas
Tácio Silva
19/08/2014
Bacana Renato fiz essa alteração para diminuir a linha de códigos.
Em relação ao tipo de botão, estou usando um SpeedButton com a seguinte linha de código no 'Salvar'
procedure TFR_CADCLIENTE.BTSALVARClick(Sender: TObject);
begin
DM.TAB_CLIENTESNOME.Value:= EDNOME.Text;
DM.TAB_CLIENTESENDERECO.Value:= EDEND.Text;
DM.TAB_CLIENTESBAIRRO.Value:= EDBAIRRO.Text;
DM.TAB_CLIENTESCIDADE.Value:= EDCIDADE.Text;
DM.TAB_CLIENTESTELEFONE.Value:= StrToInt (EDTELEF.Text);
DM.TAB_CLIENTESCPF.Value:= StrToInt(EDCPF.Text);
DM.TAB_CLIENTESDATADENASCIMENTO.Value:= StrToInt (EDDTNASC.Text);
DM.TAB_CLIENTES.Post;
DM.TAB_CLIENTES.Requery();
EDNOME.ReadOnly:=TRUE;
EDEND.ReadOnly:=TRUE;
EDBAIRRO.ReadOnly:=TRUE;
EDCIDADE.ReadOnly:=TRUE;
EDTELEF.ReadOnly:=TRUE;
EDCPF.ReadOnly:=TRUE;
EDDTNASC.ReadOnly:=TRUE;
application.MessageBox('SALVO COM SUCESSO','UNEOURO',MB_ICONEXCLAMATION);
EDCOD.Clear;
EDNOME.Clear;
EDEND.Clear;
EDBAIRRO.Clear;
EDCIDADE.Clear;
EDTELEF.Clear;
EDCPF.Clear;
EDDTNASC.Clear;
end;
Será que devo excluir a ADOTable referente e adiciona-lá novamente, um detalhe não adicionei as seguintes Fields no Formulário, inseri com Edits mesmo sei que não tem problema fazer desta forma. Mas o que devo fazer a respeito ?
Em relação ao tipo de botão, estou usando um SpeedButton com a seguinte linha de código no 'Salvar'
procedure TFR_CADCLIENTE.BTSALVARClick(Sender: TObject);
begin
DM.TAB_CLIENTESNOME.Value:= EDNOME.Text;
DM.TAB_CLIENTESENDERECO.Value:= EDEND.Text;
DM.TAB_CLIENTESBAIRRO.Value:= EDBAIRRO.Text;
DM.TAB_CLIENTESCIDADE.Value:= EDCIDADE.Text;
DM.TAB_CLIENTESTELEFONE.Value:= StrToInt (EDTELEF.Text);
DM.TAB_CLIENTESCPF.Value:= StrToInt(EDCPF.Text);
DM.TAB_CLIENTESDATADENASCIMENTO.Value:= StrToInt (EDDTNASC.Text);
DM.TAB_CLIENTES.Post;
DM.TAB_CLIENTES.Requery();
EDNOME.ReadOnly:=TRUE;
EDEND.ReadOnly:=TRUE;
EDBAIRRO.ReadOnly:=TRUE;
EDCIDADE.ReadOnly:=TRUE;
EDTELEF.ReadOnly:=TRUE;
EDCPF.ReadOnly:=TRUE;
EDDTNASC.ReadOnly:=TRUE;
application.MessageBox('SALVO COM SUCESSO','UNEOURO',MB_ICONEXCLAMATION);
EDCOD.Clear;
EDNOME.Clear;
EDEND.Clear;
EDBAIRRO.Clear;
EDCIDADE.Clear;
EDTELEF.Clear;
EDCPF.Clear;
EDDTNASC.Clear;
end;
Será que devo excluir a ADOTable referente e adiciona-lá novamente, um detalhe não adicionei as seguintes Fields no Formulário, inseri com Edits mesmo sei que não tem problema fazer desta forma. Mas o que devo fazer a respeito ?
GOSTEI 0
Renato Rubinho
19/08/2014
Você precisa colocar a tabela em Modo de Inserção ou edição para começar a preencher os dados dos campos.
Por isso dá o erro. Ao tentar preencher o EDNOME.text no campo "NOME", a tabela não está pronta para receber o dado e gera o erro.
Mas desta forma, alimentando sempre manualmente esses dados, nem precisa daquele código no BeforeInsert. Sua tabela sempre estará em "browse" porque você não edita os dados diretamente no objeto.
Por isso dá o erro. Ao tentar preencher o EDNOME.text no campo "NOME", a tabela não está pronta para receber o dado e gera o erro.
Mas desta forma, alimentando sempre manualmente esses dados, nem precisa daquele código no BeforeInsert. Sua tabela sempre estará em "browse" porque você não edita os dados diretamente no objeto.
procedure TFR_CADCLIENTE.BTSALVARClick(Sender: TObject); begin // Se for uma inserção DM.TAB_CLIENTESNOME.Insert; // Se for uma edição DM.TAB_CLIENTESNOME.Edit; DM.TAB_CLIENTESNOME.Value:= EDNOME.Text; DM.TAB_CLIENTESENDERECO.Value:= EDEND.Text; DM.TAB_CLIENTESBAIRRO.Value:= EDBAIRRO.Text; DM.TAB_CLIENTESCIDADE.Value:= EDCIDADE.Text;
GOSTEI 1
Tácio Silva
19/08/2014
Muito Grato Brother!
Consegui corrigir o erro com sua orientação, realmente não posso preencher os dados dos campos sem antes colocar a tabela em modo de Inserção e Edição.
Aproveitei e exclui o formulário e a tabela no DataModule e fiz tudo novamente ai funfou legal. ..
Agradeço até mais..;
Consegui corrigir o erro com sua orientação, realmente não posso preencher os dados dos campos sem antes colocar a tabela em modo de Inserção e Edição.
Aproveitei e exclui o formulário e a tabela no DataModule e fiz tudo novamente ai funfou legal. ..
Agradeço até mais..;
GOSTEI 0