Karuta’s ASP & M$ SQLserver

Dicas, códigos e outras coisinhas de meus estudos para não esquecer…

Internet Explorer 8 render IE7

Publicado por karuta em Outubro 5, 2009

Microsoft lançou oficialmente o Internet Explorer 8 e, embora ainda não tenha incorporado praticamente nenhuma das novas propriedades doCSS3, ele já interpreta todo o CSS 2.1 e passou noteste do ACID2, o que já é alguma coisa.

Algumas pessoas já reclamam que estão tendo problemas de renderização com o CSS no IE8. O Browser está mais próximo dos padrões e portanto, você provavelmente tem em mãos um código fora dos webstandards ou com muitos CSS Hacks.

Se você tem pressa, existe uma maneira de fazer oInternet Explorer 8 emular a página com o render exato do IE7. E isso pode ser feito apenas colocando uma META TAG no código HTML. Veja como:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

Obviamente você não deve se acostumar a esta solução. Corra atrás de desenvolver dentro dos padrões e comece testando seus sites em browsers com melhor renderização, como o ChromeSafari ou Firefox.;

Fonte: http://www.richardbarros.com.br/ (obrigado! me salvou…)

Enviado em html | Deixar um comentário »

Funções matemáticas do Oracle 10g, do SQL Server 2005, do DB2 9 e do PostgreSQL 8.0.0

Publicado por karuta em Setembro 17, 2009

Função Oracle 10g [a] [b] SQL Server 2005 [c] DB2 9.1 [d] PostgreSQL 8.0.0
valor absoluto abs(n) abs(n) abs(n) ou absval(n) abs(x)
arco cosseno acos(n) acos(f) acos(d) acos(x)
arco seno asin(n) asin(f) asin(d) asin(x)
arco tangente de n atan(n) atan(f) atan(d) atan(x)
arco tangente de x/y atan2(nm) atn2(ff) atan2(dd) atan2(xy)
raiz cúbica - - - cbrt(dp)
menor inteiro não menor que o argumento ceil(n) ceiling(n) ceil(n) ou ceiling(n) ceil(dp ou numeric)
cosseno cos(n) cos(f) cos(d) cos(x)
cosseno hiperbólico cosh(n) - cosh(d) -
cotangente - cot(f) cot(d) cot(x)
radianos para graus - degrees(n) degrees(d) degrees(dp)
exponenciação exp(n) exp(f) exp(d) exp(dp ou numeric)
maior inteiro não maior que o argumento floor(n) floor(n) floor(n) floor(dp ou numeric)
logaritmo natural ln(n) log(f) ln(d) ou log(d) ln(dp ou numeric)
logaritmo, qualquer base log(mn) - - log(b numericx numeric)
logaritmo, base 10 log(10, n) log10(f) log10(d) log(dp ou numeric)
módulo (resto) mod(mn) dividendo % divisor mod(nn) mod(yx)
constante π - pi() radians(180) pi()
potenciação power(mn) power(fy) power(nn) pow(a dpb dp) e pow(a numericb numeric)
graus para radianos - radians(n) radians(d) radians(dp)
número randômico - rand() rand() random()
arredondar para o inteiro mais próximo round(n) round(n,0) round(n,0) round(dp ou numeric)
arredondar para s casas decimais round(n [,s integer]) round(ns integer [,função]) round(ns integer) round(v numerics integer)
define a semente para as próximas chamadas a random() - rand(semente) rand(semente) setseed(dp)
sinal do argumento (-1, 0, +1) sign(n) sign(n) sign(n) sign(dp ou numeric)
seno sin(n) sin(f) sin(d) sin(x)
seno hiperbólico sinh(n) - sinh(d) -
raiz quadrada sqrt(n) sqrt(f) sqrt(d) sqrt(dp ou numeric)
tangente tan(n) tan(f) tan(d) tan(x)
tangente hiperbólica tanh(n) - tanh(d) -
trunca em direção ao zero trunc(n) - trunc(n, 0) trunc(dp ou numeric)
trunca com s casas decimais trunc(n [,s integer]) - trunc(n ,s integer) trunc(v numerics integer)
Notas:
a. Oracle 10g — As funções numéricas recebem entradas numéricas e retornam valores numéricos. A maior parte destas funções retornam valores com precisão de 38 dígitos decimais. As funções transcendentais coscoshexplnlogsinsinhsqrttantanh têm precisão de 36 dígitos decimais. As funções transcendentais acosasinatanatan2 têm precisão de 30 dígitos decimais.Oracle® Database SQL Reference 10g Release 1 (10.1) Part Number B10759-01 (N. do T.)
b. Função transcendental — Em matemática, uma função que não pode ser expressa como uma combinação finita de operações algébricas de adição, subtração, multiplicação, divisão, elevar a uma potência ou extrair uma raiz. Os exemplos incluem as funções log x, sin x, cos x, ex e qualquer função contendo uma destas. Estas funções são expressas em termos algébricos apenas como séries infinitas. Em geral, o termo transcendental significa não-algébrico. transcendental function — Britannica Concise Encyclopedia
c. SQL Server 2005 — As funções absceilingdegreesfloorpowerradians retornam um valor que possui o mesmo tipo de dado da expressão numérica da entrada. As funções acosasinatan,coscotexploglog10sinsqrtsquaretan recebem como argumento uma expressão de ponto flutuante, e retornam um valor de ponto flutuante. Todas as funções matemáticas, exceto rand, são funções determinísticas; retornam o mesmo resultado toda vez que são chamadas com o mesmo conjunto de valores de entrada. rand só é determinística quando é especificado o parâmetro semente. SQL Server 2005 Books Online — Mathematical Functions (Transact-SQL)
d. DB2 9.1 — DB2 Version 9 for Linux, UNIX, and Windows — Supported functions and administrative SQL routines and views

Enviado em sql server | Deixar um comentário »

Comparando DATAS em ASP – comando: “cdate”

Publicado por karuta em Setembro 3, 2009

<%@ Language="VBScript" %>

<form name="form" method="post" action="?data=ok">
Data da Ocorrência: <input type="text" name="dataoco" value="" /><br />
Data Informada: <input type="text" name="datainformada" value="<%=Date%>">
<input type=submit value="botao" >
</form>

<%
if (request.QueryString("data") = "ok") then

        dataoco = Day(request.Form("dataoco")) & "/" & Month(request.Form("dataoco")) & "/" & Year(request.Form("dataoco"))
        datainformada = Day(request.Form("datainformada")) & "/" & Month(request.Form("datainformada")) & "/" & Year(request.Form("datainformada"))

        if cdate(dataoco) <= cdate(datainformada) then
                response.write "data menor, está OK"
        Else
                response.Write "data maior, está ERRADO"
        end if

end if
%>

Enviado em asp | Deixar um comentário »

Uso correto do atributo ALT em imagens

Publicado por karuta em Agosto 27, 2009

Ao assistir uma palestra sobre SEO e SEM da Martha Gabriel presenciei um dos participantes do evento perguntar sobre o “problema do atributo alt no Firefox”. Essa sempre foi uma afirmação dos meus alunos no curso de Web Standards na BR Multimídia. Sendo assim resolvi escrever esse artigo para esclarecer aos iniciantes de Web Standards, Acessibilidade e SEO o que realmente acontece e o uso correto do atributo ALT para imagens no HTML.

Muitas pessoas usam o atributo alt em imagens esperando o hint que aparece quando o cursor do mouse é posicionado sobre a imagem, mas no Firefox isso não acontece. Alguns que não conhecem as reais funcionalidades desse atributo falam que é um erro do Firefox, Opera, Safari etc.

Comportamento do atributo ALT no IE e browsers modernosO hint que aparece quando o cursor do mouse está sobre uma imagem não é papel do ALT e sim do atributo TITLE. Nos browsers que seguem mais a risca as especificações de Web Standards o hint só poderá ser visto com o uso do atributo TITLE.

Você deve estar pensando agora que isso é um erro do IE. Alguns podem ter esse ponto de vista, mas você vai perceber que quando insere um atributo TITLE em uma imagem o IE ele substitui o ALT no hint. Já que isso acontece podemos entender que o IE simplesmente usa o ALT em mais uma funcionalidade caso o usuário não esteja usando o atributo TITLE, mesmo assim seria melhor que ele seguisse a especificação para não gerar confusões.

Usando corretamente o atributo ALTVamos esclarecer então para que serve o atributo ALT. Como a própria abreviação sugere o atributo ALT se refere a um texto alternativo e deve ser usado nos seguintes contextos:

Texto alternativo para imagens. Quando um usuário desabilita o carregamento de imagens em seu browser ou dispositivo o texto do alt é exibido no lugar da imagem. No caso de algum erro acontecer no carregamento da imagem o texto alternativo também será exibido. Caso a imagem possua algum link a sua funcionalidade também poderá ser referenciada no alt, aumentando assim a usabilidade caso a imagem não seja carregada.
Texto alternativo para acessibilidade. Leitores de tela e leitores de código usados por portadores de necessidades especiais irão ler o atributo alt para descrever a imagem.
Só para salientar o atributo ALT e de uso obrigatório para imagens.

Atributo ALT e SEOO atributo ALT também pode ser usado para otimização de conteúdo on-page, mas com muito bom senso.

Uma das primeiras regras ao se otimizar o uso de palavras chave é se lembrar que o conteúdo em primeiro lugar deve ser criado para os usuários e não para sistema de busca. Em se tratando de acessibilidade e o uso do atributo ALT para imagens essa regra também deve ser seguida. Apesar do texto do ALT não ser lido normalmente na página, ele vai ser usado por leitores de tela e de código. Sendo assim não se deve inserir somente palavras chave no texto do ALT e sim escrever uma descrição condizente com o conteúdo da imagem em equilíbrio com a inserção de palavras chave.

Erros quanto ao uso e não uso do atributo ALTExistem erros muito comuns quanto a aplicação do Atributo ALT, vou numerar alguns deles abaixo:

O não uso do Atributo ALT que é obrigatório para imagens de conteúdo.
Atributo ALT vazio somente para passar em validações de código. Todo atributo ALT deve ter uma pequena descrição da imagem.
Atributo ALT vazio gerado por editores de código. Diversos editores de código e editores visuais inserem automaticamente o atributo ALT vazio. Por isso afirmo que o código deve ser verificado antes de sua publicação, pois nenhum editor HTML é perfeito.
Atributo ALT igual para todas as imagens de conteúdo de uma página.
Atributo ALT somente para gerar hint do mouse. Como explicado acima o hint é uma funcionalidade do atributo Title. Caso tenha necessidade do hint use o atributo TITLE em conjunto com o ALT mas usando textos diferentes, pois os leitores de tela e código não entendem o TITLE. E lembrando mais uma vez o ALT é obrigatório.

Texto escrito por: Lauro Santos (http://www.laurosantos.com.br/blog/atributo-alt-ie-firefox/)

Enviado em html | Deixar um comentário »

Gerar todas as chaves estrangeiras (primary keys) para o banco de dados

Publicado por karuta em Julho 24, 2009

– Get all existing primary keys
DECLARE cPK CURSOR FOR

SELECT DISTINCT C.TABLE_NAME, C.CONSTRAINT_NAME , F.NAME
FROM SYS.INDEXES I
INNER JOIN SYS.FILEGROUPS F
ON I.DATA_SPACE_ID = F.DATA_SPACE_ID
INNER JOIN SYS.ALL_OBJECTS O
ON I.[OBJECT_ID] = O.[OBJECT_ID]
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS C
ON O.NAME = C.TABLE_NAME
WHERE C.CONSTRAINT_TYPE = ‘PRIMARY KEY’
ORDER BY C.TABLE_NAME

DECLARE @PkTable SYSNAME
DECLARE @PkName SYSNAME
DECLARE @FileName SYSNAME

–Loop through all the primary keys
OPEN cPK
FETCH NEXT FROM cPK INTO @PkTable, @PkName , @FileName
WHILE (@@FETCH_STATUS = 0)
BEGIN
DECLARE @PKSQL NVARCHAR(4000) SET @PKSQL = ”
SET @PKSQL = ‘ALTER TABLE ‘ + @PkTable + ‘ ADD CONSTRAINT ‘ + @PkName + ‘ PRIMARY KEY CLUSTERED (‘

–Get all columns for the current primary key
DECLARE cPKColumn CURSOR FOR
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = @PkTable AND CONSTRAINT_NAME = @PkName
ORDER BY ORDINAL_POSITION
OPEN cPKColumn

DECLARE @PkColumn SYSNAME
DECLARE @PkFirstColumn BIT SET @PkFirstColumn = 1
– Loop through all columns and append the sql statement
FETCH NEXT FROM cPKColumn INTO @PkColumn
WHILE (@@FETCH_STATUS = 0)
BEGIN
IF (@PkFirstColumn = 1)
SET @PkFirstColumn = 0
ELSE
SET @PKSQL = @PKSQL + ‘, ‘

SET @PKSQL = @PKSQL + @PkColumn

FETCH NEXT FROM cPKColumn INTO @PkColumn
END
CLOSE cPKColumn
DEALLOCATE cPKColumn

SET @PKSQL = @PKSQL + ‘)’ + ‘ ON ‘+@FileName
– Print the primary key statement
PRINT @PKSQL

FETCH NEXT FROM cPK INTO @PkTable, @PkName, @FileName
END
CLOSE cPK
DEALLOCATE cPK

Enviado em store procedure | Deixar um comentário »

Linhas FINAS nas tabelas

Publicado por karuta em Julho 23, 2009

Basta adicionar na sua tabela o comando CSS: style=”border-collapse:collapse;”

exemplo:
table border=”1″ style=”border-collapse:collapse;” cellpadding=”2″

Enviado em html | Deixar um comentário »

sp_MSforeachdb e sp_MSforeachtable

Publicado por karuta em Maio 26, 2009

Sempre que precisamos executar alguma instrução em todos os databases ou em todas as tabelas de um database, logo pensamos em usar cursor. No entanto, existe duas stored procedures não documentadas que podem resolver este problema de forma bastante simples. Este artigo discute como usar as procedures sp_MSforeachdb e sp_MSforeachtable.

Para ler o artigo completo e saber como utilizar estas procedures, visite o link http://www.dbazine.com/sql/sql-articles/larsen5″

Enviado em store procedure | Deixar um comentário »

Procurando uma palavra nas stored procedures do database

Publicado por karuta em Maio 26, 2009

Em determinadas situações precisamos procurar uma palavra nas stored procedures de um determinado database. Abaixo segue um script em Transact-SQL que retorna o nome da(s) stored procedure(s). Atente para o fato de trocar DtgSchemaOBJECT pela palavra desejada:

declare @searchString varchar(100)

Set @searchString = ‘%’ + ‘DtgSchemaOBJECT’ + ‘%’

SELECT Distinct SO.Name
FROM sysobjects SO (NOLOCK)
INNER JOIN syscomments SC (NOLOCK) on SO.Id = SC.ID
AND SO.Type = ‘P’
AND SC.Text LIKE @searchString
ORDER BY SO.Name

Texto escrito por Alexandre Lopes para meus estudos de SQL SERVER

Enviado em store procedure | Deixar um comentário »

desabilitar CONSTRAINT tabelas

Publicado por karuta em Maio 8, 2009

SELECT ‘ALTER TABLE ‘ + TABLE_NAME + ‘ NOCHECK CONSTRAINT ALL’ FROM INFORMATION_SCHEMA.TABLES

SELECT ‘ALTER TABLE ‘ + TABLE_NAME + ‘ CHECK CONSTRAINT ALL’ FROM INFORMATION_SCHEMA.TABLES

Em tempo: podemo usar também essa SP:
CREATE PROCEDURE DeleteAllData
AS
EXEC sp_MSForEachTable ‘ALTER TABLE ? NOCHECK CONSTRAINT ALL’
EXEC sp_MSForEachTable ‘ALTER TABLE ? DISABLE TRIGGER ALL’
EXEC sp_MSForEachTable ‘DELETE FROM ?’
EXEC sp_MSForEachTable ‘ALTER TABLE ? CHECK CONSTRAINT ALL’
EXEC sp_MSForEachTable ‘ALTER TABLE ? ENABLE TRIGGER ALL’
EXEC sp_MSFOREACHTABLE ‘SELECT * FROM ?’
GO

Enviado em sql server | Deixar um comentário »

Alterar o collate do SQL Server

Publicado por karuta em Maio 8, 2009

ALTER DATABASE [base] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [base] COLLATE Latin1_General_CI_AS
ALTER DATABASE [base] SET MULTI_USER

Enviado em sql server | Deixar um comentário »