domingo, 30 de maio de 2010

quarta-feira, 26 de maio de 2010

RM/RMChronus - Gera Batidas a Efetuar

Script que simula a geração dos horários do funcionários quem deverão ser efetuados de acordo com o Histórico de Horários e Índices.


CREATE TABLE ZBATIDASREALIZAR (
CODCOLIGADA SMALLINT,
CHAPA VARCHAR(16),
DATA DATETIME,
CODHORARIO VARCHAR(10),
INDICE INT,
BATIDA INT,
TIPO INT,
NATUREZA INT,
CONSTRAINT PKZBATIDASREALIZAR PRIMARY KEY (CODCOLIGADA, CHAPA, DATA, CODHORARIO, INDICE, BATIDA, TIPO, NATUREZA))
GO

CREATE PROCEDURE SP_GERABATIDASEFETUAR @CODCOLIGADA SMALLINT, @CHAPA VARCHAR(16)
AS
BEGIN
DECLARE --@CODCOLIGADA SMALLINT,
--@CHAPA VARCHAR(16),
@DTMUDANCA DATETIME,
@CODHORARIO VARCHAR(10),
@INDINICIOHOR INT,
@INDICEMAXIMO INT,
@DATABASEHOR DATETIME,
@DTMUDANCAANT DATETIME,
@CODHORARIOANT VARCHAR(10),
@INDINICIOHORANT INT,
@INDICEMAXIMOANT INT,
@DATABASEHORANT DATETIME,
@INICIOPERMES DATETIME,
@FIMPERMES DATETIME,
@DATATMP DATETIME,
@INDICETMP INT,
@DATATMP2 DATETIME

DECLARE CR_HISTHOR CURSOR FOR
SELECT CODCOLIGADA,
CHAPA,
DTMUDANCA,
CODHORARIO,
INDINICIOHOR,
(SELECT MAX(DISTINCT INDICE)
FROM ABATHOR
WHERE CODCOLIGADA = PH.CODCOLIGADA
AND CODHORARIO = PH.CODHORARIO) AS MAXINDICEHOR,
(SELECT DATABASEHOR
FROM AHORARIO
WHERE CODCOLIGADA = PH.CODCOLIGADA
AND CODIGO = PH.CODHORARIO) AS DATABASEHORARIO
FROM PFHSTHOR PH
WHERE CODCOLIGADA = @CODCOLIGADA
AND CHAPA = @CHAPA

OPEN CR_HISTHOR

FETCH NEXT FROM CR_HISTHOR INTO @CODCOLIGADA, @CHAPA, @DTMUDANCA, @CODHORARIO,
@INDINICIOHOR, @INDICEMAXIMO, @DATABASEHOR

SELECT @INICIOPERMES = INICIOPERMES,
@FIMPERMES = FIMPERMES
FROM APARAM
WHERE CODCOLIGADA = @CODCOLIGADA

DELETE FROM ZBATIDASREALIZAR
WHERE CODCOLIGADA = @CODCOLIGADA
AND CHAPA = @CHAPA

WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @DTMUDANCAANT = @DTMUDANCA,
@CODHORARIOANT = @CODHORARIO,
@INDINICIOHORANT = @INDINICIOHOR,
@INDICEMAXIMOANT = @INDICEMAXIMO,
@DATABASEHORANT = @DATABASEHOR

FETCH NEXT FROM CR_HISTHOR INTO @CODCOLIGADA, @CHAPA, @DTMUDANCA, @CODHORARIO,
@INDINICIOHOR, @INDICEMAXIMO, @DATABASEHOR


SET @DATATMP = @DATABASEHORANT
SET @INDICETMP = @INDINICIOHORANT

IF @CODCOLIGADA IS NOT NULL
BEGIN
WHILE @DATATMP(@DTMUDANCAANT)
AND @DATATMP NOT IN (SELECT DIAFERIADO
FROM GFERIADO
WHERE CODCALENDARIO IN (SELECT CODCALENDARIO
FROM PSECAO
WHERE CODCOLIGADA = @CODCOLIGADA
AND CODIGO = (SELECT CODSECAO
FROM PFUNC
WHERE CODCOLIGADA = @CODCOLIGADA
AND CHAPA = @CHAPA))))
BEGIN
INSERT INTO ZBATIDASREALIZAR (CODCOLIGADA, CHAPA, DATA, CODHORARIO, INDICE, BATIDA, TIPO, NATUREZA)
SELECT CODCOLIGADA, @CHAPA, @DATATMP, CODHORARIO, INDICE, BATIDA, TIPO, NATUREZA
FROM ABATHOR
WHERE CODCOLIGADA = @CODCOLIGADA
AND CODHORARIO = @CODHORARIOANT
AND INDICE = @INDICETMP
AND TIPO = 0
END

IF (@INDICETMP+1)>@INDICEMAXIMOANT
BEGIN
SET @INDICETMP = 1
END
ELSE
BEGIN
SET @INDICETMP = @INDICETMP+1
END
SET @DATATMP = @DATATMP+1
END
END
END

-- HISTÓRICO UNICO OU MÁXIMO HISTÓRICO
DECLARE CR_HISTHORULTIMO CURSOR FOR
SELECT CODCOLIGADA,
CHAPA,
DTMUDANCA,
CODHORARIO,
INDINICIOHOR,
(SELECT MAX(DISTINCT INDICE)
FROM ABATHOR
WHERE CODCOLIGADA = PH.CODCOLIGADA
AND CODHORARIO = PH.CODHORARIO) AS MAXINDICEHOR,
(SELECT DATABASEHOR
FROM AHORARIO
WHERE CODCOLIGADA = PH.CODCOLIGADA
AND CODIGO = PH.CODHORARIO) AS DATABASEHORARIO
FROM PFHSTHOR PH
WHERE CODCOLIGADA = @CODCOLIGADA
AND CHAPA = @CHAPA
AND DTMUDANCA = (SELECT MAX(DTMUDANCA)
FROM PFHSTHOR
WHERE CODCOLIGADA = @CODCOLIGADA
AND CHAPA = @CHAPA)
OPEN CR_HISTHORULTIMO

FETCH NEXT FROM CR_HISTHORULTIMO INTO @CODCOLIGADA, @CHAPA, @DTMUDANCA, @CODHORARIO,
@INDINICIOHOR, @INDICEMAXIMO, @DATABASEHOR

SET @DATATMP2 = @DATABASEHOR
SET @INDICETMP = @INDINICIOHOR

WHILE @@FETCH_STATUS = 0
BEGIN
WHILE @DATATMP2<=@FIMPERMES BEGIN IF (@DATATMP2>=(@DATATMP)
AND @DATATMP2 NOT IN (SELECT DIAFERIADO
FROM GFERIADO
WHERE CODCALENDARIO IN (SELECT CODCALENDARIO
FROM PSECAO
WHERE CODCOLIGADA = @CODCOLIGADA
AND CODIGO = (SELECT CODSECAO
FROM PFUNC
WHERE CODCOLIGADA = @CODCOLIGADA
AND CHAPA = @CHAPA))))
BEGIN
INSERT INTO ZBATIDASREALIZAR (CODCOLIGADA, CHAPA, DATA, CODHORARIO, INDICE, BATIDA, TIPO, NATUREZA)
SELECT CODCOLIGADA, @CHAPA, @DATATMP2, CODHORARIO, INDICE, BATIDA, TIPO, NATUREZA
FROM ABATHOR
WHERE CODCOLIGADA = @CODCOLIGADA
AND CODHORARIO = @CODHORARIO
AND INDICE = @INDICETMP
AND TIPO = 0
END

IF (@INDICETMP+1)>@INDICEMAXIMO
BEGIN
SET @INDICETMP = 1
END
ELSE
BEGIN
SET @INDICETMP = @INDICETMP+1
END
SET @DATATMP2 = @DATATMP2+1
END
FETCH NEXT FROM CR_HISTHORULTIMO INTO @CODCOLIGADA, @CHAPA, @DTMUDANCA, @CODHORARIO,
@INDINICIOHOR, @INDICEMAXIMO, @DATABASEHOR
END
CLOSE CR_HISTHORULTIMO
DEALLOCATE CR_HISTHORULTIMO
CLOSE CR_HISTHOR
DEALLOCATE CR_HISTHOR
END
GO

/*
SP_GERABATIDASEFETUAR 15,'003029'

SELECT *
FROM ZBATIDASREALIZAR
ORDER BY DATA, BATIDA
GO

SELECT *
FROM ABATHOR
WHERE CODHORARIO = '018'
GO
*/

Diversão - PacMan - Google

www.google.com\pacman

terça-feira, 18 de maio de 2010

Celular Android - Modem

Para configurar um celular Android como modem 3g:

1) Desktop/Laptop
- Baixe e instale o software PDANET apropriado ao seu sistema operacional do seguinte link:
http://www.junefabrics.com/android/download.php
- Instale o software no seu Desktop/Laptop
- Siga as instruções do software.

2) Celular Android
- Procure e Baixe em "Market", o software PDANet.
- Após a instalação, vá em "Configurações - Aplicativos - Desenvolvimento" e marque a opção "Depuração de USB".
- Volte ao PDANet e clique em "Enable USB Tether".
- No Dekstop/Laptop, clique com o botão direito localizado na bandeja do sistema, e
selecione a opção "Connect".

Assim, você estará conectado na internet, utilizando o celular Android como modem.

terça-feira, 11 de maio de 2010

Mandic - Twitter

MANDIC OFERECE ATENDIMENTO AO
CLIENTE ATRAVÉS DE PERFIS DO TWITTER

Para facilitar o atendimento a suas dúvidas e solicitações, a MANDIC agora oferece atendimento ao cliente através de quatro perfis do twitter: MANDIC diretoria, MANDIC vendas, MANDIC suporte e MANDIC reclame.

Dessa forma, você pode nos passar seus comentários e receber atendimento 24h pelo site de relacionamento. Siga agora o perfil de sua necessidade.

@mandicDiretoria
@mandicVendas
@mandicReclame
@mandicSuporte

terça-feira, 4 de maio de 2010

Diversão - FIFA.com

http://pt.fifa.com


Fifa.com

login: fabiofumio@mandic.com.br

segunda-feira, 3 de maio de 2010

Project - OpenProj

Programa freeware semelhante ao Microsoft Project.


http://sourceforge.net/projects/openproj/

domingo, 2 de maio de 2010

Diversão - Lalubema

http://www.lalubema.com/

Username: fabiofumio@mandic.com.br

RM/NFE - Nota Fiscal Eletrônica

Totvs NFe - Portas e Configurações do TopConnect e Totvs Sped

Configurações RMNucleus:







Configurações Top Connect:





Configurações Totvs Sped:









RM/Gerador - Quebra de Linhas em Arquivo Bancário

Para quebra de linha em relatórios no formato de "arquivo bancario" utilize o seguinte texto: #$D#$A

Exemplo: "linha1" "#$D#$A" "linha2"

Resultado:

linha1
linha2

SQL - Numerando as linhas do SELECT Dinamicamente

Numerando as linhas do SELECT Dinamicamente

Muitas vezes temos a necessidade de numerar dinamicamente as linhas resultantes de um SELECT statement. No SQL Server 2005 podemos fazer isso facilmente utilizando a função ROW_NUMBER(), já no SQL Server 2000 as soluções são normalmente baseadas em loops e tabelas temporárias. Veja a dica desta semana e saiba como fazer isso utilizando JOIN.

No SQL Server 2000, sempre que precisamos numerar os registros resultantes de um SELECT de forma dinâmica, as sugestôes normalmente são baseadas em loops e tabelas temporárias. Para a nossa felicidade, o SQL Server 2005 vem com uma função chamada ROW_NUMBER() a qual nos permite realizar esta operação de forma bem mais simples. No exemplo abaixo, podemos ver como esta função pode ser utilizada.

USE AdventureWorks
GO

SELECT ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS 'Row Number',
c.FirstName, c.LastName,a.PostalCode
FROM Sales.SalesPerson s
JOIN Person.Contact c on s.SalesPersonID = c.ContactID
JOIN Person.Address a ON a.AddressID = c.ContactID
WHERE TerritoryID IS NOT NULL AND SalesYTD <> 0

Row Number FirstName LastName PostalCode
---------- ----------- ----------- ----------
1 Shelley Dyck 98027
2 Gail Erickson 98055
3 Maciej Dusza 98027
4 Linda Ecoffey 98027
5 Mark Erickson 98055
6 Terry Eminhizer 98055
7 Michael Emanuel 98055
8 Jauna Elson 98055
9 Carol Elliott 98027
10 Janeth Esteves 98055
11 Martha Espinoza 98055
12 Carla Eldridge 98027
13 Twanna Evans 98055

A dica desta semana mostra como podemos obter este resultado no SQL Server 2000 sem precisar usar loops ou tabelas temporárias. A técnica é baseada em JOINS, o qual inclusive tende a ser bem mais performática que as soluções tradicionais.

No primeiro exemplo, utilizamos um INNER JOIN da tabela pubs..authors com ela mesma e contamos o número de vezes que o relacionamento "é maior igual que" é satisfeito, agrupando por lastname e firstname.

SELECT rank=count(*), a1.au_lname, a1.au_fname
FROM authors a1 INNER JOIN authors a2
ON a1.au_lname >= a2.au_lname
GROUP BY a1.au_lname, a1.au_fname
ORDER BY 1

rank au_lname au_fname
----------- ---------------- ---------
1 Bennet Abraham
2 Blotchet-Halls Reginald
3 Carson Cheryl
4 DeFrance Michel
5 del Castillo Innes
6 Dull Ann
7 Green Marjorie

(23 row(s) affected)

No segundo exemplo, utilizamos tabelas derivadas para obter as lojas com seus respectivos números de livros vendidos. O relacionamento é baseados no número de livros vendidos "é maior igual que".

SELECT rank=count(*), s1.stor_id, qty=sum(s1.qty)
FROM (SELECT stor_id, qty=sum(qty) FROM sales GROUP BY stor_id) s1,
(SELECT stor_id, qty=sum(qty) FROM sales GROUP BY stor_id) s2
WHERE s1.qty >= s2.qty
GROUP BY s1.stor_id
ORDER BY 1

rank stor_id qty
------- ------- ----
1 6380 8
2 7896 120
3 8042 240
4 7067 360
5 7066 625
6 7131 780

(6 row(s) affected)

Fonte: Site MCDBA Brasil

RM/SQL - Separa Nome e Sobrenome

Segue exemplo de sentença SQL para separar o Nome e o Sobrenome do Funcionário:

-- Nome
select substring(nome,1,patindex('% %',nome)) as primeiro_nome,
nome as nome_completo
from pfunc

-- Último nome (Sobrenome)
select reverse(substring(reverse(nome),1,patindex('% %',reverse(nome)))) as sobrenome,
nome as nome_completo
from pfunc

Video - Kiss

http://www.youtube.com/watch?v=Omvgd0r-Tng

Video Youtube
Kiss