Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Hintz

Firebird não grava alguns registros

Recommended Posts

Utilizo o Delhi 7 e Firebird 2.0 utilizo o Zeos para conectar no banco de dados firebird.

Tenho a seguinte rotina para incluir uma Ordem Serviço:
DMArq.zConexao.StartTransaction;

StrSql :=
'Insert into Orcam_Dados_001' +
'(PedNum, PedDat, PedCfo) values ' +
'(:vpPedNum, :vpPedDat, :vpPedCfo)';

DMArq.zqTrans.SQL.Clear;
DMArq.zqTrans.Sql.Add(StrSql);

DMArq.zqTrans.ParamByName('vpPedNum').Value := NrVenda;
DMArq.zqTrans.ParamByName('vpPedDat').asDate := Date;
DMArq.zqTrans.ParamByName('vpPedCfo').asString := 'C';

ok := true;

DMArq.zqTrans.ExecSQL;

DMArq.zConexao.Commit;

Numa tabela temporaria eu digito as informações da Ordem de Serviço.( DMArqVen.qOrcamento)
Apos digitação eu gravo.

DMArq.zConexao.StartTransaction;


iConta := 0;

oCpf := DMArqVen.qOrcamento.FieldByName('VenNum').asString;

StrSql :=
'Update Orcam_Dados_' + Cod_Emp + ' Set ' +
'PedNom = :vPedNom, ' +
'PedNum = :vPedNum, ' +
'PedCli = :vPedCli, ' +
'PedDat = :vPedDat, ' +
'PedEnd = :vPedEnd, ' +
'PedBai = :vPedBai, ' +
'PedCid = :vPedCid, ' +
'PedCfo = :vPedCfo, ' +
'PedVen = :vPedVen, ' +
'PedFon = :vPedFon, ' +
'PedObs = :vPedObs, ' +
'PedObs1 = :vPedObs1, ' +
'PedNop = :vPedNop, ' +
'PedVct = :vPedVct, ' +
'PedVda = :vPedVda, ' +
'PedPda = :vPedPda, ' +
'PedTot = :vPedTot, ' +

'PedVlr1 = :vPedVlr1, ' +
'PedVct1 = :vPedVct1, ' +
'PedSer1 = :vPedSer1, ' +
'PedEfi1 = :vPedEfi1, ' +
'PedBco1 = :vPedBco1, ' +
'PedChe1 = :vPedChe1, ' +

'PedVlr2 = :vPedVlr2, ' +
'PedVct2 = :vPedVct2, ' +
'PedSer2 = :vPedSer2, ' +
'PedEfi2 = :vPedEfi2, ' +
'PedBco2 = :vPedBco2, ' +
'PedChe2 = :vPedChe2, ' +

'PedVlr3 = :vPedVlr3, ' +
'PedVct3 = :vPedVct3, ' +
'PedSer3 = :vPedSer3, ' +
'PedEfi3 = :vPedEfi3, ' +
'PedBco3 = :vPedBco3, ' +
'PedChe3 = :vPedChe3, ' +

'PedVlr4 = :vPedVlr4, ' +
'PedVct4 = :vPedVct4, ' +
'PedSer4 = :vPedSer4, ' +
'PedEfi4 = :vPedEfi4, ' +
'PedBco4 = :vPedBco4, ' +
'PedChe4 = :vPedChe4, ' +

'PedVlr5 = :vPedVlr5, ' +
'PedVct5 = :vPedVct5, ' +
'PedSer5 = :vPedSer5, ' +
'PedEfi5 = :vPedEfi5, ' +
'PedBco5 = :vPedBco5, ' +
'PedChe5 = :vPedChe5, ' +

'PedVlr6 = :vPedVlr6, ' +
'PedVct6 = :vPedVct6, ' +
'PedSer6 = :vPedSer6, ' +
'PedEfi6 = :vPedEfi6, ' +
'PedBco6 = :vPedBco6, ' +
'PedChe6 = :vPedChe6, ' +

'PedVlr7 = :vPedVlr7, ' +
'PedVct7 = :vPedVct7, ' +
'PedSer7 = :vPedSer7, ' +
'PedEfi7 = :vPedEfi7, ' +
'PedBco7 = :vPedBco7, ' +
'PedChe7 = :vPedChe7, ' +

'PedVlr8 = :vPedVlr8, ' +
'PedVct8 = :vPedVct8, ' +
'PedSer8 = :vPedSer8, ' +
'PedEfi8 = :vPedEfi8, ' +
'PedBco8 = :vPedBco8, ' +
'PedChe8 = :vPedChe8, ' +

'PedVlr9 = :vPedVlr9, ' +
'PedVct9 = :vPedVct9, ' +
'PedSer9 = :vPedSer9, ' +
'PedEfi9 = :vPedEfi9, ' +
'PedBco9 = :vPedBco9, ' +
'PedChe9 = :vPedChe9, ' +

'PedVlr10 = :vPedVlr10, ' +
'PedVct10 = :vPedVct10, ' +
'PedSer10 = :vPedSer10, ' +
'PedEfi10 = :vPedEfi10, ' +
'PedBco10 = :vPedBco10, ' +
'PedChe10 = :vPedChe10, ' +

'PedVlr11 = :vPedVlr11, ' +
'PedVct11 = :vPedVct11, ' +
'PedSer11 = :vPedSer11, ' +
'PedEfi11 = :vPedEfi11, ' +
'PedBco11 = :vPedBco11, ' +
'PedChe11 = :vPedChe11, ' +

'PedVlr12 = :vPedVlr12, ' +
'PedVct12 = :vPedVct12, ' +
'PedSer12 = :vPedSer12, ' +
'PedEfi12 = :vPedEfi12, ' +
'PedBco12 = :vPedBco12, ' +
'PedChe12 = :vPedChe12, ' +

'PedVlr13 = :vPedVlr13, ' +
'PedVct13 = :vPedVct13, ' +
'PedSer13 = :vPedSer13, ' +
'PedEfi13 = :vPedEfi13, ' +
'PedBco13 = :vPedBco13, ' +
'PedChe13 = :vPedChe13, ' +

'PedVlr14 = :vPedVlr14, ' +
'PedVct14 = :vPedVct14, ' +
'PedSer14 = :vPedSer14, ' +
'PedEfi14 = :vPedEfi14, ' +
'PedBco14 = :vPedBco14, ' +
'PedChe14 = :vPedChe14, ' +

'PedVlr15 = :vPedVlr15, ' +
'PedVct15 = :vPedVct15, ' +
'PedSer15 = :vPedSer15, ' +
'PedEfi15 = :vPedEfi15, ' +
'PedBco15 = :vPedBco15, ' +
'PedChe15 = :vPedChe15 ' +
'where PedNum = :vPedNum ';

DMArq.zqTransD.SQL.Clear;
DMArq.zqTransD.Sql.Add(StrSql);

DMArq.zqTransD.ParamByName('vPedNom').asString := DMArqVen.qOrcamento.FieldByName('VenNcl').asString;
DMArq.zqTransD.ParamByName('vPedNum').asInteger := DMArqVen.qOrcamento.FieldByName('VenNum').asInteger;
DMArq.zqTransD.ParamByName('vPedCli').asFloat := DMArqVen.qOrcamento.FieldByName('VenCcl').asFloat;
DMArq.zqTransD.ParamByName('vPedDat').asDate := StrToDate(DMArqVen.qOrcamento.FieldByName('VenDat').asString);
DMArq.zqTransD.ParamByName('vPedEnd').asString := DMArqVen.qOrcamento.FieldByName('VenEnd').asString;
DMArq.zqTransD.ParamByName('vPedBai').asString := DMArqVen.qOrcamento.FieldByName('VenBai').asString;
DMArq.zqTransD.ParamByName('vPedCid').asString := DMArqVen.qOrcamento.FieldByName('VenCid').asString;
DMArq.zqTransD.ParamByName('vPedCfo').asString := 'C';
DMArq.zqTransD.ParamByName('vPedVen').asFloat := DMArqVen.qOrcamento.FieldByName('VenVen').asFloat;
DMArq.zqTransD.ParamByName('vPedFon').asString := DMArqVen.qOrcamento.FieldByName('VenFone').asString;
DMArq.zqTransD.ParamByName('vPedObs').asString := DMArqVen.qOrcamento.FieldByName('VenObs').asString;
DMArq.zqTransD.ParamByName('vPedObs1').asString := DMArqVen.qOrcamento.FieldByName('VenObs1').asString;
DMArq.zqTransD.ParamByName('vPedNop').asString := DMArqVen.qOrcamento.FieldByName('VenNat').asString;
DMArq.zqTransD.ParamByName('vPedVct').asDate := StrToDate(lbData.Caption);

if DMArqVen.qOrcamento.FieldByName('VenNat').asString = 'D' then
DMArq.zqTransD.ParamByName('vPedVda').asString := 'D';

if SoOrcam = 'S' then
DMArq.zqTransD.ParamByName('vPedVda').asString := '*';

if pDes <> 0 then
DMArq.zqTransD.ParamByName('vPedPda').asFloat := (pDes * -1)
else if pAcr <> 0 then
DMArq.zqTransD.ParamByName('vPedPda').asFloat := pAcr; ;

DMArq.zqTransD.ParamByName('vPedTot').asFloat := Stf(frmTotalizaOrcamento.ceVlr_Ccd.Text);

for x := 1 to 15 do
begin
DMArq.zqTransD.ParamByName('vPedVlr' + IntToStr(x)).asFloat := 0;
DMArq.zqTransD.ParamByName('vPedSer' + IntToStr(x)).asString := ' ';
DMArq.zqTransD.ParamByName('vPedEfi' + IntToStr(x)).asFloat := 0;

if NATOP_Orcam = '5102.20' then
DMArq.zqTransD.ParamByName('vPedBco' + IntToStr(x)).asString := '000'
else
DMArq.zqTransD.ParamByName('vPedBco' + IntToStr(x)).asString := '';

DMArq.zqTransD.ParamByName('vPedChe' + IntToStr(x)).asFloat := 0;
end;

if (DMArqVen.qOrcamento.FieldByName('VenNat').asString = 'P') or
(DMArqVen.qOrcamento.FieldByName('VenNat').asString = 'C') then
with frmDigDuplicatas.cdsDuplicata do
begin
First;
Conta := 0;
while not eof do
begin
inc(conta);
if conta > 15 then
break;
DMArq.zqTransD.ParamByName('vPedVct' + IntToStr(conta)).asDate := StrToDate(FieldByName('DtVcto').asString);
DMArq.zqTransD.ParamByName('vPedVlr' + IntToStr(conta)).asFloat := FieldByName('Valor').asFloat;
DMArq.zqTransD.ParamByName('vPedSer' + IntToStr(conta)).asString := FieldByName('Serie').asString;
DMArq.zqTransD.ParamByName('vPedBco' + IntToStr(conta)).asString := FieldByName('Bco').asString;
DMArq.zqTransD.ParamByName('vPedChe' + IntToStr(conta)).asFloat := FieldByName('Cheque').asFloat;

Next;
end;
end;

//ok := true;
try
DMArq.zqTransD.ExecSQL;
except
on E: Exception do
begin
inc(iConta);
erroO := e.Message;
MessageBox(0, pchar('Não foi possível gravar os dados!' + #13 + #13 + ErroO), 'Atenção!', MB_OK + MB_TOPMOST);
end;
end;
DMArq.zConexao.Commit;

A grande maioria as ordens de serviço gravam, algumas não gravam.
O que poderia ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo!

Nas que você conseguiu gravar, existe alguma coluna que não havia informação nos registros que você tentou gravar e apresentaram erro?

Outro ponto, quando apresentar a mensagem de erro, tente enviar a mensagem do erro para que fique fácil tentar compreende-lo e assim poder te ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.