Tenho duas rotinas, com uma consigo gravar com a outra NÃO, estão as duas aqui, se alguém puder me ajudar, estou descabelando e não consigo ver onde pode estar errado. grato Stainle.
com a rotina abaixo NÃO gravo no Firebird : begin if CheckBox5.Checked then begin SQLConn1.Connected := False; SQLConn1.Connected := True; td.TransactionID := Cardinal('7' + FormatDateTime ('ddmmyyyy', date) + FormatDateTime('hhmmss', Time)); td.IsolationLevel := xilREADCOMMITTED; SQLConn1.StartTransaction(td); conta := 1; conto := 0; QueTabela.Close; QueTabela.SQL.Clear; QueTabela.SQL.Add('delete from similar'); QueTabela.ExecSQL; SQLConn1.Commit(td); SQLConn1.Connected := False; SQLConn1.Connected := True; if FileExists('c:\remoto\geral\txtsim.txt') then begin SQLConn1.StartTransaction(td); AssignFile(aa, 'c:\remoto\geral\txtsim.txt'); reset(aa); While not eof(aa) do begin readln(aa, linha); Label1.Caption := 'Atualizando SIMILAR ' + copy(linha, 1, 10); wsequencial := conta; wnrofor01 := copy(linha, 17, 34); wforne01 := copy(linha, 14, 3); wcodigo01 := copy(linha, 1, 10); wnforcomp01 := copy(linha, 51, 30); wnrofor02 := copy(linha, 94, 34); wforne02 := copy(linha, 91, 3); wcodigo02 := copy(linha, 81, 10); wnforcomp02 := copy(linha, 128, 30); QueTabela.Close; QueTabela.SQL.Clear; QueTabela.SQL.Add('Insert into similar '); QueTabela.SQL.Add ('(sequencial, nrofor01, forne01, codigo01, nforcomp01 '); QueTabela.SQL.Add('nrofor02, forne02, codigo02, nforcomp02, tiposimi)'); QueTabela.SQL.Add(' values '); QueTabela.SQL.Add ('(:psequencial, :pnrofor01, :pforne01, :pcodigo01, :pnforcomp01, '); QueTabela.SQL.Add (':pnrofor02, :pforne02, :pcodigo02, :pnforcomp02, :ptiposimi)'); QueTabela.ParamByName ('psequencial').AsInteger := wsequencial; QueTabela.ParamByName ('pnrofor01').AsString := wnrofor01; QueTabela.ParamByName ('pforne01').AsString := wforne01; QueTabela.ParamByName ('pcodigo01').AsString := wcodigo01; QueTabela.ParamByName ('pnforcomp01').AsString := wnforcomp01; QueTabela.ParamByName ('pnrofor02').AsString := wnrofor02; QueTabela.ParamByName ('pforne02').AsString := wforne02; QueTabela.ParamByName ('pcodigo02').AsString := wcodigo02; QueTabela.ParamByName ('pnforcomp02').AsString := wnforcomp02; QueTabela.ParamByName ('ptiposimi').AsString := 'S'; try QueTabela.ExecSQL; Label2.Caption := 'gravou'; except Label3.Caption := 'não gravou'; end; inc(conta); Label2.Caption := 'Registros ..: ' + IntToStr(conta); inc(conto); if conto > 900 then begin conto := 0; Application.ProcessMessages; end; end; end; SQLConn1.Commit(td); Application.ProcessMessages; end; -------------------------------------------------- com a rotina abaixo GRAVO no Firebird : //--------- Similar SQLConn1.Connected := False; SQLConn1.Connected := True; conta := 0; conto := 0; CDSSimilar.Open; if FileExists('c:\remoto\geral\txtsim.txt') then begin CDSSimilar.First; While not (CDSSimilar.EOF) do begin CDSSimilar.Delete; end; CDSSimilar.ApplyUpdates(0); conta := 0; AssignFile(aa, 'c:\remoto\geral\txtsim.txt'); reset(aa); While not eof(aa) do begin readln(aa, linho); Label4.Caption := 'Atualizando SIMILAR ' + copy(linho, 1, 10); Label4.Refresh; inc(conta); CDSSimilar.Insert; CDSSimilarSequencial.Value := conta; CDSSimilarNrofor01.Value := copy(linho, 17, 34); CDSSimilarForne01.Value := copy(linho, 14, 3); CDSSimilarCodigo01.Value := copy(linho, 1, 10); CDSSimilarNforcomp01.Value := copy(linho, 51, 30); CDSSimilarNrofor02.Value := copy(linho, 94, 34); CDSSimilarForne02.Value := copy(linho, 91, 3); CDSSimilarCodigo02.Value := copy(linho, 81, 10); CDSSimilarNforcomp02.Value := copy(linho, 128, 30); CDSSimilar.Post; CDSSimilar.ApplyUpdates(0); Label2.Caption := 'Registros ..: ' + IntToStr(conta); Label2.Refresh; end; end; CDSSimilar.Close; Application.ProcessMessages; ShowMessage('Terminou');