Menssagem de Erro ao Insertar

Delphi

30/09/2013

estou com problema ao inserta apareçe essa mensagem de erro tbl_clientes cannot modify a read-only dataset o que devo fazer?
Felipe Barlera

Felipe Barlera

Curtidas 0

Respostas

Deivison Melo

Deivison Melo

30/09/2013

Qual a engine de acesso a dados que está utilizando?

GOSTEI 0
Felipe Barlera

Felipe Barlera

30/09/2013

fiz conexão componetes do DbExpress :
SQLTable,DataSource,DataSetProvider,ClientDataSet dentro da form coloque um SqlTable Para fica de Auxiliar para inserta codigo automatico .
GOSTEI 0
Deivison Melo

Deivison Melo

30/09/2013

Insert tem que ser feito através do clientDataset.
GOSTEI 0
Deivison Melo

Deivison Melo

30/09/2013

Exemplo abaixo:

procedure TDM.CadastroEmpresa(RazaoSocial, Logradouro, Bairro,
  Cidade, Fone, Fax, Documento: String);
var
  strSQL: String;
begin
  strSQL:='';
  strSQL:='insert into empresas (razao_social_empresa, logradouro_empresa, bairro_empresa, cidade_empresa, fone_empresa, fax_empresa, documento_empresa) '+
          'values (:razao_social_empresa, :logradouro_empresa, :bairro_empresa, :cidade_empresa, :fone_empresa, :fax_empresa, :documento_empresa)';

  cdsEmpresas.Close;
  cdsEmpresas.CommandText:=strSQL;
  cdsEmpresas.CreateDataSet;
  cdsEmpresas.Insert;
  cdsEmpresas.Params.ParamByName('razao_social_empresa').AsString:=RazaoSocial;
  cdsEmpresas.Params.ParamByName('logradouro_empresa').AsString:=Logradouro;
  cdsEmpresas.Params.ParamByName('bairro_empresa').AsString:=Bairro;
  cdsEmpresas.Params.ParamByName('cidade_empresa').AsString:=Cidade;
  cdsEmpresas.Params.ParamByName('fone_empresa').AsString:=Fone;
  cdsEmpresas.Params.ParamByName('fax_empresa').AsString:=fax;
  cdsEmpresas.Params.ParamByName('documento_empresa').AsString:=Documento;
  cdsEmpresas.Execute;
  cdsEmpresas.ApplyUpdates(0);
  cdsEmpresas.Close;
end;



Para dar o insert depois, basta chamar o método criado da seguinte forma:
begin
    DM.CadastroEmpresa(edtRazaoSocial.Text, edtLogradouro.Text, edtCidade.Text, edtCidade.Text, EdtFone.Text, edtFax.Text, edtCNPJ.Text);end;
end;


Obs. Para conseguir usar a instrução sql direto no clientdataset, deverá habilitar a property: poAllowCommandText para: True do DataSetProvider

Abração e bons códigos!!

GOSTEI 0
Deivison Melo

Deivison Melo

30/09/2013

Os componentes utilizados para o insert acima foram:

- SQLConnection;
- SQLDataSet;
- SQLDataSet;
- ClientDataSet;

Abração e bons códigos!!
GOSTEI 0
Felipe Barlera

Felipe Barlera

30/09/2013

P

reciso troc
a sqltable pelo cliente data set?
GOSTEI 0
Deivison Melo

Deivison Melo

30/09/2013

Retificando:

Os componentes utilizados para o insert acima foram:

- SQLConnection;
- SQLDataSet; // esse seria o equivalente ao que vc está usando, recomendo que utilize o SQLDataSet mesmo!
- DataSetProvider
- ClientDataSet.

Depois que fizer as ligações proceda com os devidos testes!!!



Abração e bons códigos!!
GOSTEI 0
Felipe Barlera

Felipe Barlera

30/09/2013

Consegui tira erro mais quando inserto nao da erro mais so que nao fica editavel
GOSTEI 0
Guilherme Messias

Guilherme Messias

30/09/2013

Se persistiu o erro "tbl_clientes: cannot modify a read-only dataset" procure o componente e que está dando o erro, vá nas propriedades (Object Inspector) dele e mude a propriedade RequestLive de False para True...
GOSTEI 0
Felipe Barlera

Felipe Barlera

30/09/2013

Obrigado a todos consegui fazer funciona aqui obrigado a todos
GOSTEI 0
Deivison Melo

Deivison Melo

30/09/2013

Encerrando o tópico!
GOSTEI 0
POSTAR