domingo, 14 de novembro de 2010

O Melhor Super Adiantamento de Aniversário que já tive.

A galera toda junta.





Eu, Mari e Mari (Meninas, amo vocês!)





Eu e o Brucutu Thiago Mulim (Sangue bom!)

quinta-feira, 21 de outubro de 2010

Palestra no CEFET Itaguaí

Galera! Hoje estive no CEFET em Itaguaí. Muito bom, os alunos corresponderam muito melhor do que poderia imaginar.



Espero encontrá-los novamente! Até a próxima!
Abs
Ney Trevas

quinta-feira, 16 de setembro de 2010

Validando um CPF ou CNPJ

Esta rotina valida um CPF ou CNPJ (CGC) digitado em um Edit.

No Code Editor, antes do último END. colocar:

function TForm1.TestaCpfCgc(Dado: string): String;
var
i: integer;
begin
for i:= 1 to length(Dado) do begin
if not (Dado[i] in ['0'..'9']) then delete(Dado,i,1);
end;
if ((length(Dado) <> 11) and (length(Dado) <> 14))then
MessageDlg('ATENÇÃO: O número informado NÃO representa' + #13 +
'um CPF ou CGC válido pelas regras da Receita Federal',mtWarning,[mbOK],0);
if length(Dado) = 14 then begin
if TestaCGC(Dado) then begin
insert('-',Dado,13);
insert('/',Dado,9);
insert('.',Dado,6);
insert('.',Dado,3);
end
else MessageDlg('O número informado NÃO representa um CGC' + #13 +
'válido pelas regras da Receita Federal', mtWarning, [mbOK], 0);
end;
if length(Dado) = 11 then begin
if TestaCPF(Dado) then begin
insert('-',Dado,10);
insert('.',Dado,7);
insert('.',Dado,4);
end
else
begin
MessageDlg('O número informado NÃO representa um CPF' + #13 +
'válido pelas regras da Receita Federal', mtWarning, [mbOK], 0);
edit#.clear;
edit#.SetFocus;
Dado := '';
end;
end;
Result := Dado;
end;

{Valida dígito verificador de CGC}
function TForm1.TestaCGC(Dado : string) : boolean;
var D1 : array[1..12] of byte;
I,
DF1,
DF2,
DF3,
DF4,
DF5,
DF6,
Resto1,
Resto2,
PrimeiroDigito,
SegundoDigito : integer;
begin
Result := true;
if Length(Dado) = 14 then
begin
for I := 1 to 12 do
if Dado[I] in ['0'..'9'] then
D1[I] := StrToInt(Dado[I])
else
Result := false;
if Result then
begin
DF1 := 0;
DF2 := 0;
DF3 := 0;
DF4 := 0;
DF5 := 0;
DF6 := 0;
Resto1 := 0;
Resto2 := 0;
PrimeiroDigito := 0;
SegundoDigito := 0;
DF1 := 5*D1[1] + 4*D1[2] + 3*D1[3] + 2*D1[4] + 9*D1[5] + 8*D1[6] +
7*D1[7] + 6*D1[8] + 5*D1[9] + 4*D1[10] + 3*D1[11] + 2*D1[12];
DF2 := DF1 div 11;
DF3 := DF2 * 11;
Resto1 := DF1 - DF3;
if (Resto1 = 0) or (Resto1 = 1) then
PrimeiroDigito := 0
else
PrimeiroDigito := 11 - Resto1;
DF4 := 6*D1[1] + 5*D1[2] + 4*D1[3] + 3*D1[4] + 2*D1[5] + 9*D1[6] +
8*D1[7] + 7*D1[8] + 6*D1[9] + 5*D1[10] + 4*D1[11] + 3*D1[12] +
2*PrimeiroDigito;
DF5 := DF4 div 11;
DF6 := DF5 * 11;
Resto2 := DF4 - DF6;
if (Resto2 = 0) or (Resto2 = 1) then
SegundoDigito := 0
else
SegundoDigito := 11 - Resto2;
if (PrimeiroDigito <> StrToInt(Dado[13])) or
(SegundoDigito <> StrToInt(Dado[14])) then
Result := false;
end;
end
else
if Length(Dado) <> 0 then
Result := false;
end;

{Valida dígito verificador de CPF}
function TForm1.TestaCPF(Dado : string) : boolean;
var D1 : array[1..9] of byte;
I,
DF1,
DF2,
DF3,
DF4,
DF5,
DF6,
Resto1,
Resto2,
PrimeiroDigito,
SegundoDigito : integer;
begin
Result := true;
if Length(Dado) = 11 then
begin
for I := 1 to 9 do
if Dado[I] in ['0'..'9'] then
D1[I] := StrToInt(Dado[I])
else
Result := false;
if Result then
begin
DF1 := 0;
DF2 := 0;
DF3 := 0;
DF4 := 0;
DF5 := 0;
DF6 := 0;
Resto1 := 0;
Resto2 := 0;
PrimeiroDigito := 0;
SegundoDigito := 0;
DF1 := 10*D1[1] + 9*D1[2] + 8*D1[3] + 7*D1[4] + 6*D1[5] + 5*D1[6] +
4*D1[7] + 3*D1[8] + 2*D1[9];
DF2 := DF1 div 11;
DF3 := DF2 * 11;
Resto1 := DF1 - DF3;
if (Resto1 = 0) or (Resto1 = 1) then
PrimeiroDigito := 0
else
PrimeiroDigito := 11 - Resto1;
DF4 := 11*D1[1] + 10*D1[2] + 9*D1[3] + 8*D1[4] + 7*D1[5] + 6*D1[6] +
5*D1[7] + 4*D1[8] + 3*D1[9] + 2*PrimeiroDigito;
DF5 := DF4 div 11;
DF6 := DF5 * 11;
Resto2 := DF4 - DF6;
if (Resto2 = 0) or (Resto2 = 1) then
SegundoDigito := 0
else
SegundoDigito := 11 - Resto2;
if (PrimeiroDigito <> StrToInt(Dado[10])) or
(SegundoDigito <> StrToInt(Dado[11])) then
Result := false;
end;
end
else
if Length(Dado) <> 0 then
Result := false;
end;

*************************************************

Para chamar esta rotina, devemos colocar no OnExit do edit o seguinte código:

begin
edit#.Text:= Form1.TestaCpfCgc(edit#.Text);
end;

lembrando que o # será substituído pelo múmero do edit que você digitará o CPF/CNPJ.

*************************************************
Para finalizar, devemos declarar as funções, para isso, vá, no início do código:

type
TForm1 = class(TForm)
.
.
.
private
{ Private declarations }
function TestaCpfCgc(Dado: string): String;
function TestaCGC(Dado : string) : boolean;
function TestaCPF(Dado : string) : boolean;
public
{ Public declarations }
end;

Pronto, é só rodar.
Abraços
Titio Trevas

Criticando / Validando Datas

Uma obrigação que todo programador deve ter é a validação de alguns campos na tela.
Vamos agora validar um campo DATA.

Evento Change (só para acrescentar as barras que separam o dia do mês e o mês do ano.

var vdata:string;
begin
if length(edit5.Text) = 8 then
begin
vdata:=edit5.Text;
insert('/',vdata,3);
insert('/',vdata,6);
edit5.Text:=vdata;
end;

end;

Lógica:
Você digitará apenas os números da data e o código formatará para você, acrescentando as barras.

Evento OnExit (Agora vamos validar a data)

begin
try
StrToDate(Edit5.Text);
except
on EConvertError do
begin
ShowMessage ('Data Inválida!');
edit5.Clear;
edit5.SetFocus;
end;
end;
end;

Obs: Isso só roda no executável fora do delphi (compile e rode). Para isto, basta dar o F9, sair do programa, ir na pasta onde o projeto está salvo e rodar o aplicativo.

Abraços
Titio Trevas

quinta-feira, 19 de agosto de 2010

Esse código é muito bom!

Segue agora um código extremamente importante para TODOS os grupos.

Exemplo da tela:



É preciso tirar os componentes de banco de dados. Os mesmos estarão no Data Module.


Obs1: O button1 é o OK
O button2 é o Verificar receita
O button3 é o Verificar receita no período

Obs2: A tabela no banco de dados se chama teste e só possui três campos: pgto, valor e data (tudo do tipo texto).

É preciso colocar o comando SQL no ADOQuery do Data Modulo:
Select * from teste

Vamos ao código:

*******************************************************************
procedure TForm1.Button1Click(Sender: TObject);
begin
DM.AdoQuery1.Append;
DM.AdoQuery1.FieldByName('pgto').value := combobox1.text;
DM.AdoQuery1.FieldByName('Valor').value := strtofloat(edit1.text);
DM.AdoQuery1.FieldByName('Data').value := edit2.text;
DM.AdoQuery1.post;
end;
********************************************************************
procedure TForm1.Button2Click(Sender: TObject);
var
vtot:Real;
begin
vtot:=0;
DM.AdoQuery1.Close;
DM.AdoQuery1.sql.clear;
DM.teste.sql.Add('Select sum(Valor) from teste where pgto = ' +chr(39)+'Dinheiro'+chr(39)+ 'and data = :dtespecifica');
DM.teste.Parameters.Parambyname('dtespecifica').value := Strtodate(edit2.text);
DM.AdoQuery1.Open;
if (DM.AdoQuery1.fields.fields[0].IsNull) then
label3.caption:='R$ 0,00'
else
begin
vtot:=vtot+DM.AdoQuery1.fields.fields[0].value;
label3.caption:=floattostrf(DM.AdoQuery1.fields.fields[0].value,ffCurrency,6,2);
end;

DM.AdoQuery1.Close;
DM.AdoQuery1.sql.clear;
DM.teste.sql.Add('Select sum(Valor) from teste where pgto = ' +chr(39)+'Cartão'+chr(39)+ 'and data = :dtespecifica');
DM.teste.Parameters.Parambyname('dtespecifica').value := Strtodate(edit2.text);
DM.AdoQuery1.Open;

if (DM.AdoQuery1.fields.fields[0].isnull) then
label5.caption:='R$ 0,00'
else
begin
vtot:=vtot+DM.AdoQuery1.fields.fields[0].value;
label5.caption:=floattostrf(DM.AdoQuery1.fields.fields[0].value,ffCurrency,6,2);
end;

DM.AdoQuery1.Close;
DM.AdoQuery1.sql.clear;
DM.teste.sql.Add('Select sum(Valor) from teste where pgto = ' +chr(39)+'Cheque'+chr(39)+ 'and data = :dtespecifica');
DM.teste.Parameters.Parambyname('dtespecifica').value := Strtodate(edit2.text);
DM.AdoQuery1.Open;

if (DM.AdoQuery1.fields.fields[0].isnull) then
label7.caption:='R$ 0,00'
else
begin
vtot:=vtot+DM.AdoQuery1.fields.fields[0].value;
label7.caption:=floattostrf(DM.AdoQuery1.fields.fields[0].value,ffCurrency,6,2);
end;

DM.AdoQuery1.Close;
DM.AdoQuery1.sql.clear;
DM.AdoQuery1.sql.Add('Select * from teste');
DM.AdoQuery1.Open;

label11.caption:=floattostrf(vtot,ffCurrency,6,2);

end;
****************************************************************************
procedure TForm1.Button3Click(Sender: TObject);
var
vtot:Real;
begin
vtot:=0;
DM.AdoQuery1.Close;
DM.AdoQuery1.sql.clear;
DM.teste.sql.Add('Select sum(Valor) from teste where pgto = ' +chr(39)+'Dinheiro'+chr(39)+ 'and data BETWEEN :dtinicial and :dtfinal');
DM.teste.Parameters.Parambyname('dtinicial').value := Strtodate(edit3.text);
DM.teste.Parameters.ParamByName('dtFinal').value := Strtodate(edit4.text);
DM.AdoQuery1.Open;
if (DM.AdoQuery1.fields.fields[0].isnull) then
label3.caption:='R$ 0,00'
else
begin
vtot:=vtot+DM.AdoQuery1.fields.fields[0].value;
label3.caption:=floattostrf(DM.AdoQuery1.fields.fields[0].value,ffCurrency,6,2);
end;

DM.AdoQuery1.Close;
DM.AdoQuery1.sql.clear;
DM.teste.sql.Add('Select sum(Valor) from teste where pgto = ' +chr(39)+'Cartão'+chr(39)+ 'and data BETWEEN :dtinicial and :dtfinal');
DM.teste.Parameters.Parambyname('dtinicial').value := Strtodate(edit3.text);
DM.teste.Parameters.ParamByName('dtFinal').value := Strtodate(edit4.text);
DM.AdoQuery1.Open;

if (DM.AdoQuery1.fields.fields[0].isnull) then
label5.caption:='R$ 0,00'
else
begin
vtot:=vtot+DM.AdoQuery1.fields.fields[0].value;
label5.caption:=floattostrf(DM.AdoQuery1.fields.fields[0].value,ffCurrency,6,2);
end;

DM.AdoQuery1.Close;
DM.AdoQuery1.sql.clear;
DM.teste.sql.Add('Select sum(Valor) from teste where pgto = ' +chr(39)+'Cheque'+chr(39)+ 'and data BETWEEN :dtinicial and :dtfinal');
DM.teste.Parameters.Parambyname('dtinicial').value := Strtodate(edit3.text);
DM.teste.Parameters.ParamByName('dtFinal').value := Strtodate(edit4.text);
DM.AdoQuery1.Open;

if (DM.AdoQuery1.fields.fields[0].isnull) then
label7.caption:='R$ 0,00'

else
begin
vtot:=vtot+DM.AdoQuery1.fields.fields[0].value;
label7.caption:=floattostrf(DM.AdoQuery1.fields.fields[0].value,ffCurrency,6,2);
end;

DM.AdoQuery1.Close;
DM.AdoQuery1.sql.clear;
DM.AdoQuery1.sql.Add('Select * from teste');
DM.AdoQuery1.Open;

label11.caption:=floattostrf(vtot,ffCurrency,6,2);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

domingo, 15 de agosto de 2010

Filtrando letra a letra com SQL

Não se esqueçam que é preciso colocar um ListBox e três Edits para este código.

procedure TForm1.Edit1Change(Sender: TObject);
begin
q1.Close;
q1.SQL.clear;
q1.SQL.add('Select * from cliente where nome like '+chr(39)+edit1.text+'%'+chr(39));
q1.open;
listbox1.Clear;
q1.first;
while not q1.eof do
begin
listbox1.items.add(q1.fields.fields[0].value);
q1.next;
end;

end;

procedure TForm1.FormActivate(Sender: TObject);
begin
q1.first;
while not q1.eof do
begin
listbox1.items.add(q1.fields.fields[0].value);
q1.next;
end;

end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
vnome:string;
begin
vnome:=listbox1.items[listbox1.Itemindex];
q1.Close;
q1.SQL.clear;
q1.SQL.add('Select * from cliente where nome ='+chr(39)+vnome+chr(39));
q1.open;
edit1.text:=q1.fields.fields[0].value;
edit2.text:=q1.fields.fields[1].value;
edit3.text:=q1.fields.fields[2].value;
end;

Para os alunos do 3º Ano Informática

Código de exemplo para efetuar uma venda.
Obs1: Não esqueça que este código deverá ser adaptado para suas necessidades.
Obs2: A variável TOTAL deve ser declarada na parte de declaração do FORM e não na PROCEDURE.

Exemplo da tela





var
Form1: TForm1;
total:real;
implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
vitem:real;
ncarac,x:integer;
result:string;

begin
vitem:=strtocurr(edit1.text);
edit1.text := FloatToStrF(vitem,ffCurrency,7,2);
ncarac:=length(combobox1.text);
for x:=1 to 10 do
begin
if x <= ncarac then
result := result + copy(combobox1.text, x, 1)
else
result := result + ' ';
end;

listbox1.Items.add(result+edit1.text);

total:= total + vitem;
label5.Caption := FloatToStrF(total,ffCurrency,7,2);

end;

procedure TForm1.ComboBox1Click(Sender: TObject);
begin
edit1.Clear;
end;

end.

sábado, 29 de maio de 2010

Palestra - Faculdade de Belford Roxo


Palestra realizada na Faculdade de Belford Roxo em 28/05/2010 pela 10ª Semana Acadêmica. Presentes os cursos de Pedagogia e Administração de Empresas e outros convidados.
Muito Bom! Público Excelente!