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');


Responder a