You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

167 lines
4.4 KiB

unit ufrmDigito9;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, System.Math,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, umstMaster, Vcl.ComCtrls, Vcl.StdCtrls,
Data.DB, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids, ZAbstractRODataset,
ZAbstractDataset, ZDataset;
type
TfrmDigito9 = class(TmstMaster)
dtsTelefones: TDataSource;
ProgressBar1: TProgressBar;
lbl_tel: TLabel;
lbl_tel2: TLabel;
Timer1: TTimer;
DBGrid1: TDBGrid;
qryTelefones: TZQuery;
qryTelefonesID_TELEFONE: TIntegerField;
qryTelefonesID_DEVEDOR: TIntegerField;
qryTelefonesNR_DDD: TWideStringField;
qryTelefonesNR_NUMERO: TWideStringField;
qryTelefonesTP_ATIVO: TWideStringField;
qryTelefonesTP_TIPOTEL: TWideStringField;
qryTelefonesTX_DESC: TWideStringField;
qryTelefonesTX_OBS: TWideMemoField;
qryTelefonesID_ULTIMO_USUARIO: TIntegerField;
qryTelefonesDT_HORA_ULTIMA_ATT: TDateTimeField;
procedure Timer1Timer(Sender: TObject);
private
procedure Arrumatel;
{ Private declarations }
public
{ Public declarations }
end;
var
frmDigito9: TfrmDigito9;
implementation
{$R *.dfm}
uses udtmSystem;
procedure TfrmDigito9.Arrumatel;
var
numero: string;
a, b: Integer;
begin
Screen.Cursor := crHourGlass;
lbl_tel.Caption := 'Abrindo tabela de Telefones...';
lbl_tel.Left := 192 - floor(lbl_tel.Width / 2);
with dtmSystem do
begin
if tblDevedores.Active then
begin
tblDevedores.Close;
end;
qryTelefones.Open;
qryTelefones.First;
b := qryTelefones.RecordCount;
ProgressBar1.Max := b;
ProgressBar1.Step := 1;
ProgressBar1.Position := 0;
a := 1;
lbl_tel.Caption := 'Processando...';
lbl_tel.Left := 192 - floor(lbl_tel.Width / 2);
lbl_tel2.Caption := 'Telefone ' + inttostr(a) + ' de ' + inttostr(b);
lbl_tel2.Left := 192 - floor(lbl_tel2.Width / 2);
while not qryTelefones.Eof do
begin
lbl_tel2.Caption := 'Telefone ' + inttostr(a) + ' de ' + inttostr(b);
lbl_tel2.Left := 192 - floor(lbl_tel2.Width / 2);
numero := qryTelefonesNR_NUMERO.AsString;
try
numero := FormatTelefone(numero);
qryTelefones.Edit;
qryTelefonesNR_NUMERO.AsString := numero;
if length(numero) = 9 then
begin
qryTelefonesTP_TIPOTEL.AsString := 'F';
end;
if length(numero) = 10 then
begin
qryTelefonesTP_TIPOTEL.AsString := 'M';
end;
qryTelefones.Post;
except
on E: Exception do
begin
qryTelefones.Edit;
qryTelefonesTX_OBS.AsString := qryTelefonesTX_OBS.AsString +
sLineBreak + 'Número possivelmente inválido';
qryTelefones.Post;
end;
end;
qryTelefones.Next;
a := a + 1;
ProgressBar1.Position := a;
Application.ProcessMessages;
end;
qryTelefones.Close;
end;
lbl_tel.Caption := 'Terminou.';
lbl_tel.Left := 192 - floor(lbl_tel.Width / 2);
Screen.Cursor := crDefault;
end;
//function TfrmDigito9.FormatTelefone(telefone: string): string;
//var
// digito: Integer;
//begin
// telefone := StringReplace(telefone, '(', '', [rfReplaceAll, rfIgnoreCase]);
// telefone := StringReplace(telefone, ')', '', [rfReplaceAll, rfIgnoreCase]);
// telefone := StringReplace(telefone, '-', '', [rfReplaceAll, rfIgnoreCase]);
// telefone := StringReplace(telefone, ' ', '', [rfReplaceAll, rfIgnoreCase]);
// if length(telefone) = 8 then
// begin
// digito := strtoint(copy(telefone, 1, 1));
// case digito of
// 2, 3, 4, 5:
// begin
// telefone := copy(telefone, 1, 4) + '-' + copy(telefone, 5, 4);
// end;
// 6, 7, 8, 9:
// begin
// telefone := '9' + copy(telefone, 1, 4) + '-' + copy(telefone, 5, 4);
// end;
// 1:
// begin
// telefone := '';
// end;
// end;
// end
// else
// begin
// if strtoint(copy(telefone, 1, 1)) = 9 then
// begin
// telefone := copy(telefone, 1, 5) + '-' + copy(telefone, 6, 4);
// end
// else
// begin
// telefone := '';
// end;
// end;
// if telefone <> '' then
// begin
// Result := telefone;
// end
// else
// begin
// raise Exception.Create('Número de telefone inválido.');
// end;
//end;
procedure TfrmDigito9.Timer1Timer(Sender: TObject);
begin
inherited;
Timer1.Enabled := False;
Arrumatel;
end;
end.