Ir para conteúdo
Fórum Script Brasil
  • 0

Erro ao tentar incluir


nsouza

Pergunta

Colegas bom dia,

estou usando um TSQLDataSet, TDataSetProvider, TClienteDataSet e um TSQLStoredProceudure

Quando clico no botão Incluir da a mensagem de erro:

Cds_Condominio: Cannot modify a read-only dataset'

Abaixo uso os código, mas não consegui consertar este problema. Poderiam me ajudar por favor?

Obrigado

Codigo do botão Incluir:

if not Ds.DataSet.Active then

Ds.DataSet.Open;

Ds.DataSet.Insert;

end;

Codigo no evento Before post do ClienteDataSet: Cds_Condominio

with Sp_Condominio do // Stored Procedure

begin

Params[0].AsInteger := StrToInt(F_Condominio.edtCodigo.text);

Params[1].AsString := f_Condominio.edtNome.Text;

Params[2].AsString := F_Condominio.edtEndereco.Text;

Params[3].AsInteger := StrToInt(F_Condominio.edtNumero.Text);

Params[4].AsString := F_Condominio.edtComplemento.Text;

Params[5].AsString := F_Condominio.edtBairro.Text;

Params[6].AsString := F_Condominio.edtCidade.Text;

Params[7].AsString := F_Condominio.edtUF.Text;

Params[8].AsString := F_Condominio.edtCep.Text;

Params[9].AsString := F_Condominio.edtEmail.Text;

Params[10].AsString := F_Condominio.edtSindico.Text;

Params[11].AsString := F_Condominio.edtTelefone.Text;

Params[12].AsString := F_Condominio.edtCelular.Text;

Params[13].AsInteger := StrToInt(F_Condominio.edtQtdeApt.Text);

Params[14].AsInteger := StrToInt(F_Condominio.edtAptInicial.Text);

Params[15].AsInteger := StrToInt(F_Condominio.edtAptFinal.Text);

Params[16].AsDate := StrToDate(F_Condominio.edtInicioContrato.Text);

Params[17].AsDate := StrToDate(F_Condominio.edtFimContrato.Text);

Params[18].AsFloat := StrToFloat(F_Condominio.EdtValor.Text);

Params[19].AsInteger := StrToInt(F_Condominio.edtVencimento.Text);

Params[20].AsInteger := 1;

Params[21].AsString := 'I';

ExecProc;

end;

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
estou usando um TSQLDataSet, TDataSetProvider, TClienteDataSet e um TSQLStoredProceudure

Quando clico no botão Incluir da a mensagem de erro:

Cds_Condominio: Cannot modify a read-only dataset'

Veja se a propriedade do TDataSetProvider (chamada ResolveToDataSet) esta como True... se estiver coloque como False.

abraço e Feliz Natal

Link para o comentário
Compartilhar em outros sites

  • 0
estou usando um TSQLDataSet, TDataSetProvider, TClienteDataSet e um TSQLStoredProceudure

Quando clico no botão Incluir da a mensagem de erro:

Cds_Condominio: Cannot modify a read-only dataset'

Veja se a propriedade do TDataSetProvider (chamada ResolveToDataSet) esta como True... se estiver coloque como False.

abraço e Feliz Natal

Deu certo. No entando quando eu clico no botão salvar esta salvando dois registros (duplicando no banco de dados)

1 registro com dados que estão nso edits e um registro com todos os campos vazios. Abaixo o codigo da minha storade procedure.

procedure TDM.Cds_CondominioBeforePost(DataSet: TDataSet);

var

//loQry : TSQLQuery;

loQry : TSQLDataSet;

begin

try

try

loQry := TSQLDataSet.Create(nil);

loQry.SQLConnection := DBAcesso;

loQry.CommandType := ctStoredProc;

loQry.CommandText := 'SP_CONDOMINIO_IUD';

loQry.ParamByName('PCONDOMINIOID' ).AsInteger := StrToInt(F_Condominio.edtCodigo.text);

loQry.ParamByName('PNOME' ).AsString := f_Condominio.edtNome.Text;

loQry.ParamByName('PENDERECO' ).AsString := F_Condominio.edtEndereco.Text;

loQry.ParamByName('PNUMERO' ).AsInteger := StrToInt(F_Condominio.edtNumero.Text);

loQry.ParamByName('PCOMPLEMENTO' ).AsString := F_Condominio.edtComplemento.Text;

loQry.ParamByName('PBAIRRO' ).AsString := F_Condominio.edtBairro.Text;

loQry.ParamByName('PCIDADE' ).AsString := F_Condominio.edtCidade.Text;

loQry.ParamByName('PESTADO' ).AsString := F_Condominio.edtUF.Text;

loQry.ParamByName('PCEP' ).AsString := F_Condominio.edtCep.Text;

loQry.ParamByName('PEMAIL' ).AsString := F_Condominio.edtEmail.Text;

loQry.ParamByName('PSINDICO' ).AsString := f_Condominio.edtSindico.Text;

loQry.ParamByName('PTELEFONE' ).AsString := F_Condominio.edtTelefone.Text;

loQry.ParamByName('PCELULAR' ).AsString := F_Condominio.edtCelular.Text;

loQry.ParamByName('PQTDEAPT' ).AsInteger := StrToInt(F_Condominio.edtQtdeApt.Text);

loQry.ParamByName('PAPTINICIAL' ).AsInteger := StrToInt(F_Condominio.edtAptInicial.Text);

loQry.ParamByName('PAPTFINAL' ).AsInteger := StrToInt(F_Condominio.edtAptFinal.Text);

loQry.ParamByName('PINICIOCONTRATO' ).AsDate := StrToDate(F_Condominio.edtInicioContrato.Text);

loQry.ParamByName('PFIMCONTRATO' ).AsDate := StrToDate(F_Condominio.edtFimContrato.Text);

//loQry.ParamByName('PVRLCONDOMINIO' ).AsFloat := StrToFloat(F_Condominio.EdtValor.Text);

loQry.ParamByName('PVLRCONDOMINIO' ).AsFloat := 60.00;

loQry.ParamByName('PVENCIMENTO' ).AsInteger := StrToInt(F_Condominio.edtVencimento.Text);

LoQry.ParamByName('POPR' ).AsString := 'I';

loQry.ParamByName('PUSUARIO' ).AsInteger := 1;

loQry.ExecSQL();

except

On E: Exception do ShowMessage(E.Message)

end;

finally

FreeAndNil(loqry);

end;

end;

Editado por nsouza
Link para o comentário
Compartilhar em outros sites

  • 0
Deu certo. No entando quando eu clico no botão salvar esta salvando dois registros

qual é o código que está no botão salvar ?

O codigo é este:

procedure TF_Modelo.ac_salvarExecute(Sender: TObject);

begin

TClientDataSet(Ds.DataSet).Post;

TClientDataSet(Ds.DataSet).ApplyUpdates(0);

PageControl1.ActivePage := tbConsulta;

end;

Link para o comentário
Compartilhar em outros sites

  • 0
Deu certo. No entando quando eu clico no botão salvar esta salvando dois registros

procedure TDM.Cds_CondominioBeforePost(DataSet: TDataSet);

procedure TF_Modelo.ac_salvarExecute(Sender: TObject);
begin
TClientDataSet(Ds.DataSet).Post;
TClientDataSet(Ds.DataSet).ApplyUpdates(0);
PageControl1.ActivePage := tbConsulta;
end;

Aparentemente o erro não está correlacionado com estas duas procedures, tente usar o debug do delphi e acompanhar a execução linha a linha para poder descobrir onde está o problema ... coloque um breakpoint a partir da linha de código:

TClientDataSet(Ds.DataSet).Post;

abraço e Feliz Ano Novo

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...