class function TFuncoesClass.TratarDiasUteis(data: TDate): TDate;
// Tratar final de semana, sabado e domingo jogar para segunda feira
function TratarFinalSemana(data: TDate): TDate;
begin
// Domingo - > + 1 para ir para segunda
if (DayOfWeek(data) = 1) then
Result := IncDay(data, 1)
// Sabado - > + 2 para ir para segunda
else if (DayOfWeek(data) = 7) then
Result := IncDay(data, 2)
// Segunda, terça, quarta, quinta, sexta - feira , resutlar a própria data
else
Result := data;
end;
// tratar a data da pascoa, pois descobrindo a pascoa chegaremos a sexta feira santa
function SextaFeiraSanta(data: TDate): String;
var
dia,
mes,
ano: Word;
x,
y,
resto1,
resto2,
resto3,
resto4,
resto5 : integer;
diaMes,
diaMesAno: String;
begin
// Para calcular o dia da Páscoa (Domingo), usa-se a fórmula abaixo,
// onde o "ANO" deve ser introduzido com 4 dígitos.
// O operador MOD é o resto da divisão. A fórmula vale para anos entre 1901 e 2099.
// A fórmula pode ser estendida para outros anos, alterando X e Y conforme a tabela a seguir: olhar no site
// http://pt.wikipedia.org/wiki/C%C3%A1lculo_da_P%C3%A1scoa
ano := YearOf(data);
case ano of
2000..2099:
begin
x := 24;
Y := 5;
end;
2100..2199:
begin
x := 24;
y := 6;
end;
2200..2299:
begin
x := 25;
y := 7;
end;
end;
resto1 := ano mod 19;
resto2 := ano mod 4;
resto3 := ano mod 7;
resto4 := ((19 * resto1) + x) mod 30;
resto5 := ((2 * resto2) + (4 * resto3) + (6 * resto4) + y) mod 7;
if (resto4 + resto5) < 10 then
begin
dia := (resto4 + resto5 + 22);
mes := 3;
end
else
begin
dia := (resto4 + resto5 - 9);
mes := 4;
end;
diaMes := FormatFloat('00', dia) + '/' + FormatFloat('00', mes);
// 1. quando o domingo de Páscoa calculado for em 26 de Abril, corrige-se para uma semana antes, ou seja, 19 de Abril.
// 2. quando o domingo de Páscoa calculado for em 25 de Abril e d=28 e a>10, então a Páscoa é em 18 de Abril.
if (diaMes = '26/04') then
diaMes := '19/04'
else if (diaMes = '25/04') and (resto4 = 25) and (resto1 > 10) then
diaMes := '18/04';
// descobrimos a data da pascoa , agora temos que descontar 2 para chegar na sexta que seria a sexta-feria santa
diaMesAno := FormatDateTime('dd/mm/yyyy', IncDay(StrToDate(diaMes + '/' + formatFloat('0000', ano)), -2));
Result := diaMesAno;
end;
// corpus christi
function CorpusChristi(data: TDate): string;
var
sextaSanta: string;
begin
// Para calcular a Quinta-feira de Corpus Christi, soma-se 60 dias ao Domingo de Páscoa, 58 pois considera-se a sexta feira.
sextaSanta := SextaFeiraSanta(data);
Result := FormatDateTime('dd/mm/yyyy', IncDay(StrToDate(sextaSanta), 62));
end;
// Carnaval
function Carnaval(data: TDate): string;
var
sextaSanta: string;
begin
// Para calcular a Terça-feira de Carnaval, basta subtrair 47 dias do Domingo de Páscoa, 45 pois considera a sexta.
sextaSanta := SextaFeiraSanta(data);
Result := FormatDateTime('dd/mm/yyyy', IncDay(StrToDate(sextaSanta), - 45));
end;
var
dataAux: string;
begin
// Rotina que verifica se um determinado dia cai nos feriados relacionados abaixo:
// Se acaso cair, acrescentar sempre um dia a mais, não considerar sabados e domingos;
{01/01 - Confraternização Universal
21/04 - Tiradentes
01/05 - Dia do Trabalho
07/09 - Independência do Brasil
12/10 - Nossa Senhora Aparecida
02/11 - Finados
15/11 - Proclamação da República
25/12 - Natal
??/?? - Pascoa (a calcular) // rever (Sesxta-Feira Santa)
??/?? - Corpus Christi (a calcular) Para calcular a Quinta-feira de Corpus Christi, soma-se 60 dias ao Domingo de Páscoa.
??/?? - Feriado carnaval (a calcular) Para calcular a Terça-feira de Carnaval, basta subtrair 47 dias do Domingo de Páscoa.}
// Pegar somente o dd/mm
dataAux := FormatDateTime('dd/mm', data);
// Confraternização Universal
if (dataAux = '01/01') then
result := TratarFinalSemana(IncDay(data, 1))
// Tiradentes
else if (dataAux = '21/04') then
Result := TratarFinalSemana(IncDay(data, 1))
// Dia do Trabalho
else if (dataAux = '01/05') then
Result := TratarFinalSemana(IncDay(data, 1))
// Independência do Brasil
else if (dataAux = '07/09') then
Result := TratarFinalSemana(IncDay(data, 1))
// Nossa Senhora Aparecida
else if (dataAux = '12/10') then
Result := TratarFinalSemana(IncDay(data, 1))
// Finados
else if (dataAux = '02/11') then
Result := TratarFinalSemana(IncDay(data, 1))
// Proclamação da República
else if (dataAux = '15/11') then
Result := TratarFinalSemana(IncDay(data, 1))
// Natal
else if (dataAux = '25/12') then
Result := TratarFinalSemana(IncDay(data, 1))
// Sexta - Feira Santa = acrescenta + 3 para cair na segunda - feira
else if FormatDateTime('dd/mm/yyyy', data) = (SextaFeiraSanta(data)) then
Result := IncDay(data, 3)
// Corpus Christi
// Para calcular a Quinta-feira de Corpus Christi, soma-se 60 dias ao Domingo de Páscoa, 62 pois considera-se a sexta feira.
else if FormatDateTime('dd/mm/yyyy', data) = CorpusChristi(data) then
Result := TratarFinalSemana(IncDay(data, 1))
// Terça- Feria de carnaval
// Para calcular a Terça-feira de Carnaval, basta subtrair 47 dias do Domingo de Páscoa, 45 pois considera a sexta.
else if FormatDateTime('dd/mm/yyyy', data) = Carnaval(data) then
Result := TratarFinalSemana(IncDay(data, 1))
// Nenhuma -> somente verificar o final de semana
else
Result := TratarFinalSemana(data)
end;
quinta-feira, 1 de maio de 2008
segunda-feira, 14 de abril de 2008
Inserindo um arquivo no banco de dados (MYSQL)
Estava desenvolvendo uma aplicação, onde era necessário incluir um arquivo no bd.
Este arquivo era de extensão (.rtm - relatório do reporter builder). Segue Abaixo como fazer, forma simplificado, claro que retirei alguns dados:
procedure TfrmIncluirRelatorio.IncluirRelatorio(codigoPasta: integer);
var
qryRelatorio: TSDQuery;
templateRel: TMemoryStream;
begin
// Incluir o relatório
try
// criando um stream
templateRel := TMemoryStream.Create;
// lendo um arquivo..
templateRel.LoadFromFile(edtRelatorio.FileName);
qryRelatorio.SQL.Add('INSERT INTO brelitem(');
qryRelatorio.SQL.Add(' BRI_TEMPLATE');
qryRelatorio.SQL.Add(')');
qryRelatorio.SQL.Add('VALUES(');
qryRelatorio.ParamByName('BRI_TEMPLATE').LoadFromStream(templateRel, ftTypedBinary);
qryRelatorio.ExecSQL;
finally
TFuncoesClass.DestroiQuery(qryRelatorio);
FreeAndNil(templateRel);
end;
end;
Este arquivo era de extensão (.rtm - relatório do reporter builder). Segue Abaixo como fazer, forma simplificado, claro que retirei alguns dados:
procedure TfrmIncluirRelatorio.IncluirRelatorio(codigoPasta: integer);
var
qryRelatorio: TSDQuery;
templateRel: TMemoryStream;
begin
// Incluir o relatório
try
// criando um stream
templateRel := TMemoryStream.Create;
// lendo um arquivo..
templateRel.LoadFromFile(edtRelatorio.FileName);
qryRelatorio.SQL.Add('INSERT INTO brelitem(');
qryRelatorio.SQL.Add(' BRI_TEMPLATE');
qryRelatorio.SQL.Add(')');
qryRelatorio.SQL.Add('VALUES(');
qryRelatorio.ParamByName('BRI_TEMPLATE').LoadFromStream(templateRel, ftTypedBinary);
qryRelatorio.ExecSQL;
finally
TFuncoesClass.DestroiQuery(qryRelatorio);
FreeAndNil(templateRel);
end;
end;
sexta-feira, 28 de março de 2008
Níveis na empresa, qual vc está?
Nas grandes empresas ou qualquer empresa que tenha um grande número de pessoal de tecnologia rola o que eles chamam de carreira em Y. Essa parada foi criada para que os profissionais que não quiserem passar para a área administrativa possam continuar subindo na empresa na área técnica e ganhando melhores salários. Porém, todo mundo reclama que é dificílimo ser promovido. Então alguém criou o guia de como ser promovido na carreira em Y. O indivíduo começa como Analista 1 e pode chegar a ser Analista 8.
Analistas 1
Descrição: os Analistas 1 são comummente conhecidos como Analistas baby, ou seja, um pouco mais que estagiários. É a condição necessária para vocês virarem Analistas 2, 3, 4, 5, 6, 7 e 8.
Analistas 2 e 3
Descrição: faça o seu dever, cumpra seus prazos, fique algumas vezes depois do horário, faça cursos de aperfeiçoamento, seja sociável e trabalhe em equipe. É necessário destruir plantações de pepinos (pepino = problema). Obrigatório: noções de inglês técnico.Exemplo: Humanos normais.
Analista 4
Descrição: idem ao anterior + matar um leão por dia (leão = um grande problema), com uma carga horária de 12 horas diárias. Ser responsável por 30% da administração de uma rede pequena de 700 usuários. Obrigatório: inglês, espanhol e Visual Basic obrigatórios + 1 linguagem desejável.Exemplo: Fodões.
Analista 5
Descrição: idem ao anterior + um dragão por semana (dragão = um problema enorme), com uma carga horária diária de 16 horas sem feriados. Ser responsável por 40% da administração de uma rede do tipo 1.000 usuários. Obrigatório: inglês, francês, japonês, espanhol, VB e C++. Exemplo: Mister M, David Coperfield, Padre Quevedo.
Analista 6
Descrição: idem aos anteriores, só que, mata-se 1 leão por hora, um dragão por dia, um alien por semana (alien = um problema do outro mundo) e mais uma área equivalente a meio globo terrestre em plantações de pepino. Carga horária diária de 20 horas. Ser responsável por 75% da administração de uma rede de 2.500 usuários e 30% de todos os projetos internos de tecnologia. Obrigatório: inglês, francês, alemão, japonês, espanhol, aramaico, latim, mandarim, vietnamita, VB, C++, ASP, DHTML e Cobol.Exemplo: criaturas mitológicas, gnomos, ninjas com o poder dos 9 cortes. Obs: assim como os ninjas, somente um Analista 6 pode matar um Analista 6.
Analista 7
Descrição: idem aos anteriores, só que, os leões e dragões fogem de você. Você terá que caça-los em outras dimensões e planetas. Uma área equivalente a uma estrela classe 5 (Sol) em plantações de pepino e três aliens e um predador por dia (predador = um problema impossível de ser resolvido, exemplo, fazer um corpo com massa m viajar com velocidade acima da velocidade da luz). Carga horária diária de 25 horas. Ser responsável por 100% da administração de uma rede de 6.000 usuários e 60% de todos os projetos internos de tecnologia. Obrigatório: inglês, francês, alemão, japonês, italiano, espanhol, aramaico, latim, mandarim, vietnamita, BORG, Klingon, Pascal, Fortran, C#, ASP, JAVA, XML, EasyTrieve, IMS/DC, Telon e todas as 13500 línguas e dialetos que o C3PO fala no filme Star Wars.Exemplo: Mago Merlin, Jedis como Luke Skywalker e Obi-Wan Kenobi, Mestre Yoda (daí o nome de carreira em Y), Darth Maul, Spectroman. Não desanime, conseguir você irá, um analista 7 você será. Grande poder tem o lado negro ADMINISTRATIVO da FORÇA. Você também terá que ser um Highlander, pois só com uma vida eterna você terá tempo para atingir este cargo, mas não se esqueça que só pode haver um e não deixe que nenhum outro analista 7, corte sua cabeça.
Analista 8
Descrição: é o cargo máximo no UNIVERSO e você será considerado como o mestre dos elementos. Você terá o poder sobre a vida e a morte dos seres, logo você não precisa mais matá-los, você apenas deseja que os problemas se resolvam ou cria novas leis físicas no universo para que isso aconteça. E você irá perdoar a todos. Você será onisciente, onipresente e onipotente. Carga horária diária indefinida, para você o tempo e o espaço já não existem. Ser responsável por 100% dos projetos e 100% da área de tecnologia de uma empresa de 30.000 usuários, em 7 dias.Exemplo: Deus. Ou seja, desista.
fonte: http://www.desaforo.com/2008/03/em-que-nvel-voc-est.html
Analistas 1
Descrição: os Analistas 1 são comummente conhecidos como Analistas baby, ou seja, um pouco mais que estagiários. É a condição necessária para vocês virarem Analistas 2, 3, 4, 5, 6, 7 e 8.
Analistas 2 e 3
Descrição: faça o seu dever, cumpra seus prazos, fique algumas vezes depois do horário, faça cursos de aperfeiçoamento, seja sociável e trabalhe em equipe. É necessário destruir plantações de pepinos (pepino = problema). Obrigatório: noções de inglês técnico.Exemplo: Humanos normais.
Analista 4
Descrição: idem ao anterior + matar um leão por dia (leão = um grande problema), com uma carga horária de 12 horas diárias. Ser responsável por 30% da administração de uma rede pequena de 700 usuários. Obrigatório: inglês, espanhol e Visual Basic obrigatórios + 1 linguagem desejável.Exemplo: Fodões.
Analista 5
Descrição: idem ao anterior + um dragão por semana (dragão = um problema enorme), com uma carga horária diária de 16 horas sem feriados. Ser responsável por 40% da administração de uma rede do tipo 1.000 usuários. Obrigatório: inglês, francês, japonês, espanhol, VB e C++. Exemplo: Mister M, David Coperfield, Padre Quevedo.
Analista 6
Descrição: idem aos anteriores, só que, mata-se 1 leão por hora, um dragão por dia, um alien por semana (alien = um problema do outro mundo) e mais uma área equivalente a meio globo terrestre em plantações de pepino. Carga horária diária de 20 horas. Ser responsável por 75% da administração de uma rede de 2.500 usuários e 30% de todos os projetos internos de tecnologia. Obrigatório: inglês, francês, alemão, japonês, espanhol, aramaico, latim, mandarim, vietnamita, VB, C++, ASP, DHTML e Cobol.Exemplo: criaturas mitológicas, gnomos, ninjas com o poder dos 9 cortes. Obs: assim como os ninjas, somente um Analista 6 pode matar um Analista 6.
Analista 7
Descrição: idem aos anteriores, só que, os leões e dragões fogem de você. Você terá que caça-los em outras dimensões e planetas. Uma área equivalente a uma estrela classe 5 (Sol) em plantações de pepino e três aliens e um predador por dia (predador = um problema impossível de ser resolvido, exemplo, fazer um corpo com massa m viajar com velocidade acima da velocidade da luz). Carga horária diária de 25 horas. Ser responsável por 100% da administração de uma rede de 6.000 usuários e 60% de todos os projetos internos de tecnologia. Obrigatório: inglês, francês, alemão, japonês, italiano, espanhol, aramaico, latim, mandarim, vietnamita, BORG, Klingon, Pascal, Fortran, C#, ASP, JAVA, XML, EasyTrieve, IMS/DC, Telon e todas as 13500 línguas e dialetos que o C3PO fala no filme Star Wars.Exemplo: Mago Merlin, Jedis como Luke Skywalker e Obi-Wan Kenobi, Mestre Yoda (daí o nome de carreira em Y), Darth Maul, Spectroman. Não desanime, conseguir você irá, um analista 7 você será. Grande poder tem o lado negro ADMINISTRATIVO da FORÇA. Você também terá que ser um Highlander, pois só com uma vida eterna você terá tempo para atingir este cargo, mas não se esqueça que só pode haver um e não deixe que nenhum outro analista 7, corte sua cabeça.
Analista 8
Descrição: é o cargo máximo no UNIVERSO e você será considerado como o mestre dos elementos. Você terá o poder sobre a vida e a morte dos seres, logo você não precisa mais matá-los, você apenas deseja que os problemas se resolvam ou cria novas leis físicas no universo para que isso aconteça. E você irá perdoar a todos. Você será onisciente, onipresente e onipotente. Carga horária diária indefinida, para você o tempo e o espaço já não existem. Ser responsável por 100% dos projetos e 100% da área de tecnologia de uma empresa de 30.000 usuários, em 7 dias.Exemplo: Deus. Ou seja, desista.
fonte: http://www.desaforo.com/2008/03/em-que-nvel-voc-est.html
Assinar:
Comentários (Atom)