Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
c-guedes Profissional

Registrado: Terça-Feira, 31 de Mai de 2005 Mensagens: 502
|
Enviada: Seg Mai 10, 2010 8:10 pm Assunto: erro ao gravar dados dbexpress |
|
|
Saudações, é a primeira vez que uso o dbexpress, e para gravar os dados estou usando os seguintes componentes,
1 - SQLConection
2 - SQLQuery
3 - DataSorce
4 - SQLDataSet
aparece a seguinte mensagem: "cannot modify a read-only dataset"
Código: |
procedure TForm1.gravaemail(emailgravar: string);
begin
with dm.Qry_grava do
begin
Close;
SQL.Clear;
SQL.Add('select *from mail');
Open;
Append;
FieldByName('email').AsString := emailgravar;
Post;
end;
end;
|
_________________ Camargo Felis Guedes
"Posso todas as coisas naquele que me fortalece" flp. 4:13 |
|
Voltar ao Topo |
|
 |
vitor5 Novato

Registrado: Sábado, 4 de Março de 2006 Mensagens: 84
|
Enviada: Seg Mai 10, 2010 8:28 pm Assunto: |
|
|
Boa noite, uso dbExpress, só que uso TSimpleDataSet com um DataSource para as tabelas e consultas.
Ex:
dm.sdsPedidos.Post;
dm.sdsPedidos.ApplyUpdates(-1);
dm2.sdsQryPedidos.Refresh; (Aqui se você quiser atualizar dados de uma consulta após das o comando ApplyUpdates.
Tenta aí ..... |
|
Voltar ao Topo |
|
 |
c-guedes Profissional

Registrado: Terça-Feira, 31 de Mai de 2005 Mensagens: 502
|
Enviada: Seg Mai 10, 2010 9:51 pm Assunto: |
|
|
vitor5 escreveu: | Boa noite, uso dbExpress, só que uso TSimpleDataSet com um DataSource para as tabelas e consultas.
Ex:
dm.sdsPedidos.Post;
dm.sdsPedidos.ApplyUpdates(-1);
dm2.sdsQryPedidos.Refresh; (Aqui se você quiser atualizar dados de uma consulta após das o comando ApplyUpdates.
Tenta aí ..... |
também não funcionou continua com a mesma mensagem!!! _________________ Camargo Felis Guedes
"Posso todas as coisas naquele que me fortalece" flp. 4:13 |
|
Voltar ao Topo |
|
 |
vitor5 Novato

Registrado: Sábado, 4 de Março de 2006 Mensagens: 84
|
Enviada: Seg Mai 10, 2010 10:16 pm Assunto: |
|
|
Olha eu uso dbExpress com Firebird.
Uso um simpledataset e um datasource.
dm.sdsRecebimento.Append;
dm.sdsRecebimentoREGISTRO.AsInteger:=intRegistro;
dm.sdsRecebimentoNUM_PED2.AsInteger:=dm.sdsPedidosNUMERO_PEDIO.AsInteger;
dm.sdsRecebimentoLIQUIDADO.AsString:='N';
dm.sdsRecebimento.Post;
dm.sdsRecebimento.ApplyUpdates(-1)
Isto é um exemplo.
Qual é o erro que está acontecendo |
|
Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Ter Mai 11, 2010 10:41 am Assunto: |
|
|
Somente atente para o fato de que dm.sdsRecebimento.ApplyUpdates(-1) não resultará em mensagem de erro o que pode deixar vc sem saber o que fazer, o melhor seria tratar o erro nesta posição e usar controle de transação....
exemplo:
try
if tabela.state in [dsedit, dsinsert] then
begin
funcaochamatransacaoID;
post;
end
else
exit;
if tabela.ApplyUpdates(0) <> 0 then
begin
conexao.rollback(transacao);
mensagem_avisando_do_erro;
end;
except
on e: edatabaseerror do
begin
conexao.rollback(transacao);
mensagem_avisando_do_erro;
end;
end;
PS.: não sei se o pessoal utiliza assim, mas desta forma me atende, ainda há a tela de reconcile error que tb pode tratar outros erros decorrentes.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
Voltar ao Topo |
|
 |
|