Erro ao Gravar

29/01/2006

0

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

Roger1976

Responder

Posts

29/01/2006

Roger1976

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


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar