Anderson Silva

Tecnologia da informação pra quem gosta de TI

T-Sql – SQL Server – Trabalhando com Datas e Competência — 01/11/2013

T-Sql – SQL Server – Trabalhando com Datas e Competência

É sempre bom compartilhar pequenas funções ou comandos que ajudam no cotidiano do desenvolvedor, neste caso é uma série de comandos que podemos utilizar no SQL Server para manipulação de datas, onde precisamos calcular o primeiro e último dia mês.

...
DECLARE @mydate DATETIME

SELECT @mydate = GETDATE()
SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@mydate)),@mydate),102) ,
'Último dia do mês anterior'
UNION
SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@mydate)-1),@mydate),102) AS Date_Value,
'Primeiro dia do mês atual' AS Date_Type
UNION
SELECT CONVERT(VARCHAR(25),@mydate,102) AS Date_Value, 'Hoje' AS Date_Type
UNION
SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))),DATEADD(mm,1,@mydate)),102) ,
'Último dia do mês atual'
UNION
SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))-1),DATEADD(mm,1,@mydate)),102) ,
'Primeiro dia do próximo mês'
GO

Fonte: http://blog.sqlauthority.com/2007/05/13/sql-server-query-to-find-first-and-last-day-of-current-month/

Boa implementação a todos.

Delphi – Colocando o cursor em uma posição exata de um DBEdit ou Text —

Delphi – Colocando o cursor em uma posição exata de um DBEdit ou Text

É sempre bom compartilhar pequenas funções ou comandos que ajudam no cotidiano do desenvolvedor, neste caso é um comando no delphi que permite colocar o curso em uma posição exata de um componente de texto ( DBEdit e Text ).

...
Var
  vPosicao : Integer;
begin
  dbEdit1.selstart:= vPosicao;
  // dbEdit1.selstart:= Length(dbEdit1.text);
end;
...

O que destaquei em vermelho e negrito é a posição que deseja o curso, podendo ser inclusive um contagem no próprio campo.

Boa implementação a todos.

T-SQL – SQL Server – Adicionando quebra de linha em Raiserror — 28/10/2013

T-SQL – SQL Server – Adicionando quebra de linha em Raiserror

É sempre bom compartilhar pequenas funções ou comandos que ajudam no cotidiano do desenvolvedor.

Justificativa: Exibir mensagem ao usuário, informando uma situação do sistema, onde é melhor quebrar a linha devido o tamanho do texto ou melhor organização da informação.

Importante! Note no comando abaixo que declarei uma váriável @MSG, fiz isto pois a concatenação necessária sendo aplicado diretamente no RAISERROR não é aceita pelo SQL Server.

DECLARE @MSG VARCHAR(400)
SET @MSG = ‘Texto antes da quebra de linha.’+CHAR(13)+’Texto que ficará na linha inferior.’;
RAISERROR(@MSG,16,1);
O que destaquei em azul e negrito é exatamente o comando necessário para realizar a quebra de linha.

Boa implementação a todos.

Delphi – Paginador utilizando ClientDataSet — 26/10/2013

Delphi – Paginador utilizando ClientDataSet

É sempre bom compartilhar pequenas funções ou comandos que ajudam no cotidiano do desenvolvedor.

Situação: Criação de um paginador de forma super simples através do ClientDataSet.

Importante! Pesquisei esta implementação pela dificuldade encontrada ao manipular uma grande quantidade de registros, utilizando o mínimo de recursos de rede e pc.

Esta implementação vai trazer os dados sob demanda e evita trazer todos os dados para realizar qualquer outro tipo de manipulação dentro do Delphi.

No ClientDataSet que seja realizar a paginação, realize a configuração:
  - Na propriedade FetchOnDemand deixe em false
  - Na propriedade PacketRecords coloque o número de registros que deseja visualizar por vez.

Configure o evento AfterScroll, implementando o seguinte código:
  - If ClientDataSet.Eof Then 
    begin 
      ClientDataSet.GetNextPacket;
    end;

Nesta instrução, virá mais N quantidade de registros definido na propriedade PacketRecords.

 

Boa implementação a todos.

Sql server – Executando scripts de uma pasta —

Sql server – Executando scripts de uma pasta

É sempre bom compartilhar pequenas funções ou comandos que ajudam no cotidiano do desenvolvedor, neste caso é um comando que deve ser colocado dentro de um arquivo de lote BAT, que faz com que execute todos os scripts da pasta, evitando que seja necessário abrir os arquivos de forma unitária a pressionar F5.

Importante! Este comando irá utilizar a permissão integrada do windows com o SQL Server para aplicação do script e o arquivo BAT deverá estar dentro da pasta dos scripts.

for %%G in ( *.sql ) do sqlcmd /S servidor\instancia /d bancoDeDados -E -i"%%G"

O que destaquei em vermelho e negrito é o caminho o nome do servidor e instância que deseja aplicar os scripts.

O que destaquei em azul e negrito é o caminho o nome do banco de dados que deseja aplicar os scripts.

Fonte: Este comando foi compartilhado pelo nobre colega de trabalho Hugo Vinícius.

Boa implementação a todos.

Java – Configurando PATH no CMD – Linha de Comando —

Java – Configurando PATH no CMD – Linha de Comando

É sempre bom compartilhar pequenas funções ou comandos que ajudam no cotidiano do desenvolvedor, neste caso é um comando no windows que configura rapidamente o caminho para a biblioteca JDK do Java.

Importante! Este comando não exige permissão de ADMINISTRADOR na máquina e garante o PATH apenas para a tela CMD que o comando foi executado enquanto ela estiver aberta.

set path=%path%;C:\Program Files\Java\jdk1.5.0_09\bin

O que destaquei em vermelho e negrito é o caminho para a pasta BIN do JDK, atenção que este caminho pode estar diferente em sua máquina.

Fonte: Pesquisas na Internet.

Assunto relacionado: http://devjava.wordpress.com/2010/01/11/java_home-classpath-e-path-o-que-so-isso-para-que-servem-e-como-configura-los/

Boa implementação a todos.

T-SQL Função Split — 30/04/2013

T-SQL Função Split

Sempre gosto de agregar pequenas funções que ajudam no cotidiano do desenvolvedor, neste caso é um função para transformar uma lista de parâmetros em uma tabela.

CREATE FUNCTION dbo.Split
  (
                          @Texto VARCHAR(MAX),
                          @Caractere VARCHAR(MAX) = ';'
  ) RETURNS @Saida TABLE (Array VARCHAR(8000)) 

BEGIN

  DECLARE @Pt VARCHAR(8000)
  WHILE CHARINDEX(@Caractere, @Texto, 0) <> 0
    BEGIN
      SELECT @Pt    = RTRIM(LTRIM(SUBSTRING(@Texto, 1, CHARINDEX(@Caractere, @Texto, 0) -1))),
             @Texto = RTRIM(LTRIM(SUBSTRING(@Texto, CHARINDEX(@Caractere, @Texto, 0)+ LEN(@Caractere), LEN(@Texto))))
      IF LEN(@Pt) > 0
        BEGIN
          INSERT INTO @Saida 
          SELECT @Pt
        END
    END 

  IF LEN(@Texto) > 0
    BEGIN
      INSERT INTO @Saida 
      SELECT @Texto
    END

  RETURN

END

GO

Fonte: http://social.msdn.microsoft.com/Forums/pt-BR/520/thread/23ab484d-3751-4348-80a8-a723f65225ef/

Assunto relacionado: http://gustavomaiaaguiar.wordpress.com/2011/05/29/funes-escalares-resusabilidade-formatao-preguia-vs-desempenho/

Boa implementação a todos.

Procedure T-SQL com transação e tratamento de mensagem — 22/11/2011

Procedure T-SQL com transação e tratamento de mensagem

IF OBJECT_ID ( N’usp_ExampleProc’, N’P’ ) IS NOT NULL
DROP PROCEDURE usp_ExampleProc;
GO

— Create a stored procedure that will cause an
— object resolution error.
CREATE PROCEDURE usp_ExampleProc
BEGIN TRY
BEGIN TRAN
—Comandos SQL que precisam ser completados
COMMIT TRAN
END TRY

BEGIN CATCH
ROLLBACK TRAN

DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;

SELECT @ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();

RAISERROR (@ErrorMessage, — Message text.
@ErrorSeverity, — Severity.
@ErrorState — State.
);
END CATCH;

Referência:
http://msdn.microsoft.com/pt-br/library/ms175976.aspx
http://msdn.microsoft.com/pt-br/library/ms177497.aspx