Da pra otimizar este processo
Galera,
Tenho este processo abaixo, gostaria de saber se tem como eu otimizá-lo..
Agradeço a todos...
O código dispensa comentarios, porem quem nao entender só dar um toque que eu explico...
Obrigado
Tenho este processo abaixo, gostaria de saber se tem como eu otimizá-lo..
Agradeço a todos...
O código dispensa comentarios, porem quem nao entender só dar um toque que eu explico...
Obrigado
unit Principal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Gauges, DBTables, ExtCtrls;
type
TForm1 = class(TForm)
qryDados: TADOQuery;
adoConn: TADOConnection;
qryDadosDoc: TStringField;
qryDadosCliente: TStringField;
qryDadosTipo_End: TStringField;
qryDadosNum: TStringField;
qryDadosComplem: TStringField;
qryDadosCep: TStringField;
qryDadosBairro: TStringField;
qryDadosLocal: TStringField;
qryDadosCidade: TStringField;
qryDadosUf: TStringField;
qryDadosDDD: TStringField;
qryDadosTel: TStringField;
qryDadosData: TDateTimeField;
gp: TGauge;
btnGerar: TButton;
MainSession: TSession;
dbsPrincipal: TDatabase;
stpProxNumero: TStoredProc;
qryInsere: TADOQuery;
qryDadosEnde: TStringField;
Timer1: TTimer;
btnCancelar: TButton;
procedure btnGerarClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnCancelarClick(Sender: TObject);
private
mImportando, mCancela : Boolean;
function ProxNumero(prNmCampo: String): String;
function L_If( Condicao : Boolean; Valor1 , Valor2 : Variant ) : Variant;
function Aspas(cString: String): String;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.Aspas(cString: String): String;
var
mAspa, mAux: String;
mTamVar, nPos: Integer;
begin
if Pos( ´´´´ , cString ) > 0 then begin
mAspa := ´´´´ + ´+´ + ´´´´ + ´´´´ + ´´´´ + ´´´´ + ´+´ + ´´´´;
mTamVar := Length(cString);
for nPos := 1 to mTamVar do begin
if Copy(cString,nPos,1) = ´´´´ then
mAux := mAux + mAspa
else
mAux := mAux + cString[nPos]
end;
Result := ´´´´ + mAux + ´´´´;
end
else
Result := QuotedStr( cString );
end;
procedure TForm1.btnGerarClick(Sender: TObject);
var
mDDD, mTel : Array[1..5] of String;
mNrContrCli, mCpf, mNome, mCdCli, mEnd, mLog, mCep, mUF, mBairro, mCidade, MNro, mCompl : String;
mPasso : integer;
procedure LimpaArray;
var
i : byte;
begin
for i:= 1 to 5 do begin
mDDD[i] := ´´;
mTel[i] := ´´;
end;
mNrContrCli := ´´;
mCpf := ´´;
mNome := ´´;
mCdCli := ´´;
mEnd := ´´;
mLog := ´´;
mCep := ´´;
mUF := ´´;
mBairro := ´´;
mCidade := ´´;
MNro := ´´;
mCompl := ´´;
end;
begin
mImportando := True;
adoConn.Connected := True;
qryDados.Open;
gp.MaxValue := qryDados.RecordCount;
while not qryDados.Eof do begin
Application.ProcessMessages;
if mCancela then
Break;
LimpaArray;
mPasso := 0;
mCpf := qryDadosDoc.AsString;
while (not qryDados.Eof) and (mCpf = qryDadosDoc.AsString) do begin
Inc( mPasso );
case mPasso of
1 : begin
mNome := Copy(qryDadosCliente.AsString,1,40);
mNrContrCli := ProxNumero( ´NrContrCli´ );
mCdCli := ProxNumero( ´CdCli´ );
mCidade := Copy(qryDadosCidade.AsString,1,20);
mCep := Copy(qryDadosCep.AsString,1,8);
mUF := Copy(qryDadosUf.AsString,1,2);
mBairro := Copy(qryDadosBairro.AsString,1,20);
mEnd := Copy(qryDadosEnde.AsString, 1,40);
mLog := Copy(qryDadosTipo_End.AsString,1,10);
mCompl := Copy(qryDadosComplem.AsString,1,15);
MNro := Copy(qryDadosNum.AsString,1,6);
mDDD[mPasso] := qryDadosDDD.AsString;
mTel[mPasso] := qryDadosTel.AsString;
end;
2,3,4,5 : begin
mDDD[mPasso] := qryDadosDDD.AsString;
mTel[mPasso] := qryDadosTel.AsString;
end;
end;
gp.Progress := gp.Progress + 1;
qryDados.Next
end;
//Inserção na EndCli
with qryInsere , SQL do begin
Clear;
{ Insere na tabela de clientes }
Add( ´Insert Clientes(NrContrCli, CdCli, CdAtiv, CdOrig, NmCli, CPF, Situac, FisJur, DtInc, Etiqueta, CdStatus, CdTpCli)´ );
Add( ´Values( ´ );
Add( QuotedStr( mNrContrCli ) + ´ ,´ );
Add( QuotedStr( mCdCli ) + ´ ,´ );
Add( QuotedStr( ´001´ ) + ´ ,´ );
Add( QuotedStr( ´005´ ) + ´ ,´ );
Add( QuotedStr( mNome ) + ´ ,´ );
Add( QuotedStr( mCpf ) + ´ ,´ );
Add( QuotedStr( ´A´ ) + ´ ,´ );
Add( QuotedStr( ´F´ ) + ´ ,´ );
Add( QuotedStr( FormatDateTime( ´yyyy-mm-dd´ , Date() ) ) + ´ ,´ );
Add( QuotedStr( ´S´ ) + ´ ,´ );
Add( QuotedStr( ´01´ ) + ´ ,´ );
Add( QuotedStr( ´01´ ) );
Add( ´)´ );
Add( ´´ );
{ Insere na tabela de endereco de cliente }
Add( ´Insert EndCli ( NrContrCli, ClassifEnd, NrSeq, CdLog, Ender, Nro, Compl, Bairro, Cidade, Estado, Cep, DDD, Tel1, LocTel1, DDD2, LocTel2, Tel2, DDD3, LocTel3, Tel3, Fax, DDDCdBip, CdBip ) Values (´ );
Add( QuotedStr( mNrContrCli ) + ´,´ );
Add( QuotedStr(´1´) + ´,´ );
Add( QuotedStr( ´01´ ) + ´,´ );
Add( QuotedStr( mLog ) + ´,´ );
Add( Aspas( mEnd ) + ´,´ );
Add( QuotedStr( MNro ) + ´,´ );
Add( L_If( mCompl <> ´´, QuotedStr( mCompl ) , ´NULL´ ) + ´,´ );
Add( Aspas( mBairro ) + ´,´ );
Add( Aspas( mCidade ) + ´,´ );
Add( QuotedStr( mUF ) + ´,´ );
Add( QuotedStr( mCep ) + ´,´ );
Add( L_if( mddd[1] <> ´´ , QuotedStr( mDDD[1] ) , ´NULL´ ) + ´,´ );
Add( L_if( mTel[1] <> ´´ , QuotedStr( mTel[1] ) , ´NULL´ ) + ´,´ );
Add( L_if( mddd[1] <> ´´ , QuotedStr( ´R´ ) , ´NULL´ ) + ´,´ );
Add( L_if( mddd[2] <> ´´ , QuotedStr( mDDD[2] ) , ´NULL´ ) + ´,´ );
Add( L_if( mddd[2] <> ´´ , QuotedStr( ´R´ ) , ´NULL´ ) + ´,´ );
Add( L_if( mTel[2] <> ´´ , QuotedStr( mTel[2] ) , ´NULL´ ) + ´,´ );
Add( L_if( mddd[3] <> ´´ , QuotedStr( mDDD[3] ) , ´NULL´ ) + ´,´ );
Add( L_if( mddd[3] <> ´´ , QuotedStr( ´R´ ) , ´NULL´ ) + ´,´ );
Add( L_if( mTel[3] <> ´´ , QuotedStr( mTel[3] ) , ´NULL´ ) + ´,´ );
Add( L_if( mTel[4] <> ´´ , QuotedStr( mTel[4] ) , ´NULL´ ) + ´,´ );
Add( L_if( mddd[5] <> ´´ , QuotedStr( mDDD[5] ) , ´NULL´ ) + ´,´ );
Add( L_if( mTel[5] <> ´´ , QuotedStr( mTel[5] ) , ´NULL´ ) );
Add( ´)´ );
Add( ´´ );
{ Insere na tabela de inseridos da telefonica }
Add( ´Insert TbTemporaria Values( ´ + QuotedStr( mCpf ) + ´ )´ );
ExecSQL;
end;
end; //qryDados
adoConn.Connected := False;
qryDados.Close;
gp.Progress := 0;
mImportando := False;
if mCancela then
Close;
end;
function TForm1.L_If(Condicao: Boolean; Valor1, Valor2: Variant): Variant;
begin
if Condicao then
Result := Valor1
else
Result := Valor2;
end;
function TForm1.ProxNumero(prNmCampo: String): String;
begin
with stpProxNumero do begin
ParamByName(´@Campo´).AsString := prNmCampo;
try
ExecProc;
except
ProxNumero := ProxNumero(prNmCampo);
Exit;
end;
ProxNumero := ParamByName(´@ProxNumero´).AsString;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if mImportando then Exit;
btnGerar.Click;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
mImportando := False;
mCancela := False;
end;
procedure TForm1.btnCancelarClick(Sender: TObject);
begin
mCancela := True;
end;
end.Tremonti
Curtidas 0
Respostas
Tremonti
02/06/2009
Alguem
GOSTEI 0