Que erro é esse Access to table disabled because of previous

Delphi

23/03/2006

Amigos estou tentando sincronizar 2 tabelas 1 em firebird e outra com extenção DBF

pra fazer uma contagem de estoque..

Meu cliente usa um certo programa suas tabelas tem extenção .DBF

importo todos os dados da tabela Estoque.DBF para o meu banco de dados com o estoque = 0;
até aqui ta tudo perfeito.

ai faço a contagem pelo meu programa. Depois da contagem quero fazer a exportação somente do campo ´quantidade´ para a tabela estoque.DBF
A que quero atualizar é a DBF.



A primeira vez deu certo mas na segunda ta me dando esse erro

´Access to table disabled because of previous error.´


Alguem pode me dizer o que estou fazendo de errado?

desde ja agradeço

delphi 7.0 e firebird 1.5

table1.Close;
table1.DatabaseName :=Edit1.Text;
table1.TableName:= ´Estoque.dbf´;
table1.Open;
table1.First;


with IBQuery1 do
  begin
  close;
  sql.clear;
  sql.Add(´ Select * from estoquecontagem order by codigo ´);
  open;
  end;

IBQuery1.Open;
IBQuery1.First;
while table1.Eof = false do
  begin
  if table1CODIGO.text = IBQuery1CODIGO.Text then
    begin
    table1.Edit;
    table1QTD_ATUAL.Text := ´25´;//IBQuery1QTD_ATUAL.text;
    table1.Post;
    Application.ProcessMessages;
    LAbel1.Caption := table1DESCRICAO.Text;
    end;
    table1.Next;
    IBQuery1.Next;
  end;

table1.close;
showmessage(´OK´);

end;


[/list]



Marcusbraga

Marcusbraga

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

23/03/2006

tente diferente. ao invés de verificar se os registros coincidem, faça a atualização via SQL:
query1.close;
query1.sql.text := ´update from ´´Estoque.dbf´´ set qtd_atual = :qtd where codigo = :codigo ´;

with IBQuery1 do 
begin 
  close; 
  sql.text := ´Select * from estoquecontagem order by codigo´;
  Open;

  while not Eof do 
  begin
    query1.parambyame(´codigo´).asstring := fieldbyname(´CODIGO´).asstring;
    query1.parambyame(´qtd´).asfloat := fieldbyname(´QTD_ATUAL´).asfloat;
    query1.ExecSQL;

    Label1.Caption := fieldbyname(´DESCRICAO´).Text;
    Application.ProcessMessages; 

    Next; 
  end;
end; 

showmessage(´OK´);



GOSTEI 0
Marcusbraga

Marcusbraga

23/03/2006

Emerson obrigado pela resposta, assim da quase certo apesar de ser um pouco mais lento me parece ser uma atualização mais seguro do que ue tava fazendo, mas ainda tem um problema o banco de dados não esta sendo atualizado corre tudo certo mas o banco de dados .DBF não muda em nada

nao entendo muito de DBE pois trabalho com o firebird, não sei o que teria ainda de errado, estou conectando a query direto no banco de dados, databasename = C:\ESTOQUE é o caminho onde esta o Estoque.dbf eu não teria que ter uma table ou database para editar e gravar o estoque.dbf?

se sim como fazer isso?

Obrigado...


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

23/03/2006

faz muito temo (muito mesmo) que não trabalho mais com DBFs e acesso via BDE. de qualquer forma, tente alterar a propriedade RequestLive da query para True e veja se funciona.


GOSTEI 0
POSTAR