Delphi + firebird eOutOfMemory
01/03/2010
0
segue parte do codigo:
select ....
while select not Eof do begin
QSqlNovo.SQL.Text := 'INSERT INTO FO_FOTO (FO_ID, ...) '+
'VALUES (:FO_ID, ...)';
if not SelectAntigo.FieldByName('PSVEFO_ID').IsNull then
QSqlNovo.ParamByName('FO_ID').Value := SelectAntigo.FieldByName('PSVEFO_ID').Value;
QSqlNovo.ExecSQL;
QSqlNovo.Close;
Progresso.Position := Progresso.Position + 1;
SelectAntigo.Next;
inc(Registro);
end;
O que fazer nessa situação?!
utilizo Delphi 7 + Zeos + Firebird 2.0.
Wallace
Posts
01/03/2010
Thiago Santana
01/03/2010
Wallace
if Registro = 500 then begin
Registro := 0;
QSqlNovo.SQL.Text := 'COMMIT WORK';
QSqlNovo.ExecSQL;
QSqlNovo.Close;
ZNovo.Disconnect;
ZNovo.Connect;
end;
01/03/2010
Thiago Santana
var
X : integer; // Meu contador
begin
X := 0; //Zerei meu contador
Dm.TbCidadesParadox.First; //Primeiro registro da tabela
ProgressBar1.Max := Dm.TbCidadesParadox.RecordCount; //Meu progressBar
Dm.TbCidadesParadox.DisableControls;
while not Dm.TbCidadesParadox.eof do begin // Laço de repetição para chegar até o fim da tabela
Dm.QueryCidadesFire.Append; // Novo Registro
Dm.QueryCidadesFire.Fieldbyname('C_CODCIDADE').AsInteger := Dm.TbCidadesParadoxC_CODIGO.AsInteger;
Dm.QueryCidadesFire.FieldByName('C_CIDADE').AsString := Dm.TbCidadesParadoxC_LOCALIDADE.AsString;
Dm.QueryCidadesFire.FieldByName('C_UF').AsString := Dm.TbCidadesParadoxC_UF.AsString;
Dm.QueryCidadesFire.Post;
Label1.Caption := 'Cidade: ' + Dm.TbCidadesParadoxC_LOCALIDADE.AsString;
Label1.Repaint;
Dm.TbCidadesParadox.Next; //Vai para o próximo registro da tabela
ProgressBar1.Position := Dm.TbCidadesParadox.RecNo; //Coloca o progressBar para caminhar
Inc(x); // Incrementei meu contador vc pode utilizar X:= X + 1;
if X > 500 then begin // teste para gravar de 500 em 500 registros
Dm.QueryCidadesFire.IB_Transaction.CommitRetaining; // Utilizando meu componente de transição para gravar
X := 0; // Zerei meu contador para iniciar a contagem e gravar os próximos 500
end;
end;
// Caso não tenha menos de 500 registro irá gravar o restante Dm.TbCidadesParadox.EnableControls;
Dm.QueryCidadesFire.IB_Transaction.CommitRetaining;
Dm.QueryCidadesFire.Refresh; // Atualizei a tabela MessageDlg('Expotação de Cidades efetuada com sucesso!', mtInformation, mbOKCancel,0);
Label1.Caption:= 'Foram exportada(s) ' + (IntToStr (Dm.TbCidadesParadox.RecordCount)) + ' cidade(s).';
end; Essa eh uma exportação de dados de um Banco Paradox para Firebird! Com isso vc poderá resolver teu problema... espero ter ajudado!
Clique aqui para fazer login e interagir na Comunidade :)