



Existem relatórios que precisam buscar as informações consolidadas de um determinado mês.
Por exemplo:
O relatório de vendas do mês de abril retorna as vendas, separadas por dias do mês da março. E assim ocorre para todos os meses do ano.
Uma query que retorna os dados do mês anterior poderia ser:
SELECT CONVERT(VARCHAR(7), DATA, 120) ano_mes, DATA, V.*
FROM VENDAS V WITH(NOLOCK)
WHERE CONVERT(VARCHAR(7), DATA, 120) = CONVERT(VARCHAR(7), dateadd(m, -1,getdate()),120)
O campo de retorno “ano_mes” retorna algo como “2010-03”, ou seja, a data sem o dia. Não sei se este tipo de busca é performático, mas se o relatório é gerado a noite e armazenado em um banco de dados não vejo problemas nesta abordagem.




1. Mude para verdadeiro as propriedades AllowDrop e CanUserDeleteRows;
2. Adicione a função responsável pela exclusão dos registros ao evento PreviewKeyDown. O resultado deve ficar como abaixo:
<Grid>
<my:DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" Name="MeuGrid" HorizontalContentAlignment="Center" AllowDrop="True" CanUserDeleteRows="True" PreviewKeyDown="grid_PreviewKeyDown">
…
</Grid>
3. Altere a função responsável pela exclusão conforme abaixo:
private void grid_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (Key.Delete == e.Key)
{
using (linq.Container ctx = new linq.Container ())
{
foreach (var row in grid.SelectedItems)
{
linq.Entidade entidade = row as linq.Entidade;
linq.Entidade originalEntidade =
ctx.Entidade.First(c => c.EntidadeId == entidade.EntidadeId);
ctx.DeleteObject(originalEntidade);
}
ctx.SaveChanges();
ReloadGrid(ctx);
}
}
}




Estou trabalhando com uma estação de trabalho rodando o Windows 7. Quando migrei um de meus projetos para o novo computador e tentei executá-lo me deparei com um novo erro:
The specified named connection is either not found in the configuration, not intended to be used with the EntityClient Provider, not valid.
No meu caso o erro ainda aparece em português, o que piora um pouco mais a procura por soluções na web:
A conexão nomeada especificada não foi encontrada na configuração, não se destina à utilização com o provedor EntityClient ou não é válida
Todos os sites em que procurei diziam que o caminho para o arquivo .sdf estava errado. Mas isto era impossível porque o projeto estava rodando perfeitamente no Windows Vista. Então resolvi mudar a abordagem do problema, se a configuração estava correta então a versão de algum dos softwares instalados teria de estar errada. Dito e feito. Faltava um Service Pack na minha estação, mais precisamente o Microsoft SQL Server Compact 3.5 Service Pack 1. Foi só instalá-lo e o erro parou de ocorrer.
Referências:




Aquilo que funciona no IE8, Firefox(FF) para variar não funciona no IE7 ou anterior. Como para criar sites para ampla audiência precisamos alcançar públicos bem diversos somo obrigados a manter nossos sites o mais compatíveis possível.
O método setAttribute funciona muito bem na maior parte do tempo, mas no IE7 ou anterior este atributo não funciona para alterar a classe de um elemento. Para tanto é necessário alterar o atributo className, isto pode ser feito de duas formas como descrito abaixo:
function CreateLink() {
var divMenu = document.getElementById("divLateral");
var menu = document.createElement("a");
if (navigator.appName == "Microsoft Internet Explorer") {
menu.className = "menu"; //opção 1
menu.setAttribute("className", "menu"); //opção 2
} else {
menu.setAttribute("class", "menu");
}
menu.setAttribute("href", "NovaPagina.aspx);
menu.innerHTML = "texto do link";
divMenu.appendChild(menu);
}




Sabiam que é possivel utilizar bitwise no SQL Server?
Veja o exemplo abaixo:
DECLARE @T AS INT
SELECT @T = 38
1 - SELECT CASE WHEN (@T & 2) = 2 THEN ‘2 - TRUE’ ELSE ‘2 - FALSE’ END
2 - SELECT CASE WHEN (@T & 4) = 4 THEN ‘4 - TRUE’ ELSE ‘4 - FALSE’ END
3 - SELECT CASE WHEN (@T & 32) = 32 THEN ‘32 - TRUE’ ELSE ‘32 - FALSE’END
Sabe o que é bitwise? Bitwise é uma forma bem econômica de, por exemplo, utilizar um único campo no banco de dados para salvar múltiplos valores. As operações são baseadas nos valores binários dos números acima veja a relação abaixo:
00000001 = 1
00000010 = 2
00000100 = 4
00001000 = 8
00010000 = 16
Logo a operação SQL com @T = 38 irá retornar true para todas as pesquisas porque 38 = 32 + 4 + 2, se ao invés de 38 @T fosse igual a 34, ele retornaria verdadeiro apenas para a primeira e terceira pesquisa.
Para usar bitwise no C# basta, por exemplo, decorar um enum com o atributo [Flags]:
[Flags]
Private enum OpcoesEnvio
{
Nenhuma = 0, //(0000)
Mail=1, //(0001)
Tel = 2, //(0010)
Fax = 4, (0100)
}
Quer saber mais? Tem bastantes informações nos links abaixo:
http://en.wikipedia.org/wiki/Bitwise_operation
http://www.mssqltips.com/tip.asp?tip=1218
http://snipplr.com/view/2402/using-a-flag-enumeration-with-bitwise-operations/

