Array
(
)

Erro ao Gravar

Roger1976
   - 29 jan 2006

Olá amigos...

Estou com um problema sério... Tenho uma tela onde faço as movimentações (entradas e saídas). O botão gravar faz toda a operação, ou seja, qdo dou entrada num item, ela é gravada, qdo dou uma saída, além da gravação, é feita tbem a movimentação no estoque (baixa ou entrada). O que ta pegando é na saída, principalmente qdo é necessário dar uma baixa. Qdo quero dar uma saida, na tela tem um radiobutton chamado saida. É exibida uma tela com itens pendentes, entao eu escolho um, os campos são preenchidos (dbedits, combobox). Ao clicar no gravar, aparece a mensagem ´saida efetuada com sucesso ´ (esta está correta), e em seguida, às vezes a partir da terceira ou quarta saida, aparece outra, que é:

´ is not a valid integer value

e o conteudo do dbeditSaida e do dbedtHoraSaida sao apagados.

Eu já tentei de várias formas, talvez olhando o codigo vcs possam descobrir onde está o erro....

try
TDS.TransactionID := 1;
TDS.IsolationLevel := xilREADCOMMITTED;

if EstoqueAtual >= strtoint(dbedtQtdeSai.Text) then
(estoqueatual é uma variavel que recebe o estoque atual do item que vem da tabela estoque)
begin
with dmEstoque.cdsBaixaEstoque do
begin
close;
Params.ParamByName(´EST´).AsInteger := strtoint(dbedtQtdeSai.Text);
Params.ParamByName(´CODCART´).AsInteger := CodigoCartucho;
execute;
end;

end;

with dmMovimentacao.cdsMovimentacao do
begin
dmConexao.sqlConexao.StartTransaction(TDS);
edit;
FieldByName(´DT_SAIDA´).AsDateTime := dtpDtSaida.DateTime;
FieldByName(´HR_SAIDA´).AsDateTime := time;
FieldByName(´QTDE_ENT´).AsInteger := strtoint(dbedtQtdeEnt.Text);
FieldByName(´QTDE_SAI´).AsInteger := strtoint(dbedtQtdeSai.Text);
FieldByName(´QTDE_PEND´).AsInteger := Pendentes;

Execute;

if Pendentes = 0 then
begin
FieldByName(´STATUS´).AsString := ´R´;
Application.MessageBox(´Saída efetuada com sucesso!´, ´ Saída´,
MB_OK + MB_ICONINFORMATION);
end
else

dmConexao.sqlConexao.Commit(TDS);
ApplyUpdates(0);
Refresh;

end

except
on E : Exception do
begin
dmConexao.sqlConexao.Rollback(TDS);
ShowMessage(E.Message);
end;
end;

É claro que tem mais linhas de código, porém é só a parte da baixa que esta gerando a mensagem que mencionei acima.

Tudo precisando muito da ajuda de vcs, pois preciso entregar o sistema até segunda, e só falta corrigir este bug...

Estou no aguardo.

Um abraço a todos...


Roger1976
   - 29 jan 2006


Citação:
Olá amigos...

Estou com um problema sério... Tenho uma tela onde faço as movimentações (entradas e saídas). O botão gravar faz toda a operação, ou seja, qdo dou entrada num item, ela é gravada, qdo dou uma saída, além da gravação, é feita tbem a movimentação no estoque (baixa ou entrada). O que ta pegando é na saída, principalmente qdo é necessário dar uma baixa. Qdo quero dar uma saida, na tela tem um radiobutton chamado saida. É exibida uma tela com itens pendentes, entao eu escolho um, os campos são preenchidos (dbedits, combobox). Ao clicar no gravar, aparece a mensagem ´saida efetuada com sucesso ´ (esta está correta), e em seguida, às vezes a partir da terceira ou quarta saida, aparece outra, que é:

´ is not a valid integer value

e o conteudo do dbeditSaida e do dbedtHoraSaida sao apagados.

Eu já tentei de várias formas, talvez olhando o codigo vcs possam descobrir onde está o erro....

try
TDS.TransactionID := 1;
TDS.IsolationLevel := xilREADCOMMITTED;

if EstoqueAtual >= strtoint(dbedtQtdeSai.Text) then
(estoqueatual é uma variavel que recebe o estoque atual do item que vem da tabela estoque)
begin
with dmEstoque.cdsBaixaEstoque do
begin
close;
Params.ParamByName(´EST´).AsInteger := strtoint(dbedtQtdeSai.Text);
Params.ParamByName(´CODCART´).AsInteger := CodigoCartucho;
execute;
end;

end;

with dmMovimentacao.cdsMovimentacao do
begin
dmConexao.sqlConexao.StartTransaction(TDS);
edit;
FieldByName(´DT_SAIDA´).AsDateTime := dtpDtSaida.DateTime;
FieldByName(´HR_SAIDA´).AsDateTime := time;
FieldByName(´QTDE_ENT´).AsInteger := strtoint(dbedtQtdeEnt.Text);
FieldByName(´QTDE_SAI´).AsInteger := strtoint(dbedtQtdeSai.Text);
FieldByName(´QTDE_PEND´).AsInteger := Pendentes;

Execute;

if Pendentes = 0 then
begin
FieldByName(´STATUS´).AsString := ´R´;
Application.MessageBox(´Saída efetuada com sucesso!´, ´ Saída´,
MB_OK + MB_ICONINFORMATION);
end
else

dmConexao.sqlConexao.Commit(TDS);
ApplyUpdates(0);
Refresh;

end

except
on E : Exception do
begin
dmConexao.sqlConexao.Rollback(TDS);
ShowMessage(E.Message);
end;
end;

É claro que tem mais linhas de código, porém é só a parte da baixa que esta gerando a mensagem que mencionei acima.

Tudo precisando muito da ajuda de vcs, pois preciso entregar o sistema até segunda, e só falta corrigir este bug...

Estou no aguardo.

Um abraço a todos...




AH, eu me esqueci, estou usando interbase + dbexpress + clientdataset